Resolution d'équation y=f(x)

cs_MECA Messages postés 2 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 27 décembre 2006 - 30 janv. 2005 à 17:30
gabrielgarcin Messages postés 23 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 30 novembre 2011 - 28 déc. 2006 à 18:31
Salut

J'ai une équation du type y=ax+bx^0.9+c

Je sèche sur la solution

J'ai essayé la métode de NEWTON mais l'exposant de 0.9 me donne des x_n+1 négatif
donc pas de calcul car par exemple -1^0.9 !!.

Merci de votre aide sur la méthode à employer

++

4 réponses

Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
11 févr. 2005 à 15:44
Tu cherches la solution de quoi exactement? tu as y,a,b et c et tu cherches x, c'est ça?

Je procéderais de la manière suivante :



1) déjà, tu modifies ton problème pour avoir : y-c z ax+bx^0.9

2) tu prends 2 points de départ, qui encadrent la solution, et puis tu utilises la méthode de la bissection
0
gabrielgarcin Messages postés 23 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 30 novembre 2011
26 avril 2005 à 11:32
Bonjour.

La méthode de newton peut fonctionner mais il faut supposer que la solution puisse être un nombre complexe de la forme :

X=Rho*(Cos(teta)+i*sin(Teta)) avec Rho toujours positif

L'equation f(x)= A*x^n+B*x+C=0 se transforme en deux équations :
f1(Rho,Teta)=A*(Rho^n)*cos(n*Teta)+B*Rho*cos(Teta)+C
f2(Rho,Teta)=A*(Rho^n)*sin(n*Teta)+B*Rho*sin(Teta)

aux quelles ont peut appliquer la méthode de Newton.

Le programme ci dessous est l'application de cette méthode :

Dim A, B, C, N, Pi As Double
Dim F1, F2 As Double
Dim Rho, Teta 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 constantes
A = 1
B = 1
C = -2
N = 0.9


' Initialisation des solutions
Rho = 1
Teta = Pi / 4


Iter = 0
Continue:
Iter = Iter + 1


' Evaluation de l'écart des solutions
F1 = A * (Rho ^ N) * Cos(N * Teta) + B * Rho * Cos(Teta) + C
F2 = A * (Rho ^ N) * Sin(N * Teta) + B * Rho * Sin(Teta)


AA(1, 1) = N * A * (Rho ^ (N - 1)) * Cos(N * Teta) + B * Cos(Teta)
AA(1, 2) = -(N * A * (Rho ^ N) * Sin(N * Teta) + B * Rho * Sin(Teta))
AA(2, 1) = N * A * (Rho ^ (N - 1)) * Sin(N * Teta) + B * Sin(Teta)
AA(2, 2) = N * A * (Rho ^ N) * Cos(N * Teta) + B * Rho * Cos(Teta)


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
Rho = Abs(Rho - X(1))
Teta = Teta - 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 "Rho=" & Rho & " Teta/pi=" & Teta / Pi
MsgBox "Partie réelle=" & Int(Rho * Cos(Teta) / Eps + 0.5) * Eps & " Partie imaginaire=" & Int(Rho * Sin(Teta) / Eps + 0.5) * Eps & Chr(13) & Chr(13) & " Eps=" & Eps & " Iter=" & Iter

Gabriel GARCIN
0
cs_MECA Messages postés 2 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 27 décembre 2006
27 déc. 2006 à 19:26
Bonjour,

Je viens juste de lire vos réponses et je vous en remercie
Le sujet était une priorité à l'époque et peut revenir un jour
Je vais tester et je vous tiendrai informer

A+
0
gabrielgarcin Messages postés 23 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 30 novembre 2011
28 déc. 2006 à 18:31
Bonjour.

    Si vous avez besoin de renseignements complémentaires, je suis à votre disposition.
    Je vous signale que cette méthode peut être adaptée à la résolution de n équations non linéaires à n inconnues mais il faut disposer d'un module de résolution de n équations linéaires à n inconnues.

    Cordialement.

                             Gabriel GARCIN
0
Rejoignez-nous