eti100
Messages postés1Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention15 avril 2005
-
15 avril 2005 à 23:36
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 2010
-
29 avril 2005 à 09:17
Bonjour :
Je bloque sur la résolution de la formule suivante (je cherche à calculer H):
H.cos(A)+(W/(2.N)).(H.sin(A)) = D/2
avec N = Racine(H²+(Z/(2.Pi)))
Je connais A, W, D, Z et Pi
par exemple : A 30° W 1 D 4 Z 2 Pi=3.14
Je cherche a calculer H en fonction de ces données mais je n'arrive pas
cs_nico39
Messages postés56Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention 4 octobre 2006 18 avril 2005 à 16:56
Salut eti100,
Essaye de tracer la courbe ton équation principale:
f(H) = H.cos(A).... - D/2
et regarde l'allure de la courbe obtenue. Si ta courbe est croissante, alors j'ai peut-être une solution...
Si tu as un ordre de grandeur pour H, tu peux toujours utiliser la méthode de
dichotomie. Je sais que cette méthode s'applique au tri de données, mais elle peut s'appliquer également à la résolution d'équations compliquées. Il s'agit de parvenir de proche en proche à encadrer la valeur dans le plus petit intervalle possible (précision à régler).
Il faut donc programmer une boucle à chaque tour un peu plus l'intervalle de recherche.
Je m'explique: établis des bornes inférieure et supérieure d'un intervalle de valeurs de H qui te semble le plus plausible. Lance le calcul avec la valeur de chacune de tes
bornes. Normalement les 2 résultats doivent se situer de part et d'autre de ta valeur cible (pour l'équation plus haut, 0; pour l'équation dans ton message, D/2).
Prends ensuite la valeur située au milieu de l'intervalle et lance le calcul:
si la valeur obtenue est comprise entre la valeur cible et un des résultats de tes bornes, alors
ta valeur du milieu et cette borne deviennent les nouvelles bornes
pour ta prochaine boucle.
Et ainsi de suite jusqu'à ce que tu tombes pile sur la valeur ou que tu t'en approches avec une précision qui te conviendras.
J'ai essayé d'être assez clair et concis, mais si tu as encore d'autres questions, n'hésite pas.
gabrielgarcin
Messages postés23Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention30 novembre 2011 25 avril 2005 à 16:26
Bonjour.
Les code ci dessous permet de trouver les solutions en 5 itérations.
Avec les données proposées les solutions sont :
H=2.031 255 715 526 76
N=2.108 153 141 506 55
Il est basé sur la méthode de Newton qui permet de résoudre des systèmes d'équations non linéaires.
Dans notre cas nous avons 2 équations et donc 2 inconnues mais ont peut appliquer la méthode a un plus grand nombre d'équations.
Si vous le désirez je peux vous fournir plus de renseignements sur cette méthode.
Gabriel GARCIN
Dim H, A, W, N, Z, D, Pi As Double
Dim F1, F2 As Double
Dim AA(2, 2), X(2), Eps0, Eps As Double, Iter, Iter0 As Integer
Pi = 4 * Atn(1)
Eps0 = 0.000000001
Iter0 = 100
' Initialisation des données
A = 30 / 180 * Pi
W = 1
D = 4
Z = 2
' Initialisation des solutions
H = 1
N = 1
Iter = 0
Continue:
Iter = Iter + 1
' Evaluation de l'écart des solutions
F1 = H * Cos(A) + (W / (2 * N)) * (H * Sin(A)) - D / 2
F2 = N - Sqr(H * H + (Z / (2 * Pi)))
AA(1, 1) = Cos(A) + W / (2 * N) * Sin(A)
AA(1, 2) = -W / (2 * N * N) * H * Sin(A)
AA(2, 1) = -1 / Sqr(H * H + (Z / (2 * Pi))) * H
AA(2, 2) = 1
' Meilleure approximation des solutions
H = H - X(1)
N = N - X(2)
Eps = Sqr(X(1) * X(1) + X(2) * X(2))
If Iter > Iter0 Then
MsgBox "Pas de convergence aprés " & Iter & " itérations" & Chr(13) & Chr(13) & "H=" & H & " N=" & N & " Eps=" & Eps
Exit Sub
End If
If Eps > Eps0 Then GoTo Continue
MsgBox "H=" & H & " N=" & N & " Eps=" & Eps & " Iter=" & Iter
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 29 avril 2005 à 09:17
entre nous, c'est quand même facile d'isoler H : tu passes ton H cos(a) à droite, tu élèves au carré le tout, puis tu multiplies par le dénominateur de gauche : tu n'as plus de racine, mais du coup tu trouves un polynôme de degré 4. Là, c'est bcp plus facile de résoudre!