Résolution de formule

eti100 Messages postés 1 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 15 avril 2005 - 15 avril 2005 à 23:36
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 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

à l'isoler car il est aussi dans N.



Sous excel ca bloque.

Quelqu'un de bon en math peut-il m'aider?



Merci d'avance.

4 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
16 avril 2005 à 11:39
Pour essayer ton code, il faudrait qu'il soit complet (déclarations des variables, function racine ect..)

jpleroisse
0
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Derniè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.

Bonne chance et bonne prog'

Amateurement vôtre...
0
gabrielgarcin Messages postés 23 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 30 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


X(2) = (F1 / AA(1, 1) - F2 / AA(2, 1)) / (AA(1, 2) / AA(1, 1) - AA(2, 2) / AA(2, 1))
X(1) = (F1 / AA(1, 2) - F2 / AA(2, 2)) / (AA(1, 1) / AA(1, 2) - AA(2, 1) / AA(2, 2))


' 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
0
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
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!
0
Rejoignez-nous