Section courante

A propos

Section administrative du site

Après avoir effectué des recherches dans de nombreux livres comme Scientific Pascal, Dictionnaire mathématique,..., je n'ai jamais trouvé aucun livre fournissant une réponse correct du calcul de l'exponentiel (soit l'inverse de Ln ou la méthode Math.exp en C# ou Math.exp) en VB .NET, outre le projet GNU (HaypoCALC). Je me suis donc basé sur sa formule pour arriver au résultat contenu dans cette page. Voici un code source ASP.NET effectuant un calcul correct de cette formule en se basant sur les savants calculs de ce projet :

ASP.NET (VB.NET) ASP.NET (C# (C Sharp))
  1. <%@ Page Language="VB" %> 
  2. <script runat="server"> 
  3.     Function Exp(ByVal x As Double) As Double
  4.         Dim inverse As Boolean = False
  5.         Dim n As Double = 0, dl As Double = 1
  6.         Dim i As Integer = 1
  7.         If x < 0 Then
  8.             inverse = True
  9.             x = -x
  10.         End If
  11.         While x >= 2
  12.             x /= 2
  13.             n += 1
  14.         End While
  15.         x /= 16
  16.         n += 4
  17.         Dim q As Double = x
  18.         While q > 0.000000000000001
  19.             dl += q
  20.             i += 1
  21.             q = q * x / i
  22.         End While
  23.         For i = 1 To n
  24.             dl = dl * dl
  25.         Next
  26.         If (inverse) Then dl = 1 / dl
  27.         Return dl
  28.     End Function 
  29. </script> 
  30. <%
  31. Dim I As Double
  32. For I = 0 To 2.0 Step 0.1
  33.     Response.Write("Exp(" & I & ")=" & Exp(I) & " " & Math.Exp(I) & "<br />")
  34. Next 
  35. %>
  1. <%@ Page Language="C#" %> 
  2. <script runat="server"> 
  3.     static double Exp(double x)
  4.     {
  5.         bool inverse = false;
  6.         double n = 0, dl = 1;
  7.         int i = 1;
  8.         if (x < 0)
  9.         {
  10.             inverse = true;
  11.             x = -x;
  12.         }
  13.         while (x >= 2)
  14.         {
  15.             x /= 2;
  16.             n++;
  17.         }
  18.         x /= 16;
  19.         n += 4;
  20.         double q = x;
  21.         while (q > 1.0E-15)
  22.         {
  23.             dl += q;
  24.             i++;
  25.             q = q * x / i;
  26.         }
  27.         for (i = 1; i <= n; i++) dl = dl * dl;
  28.         if (inverse) dl = 1 / dl;
  29.         return dl;
  30.     }    
  31. </script> 
  32. <%
  33. for (double I = 0; I <= 2.0; I += 0.1)
  34. {
  35.     Response.Write("Exp(" + I + ")=" + Exp(I) + " " + Math.Exp(I) + "<br />");
  36. }    
  37. %>

on obtiendra le résultat suivant :

Exp(0)=1 1
Exp(0,1)=1,10517091807565 1,10517091807565
Exp(0,2)=1,22140275816017 1,22140275816017
Exp(0,3)=1,349858807576 1,349858807576
Exp(0,4)=1,49182469764127 1,49182469764127
Exp(0,5)=1,64872127070012 1,64872127070013
Exp(0,6)=1,82211880039051 1,82211880039051
Exp(0,7)=2,01375270747047 2,01375270747048
Exp(0,8)=2,22554092849243 2,22554092849247
Exp(0,9)=2,45960311115694 2,45960311115695
Exp(1)=2,71828182845905 2,71828182845905
Exp(1,1)=3,00416602394643 3,00416602394643
Exp(1,2)=3,32011692273655 3,32011692273655
Exp(1,3)=3,66929666761923 3,66929666761924
Exp(1,4)=4,05519996684462 4,05519996684468
Exp(1,5)=4,48168907033807 4,48168907033807
Exp(1,6)=4,95303242439509 4,95303242439512
Exp(1,7)=5,47394739172718 5,4739473917272
Exp(1,8)=6,04964746441294 6,04964746441295
Exp(1,9)=6,68589444227927 6,68589444227927

Voir également

Science - Mathématique

Dernière mise à jour : Samedi, le 31 août 2017