Un peu de VB6.0

(Cliquez-ici pour accéder à la version originale de cette discussion avec couleurs et images)







Posted by: mbass

J'ai un petit soucis avec Visual Basic 6.0, je doit créer un petit programme de calcul de volume de citerne mais je trouve pas (ou du moin j'ai pas le temps pour me plonger dans les entraille de VB, au boulot il me laisse pas le temps de chercher qu'un nouveau prog de diemsionnement de je ne c'est quel machine thermique arrive sur mon bureau... bref) la fonction arcsin.
Si quelqu'un a cette solution pour me dépanner sa serait vraiment sympatoche :) !!!
cordialment a vous



Posted by: anima

Citation:
Posté par mbass
J'ai un petit soucis avec Visual Basic 6.0, je doit créer un petit programme de calcul de volume de citerne mais je trouve pas (ou du moin j'ai pas le temps pour me plonger dans les entraille de VB, au boulot il me laisse pas le temps de chercher qu'un nouveau prog de diemsionnement de je ne c'est quel machine thermique arrive sur mon bureau... bref) la fonction arcsin.
Si quelqu'un a cette solution pour me dépanner sa serait vraiment sympatoche :) !!!
cordialment a vous

En VB.Net ca se trouve par l'appel de Math.Asin(angle); sinon, si tu ne trouves pas, tu peux la reprogrammer (la fonction) en utilisant un DL d'ordre 4 ou 5 et toutes les identités (notamment sin(pi-x) = sin(x), sin(-x)=-sinx)



Posted by: mbass

en VB.net je c'est komment faire merci mais je prog en VB6.0. Jen suis sur ke sa doit se faire mais komment? merci quand même pour tes lumières



Posted by: anima

Citation:
Posté par mbass
en VB.net je c'est komment faire merci mais je prog en VB6.0. Jen suis sur ke sa doit se faire mais komment? merci quand même pour tes lumières

Malheureusement, je viens de vérifier, les fonctions trigo n'existent pas sur VB6. Par contre, les reprogrammer est un jeu d'enfant.

Soit l'angle en radian; on va trouver un DL a l'ordre 5 de sin(x) et ensuite vérifier la précision aux angles proches de pi/2.
Je ne vais pas m'embeter et écrire le tout sous forme de matrice, en premiere colonne la dérivée n-eme (avec comme ligne 1 le rang 0), suivi de la valeur de ceci en zéro:
\(\begin{array}{cc}<br />
sin(x) &amp; 0\\<br />
cos(x) &amp; 1\\<br />
-sin(x) &amp; 0\\<br />
-cos(x) &amp; -1\\<br />
sin(x) &amp; 0\\<br />
cos(x) &amp; 1\\<br />
\end{array}\)
Donc, un DL a l'ordre 5 de sin(x) donne:
sin(x) = x - \frac{x^3}{6} + \frac{x^5}{120} + o(x^5)
Et donc notre approximation sera:
sin(x) = x - \frac{x^3}{6} + \frac{x^5}{120}
Vérifions si elle va bien pour x=pi/2.
sin(pi/2) = 1.
Tres bonne approximation: f(pi/2) = 1.0045248588637317. Si tu veux encore plus de précision, soustrais x^7/5040.

Ensuite, les petits tests logiques:
- Si x est compris entre pi/2 et pi, soustraire pi/2 et prendre la meme valeur.
- Si x est compris entre 0 et -pi/2, prendre sin(-x)
- Si x est compris entre pi/2 et pi, soustraire pi/2 et prendre sin(-x)
- Sinon, prendre sin(x).

Et pour l'arcsinus!! Meme méthode!
\(\begin{array}{cc}<br />
arcsin(x) &amp; 0 \\<br />
\frac{1}{\sqrt{1-x^2}} &amp; 1 \\<br />
-\frac{1}{2}(1-x^2)^{-3/2} &amp; -1/2 \\<br />
\frac{3}{4}(1-x^2)^{-5/2} &amp; 3/4\\<br />
-\frac{5}{8}(1-x^2)^{-7/2} &amp; 5/8 \\<br />
\end{array}\)
Et donc le DL, sauf erreur, donne:
arcsin(x) = x - x^2/4 + x^3/8 - 5x^4/192



Posted by: mbass

Anima je te remercie je vai étudier sa de plus près. J'ai pas encore...



Posted by: anima

Attends, je pense m'etre planté dans les dérivées:
0: Arcsin(x) = 0
1: (1-x^2)^{-0.5} = 1
2: x(1-x^2)^{-1.5} = 0
3: 3x^2(1-x^2)^{-2.5} = 0

Ca ne vaut vraiment pas le coup d'utiliser les DLs en zéro; il vaudrait mieux utiliser une valeur proche de zéro...



Posted by: rene38

Bonjour

Pourquoi ne pas utiliser la fonction Arctangente (Atn) connue de VB6.0 ?
Les valeurs de Arcsin(1) et Arcsin(-1) étant évidentes, on a,
http://www.maths-forum.com/images/l...258eea9fd03.gif



Posted by: ciberrique

Salut, effectivement Arcsin n'est pas inclu nativement dans Vb6, donc pour faire un ArcSin voici comment on procéde ainsi :

Arcsin(X) = Atn(X / Sqr(-X * X + 1))

Attention au division par 0.

Sqr = racine carré
Atn = Arctan











-