Macro VBA-Newton Raphson

Nabafima

XLDnaute Nouveau
Bonjour,

Je suis un debutant en macro VBA. Tout d'abord, je vous remercie de temps que vous aurez à me consacrer .

Je souhaite faire une macro pour un projet à rendre. Cette macro a pour objectif de resoudre par la methode de newthon raphson une equation de degre 4.

J'ai fait la macro (ci joint) par contre il y a une erreur d'execution '6' .

Je vous mets en copie joint l'idee gloable avec la macro (New_Raph) faite aini que l'algorithm (Feuille 1 )

Je vous remercie pour votre reponse
 

Pièces jointes

  • POUR MACRO .xlsm
    66.9 KB · Affichages: 144
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bsr
EH Oui , erreur de débutant d'Excel et de VBA car :
Cette macro a pour objectif de resoudre par la methode de newthon raphson une equation de degre 4.

J'ai fait la macro (ci joint) par contre il y a une erreur d'execution '6' .
Pour adapter ce genre de méthode Oulala!!!!!!!! dérivée +extrapolation de tangente j'arrête de dire "des Gros mots" pour les non matheux Taylor est aussi impliqué !! le pauvre
Mon avis : ce n'est pas ici que l'on pourra résoudre ton Pb , SAUF si tu passes par une méthode pédagogique nettement plus adaptée dans le langage de tous les VBiste ou EXCEListe de ce forum
 

Nabafima

XLDnaute Nouveau
Bsr
EH Oui , erreur de débutant d'Excel et de VBA car :
Pour adapter ce genre de méthode Oulala!!!!!!!! dérivée +extrapolation de tangente j'arrête de dire "des Gros mots" pour les non matheux Taylor est aussi impliqué !! le pauvre
Mon avis : ce n'est pas ici que l'on pourra résoudre ton Pb , SAUF si tu passes par une méthode pédagogique nettement plus adaptée dans le langage de tous les VBiste ou EXCEListe de ce forum


Bonjour herve62,

dessole peut être que je n'ai pas assez clair dans mes explications qui n'est pas mon point fort ??
Mon problème est que comment faire une une boucle sous condition en VBA.
Avec mon programme fait, j'ai l'impression le calcul ne se fait pas. je rencontre une erreur de type 6 dont je cherche la solution.
Merci pour votre aide et je suis ouvert a vos questions pour votre bonne compréhension.
 
Dernière édition:

Hieu

XLDnaute Impliqué
Salut,

Premiere passe dans ton code : Le module d'Young est supérieur à la capcité de VBa ==> c'est ce qui bloque (erreur 6)
C'est la seule chose qui semble bloquer ton code (testé avec E = 210)


D'un point de vue mécanicien, je te dirai de travailler dans un système d'unités adéquate, le mmts (millimetre, tonne, seconde).
Ce qui donne :
- E = 210 MPa
- g = 9810 mm/s² (g minuscule / attention au module de Coulomb)

Pour avoir tes valeurs paremetrées par l'utilisateur :
VB:
Myoung = Range("c7")
Inertie = Range("c3")
fleche = Range("c4")
...
et à la fin :
VB:
...
Range("c8") = L0
End Sub

Sinon, tu ne verras jamais ton résultat !
 

Nabafima

XLDnaute Nouveau
Salut,

Premiere passe dans ton code : Le module d'Young est supérieur à la capcité de VBa ==> c'est ce qui bloque (erreur 6)
C'est la seule chose qui semble bloquer ton code (testé avec E = 210)


D'un point de vue mécanicien, je te dirai de travailler dans un système d'unités adéquate, le mmts (millimetre, tonne, seconde).
Ce qui donne :
- E = 210 MPa
- g = 9810 mm/s² (g minuscule / attention au module de Coulomb)

Pour avoir tes valeurs paremetrées par l'utilisateur :
VB:
Myoung = Range("c7")
Inertie = Range("c3")
fleche = Range("c4")
...
et à la fin :
VB:
...
Range("c8") = L0
End Sub

Sinon, tu ne verras jamais ton résultat !
Je vous remercie
Je ne comprends pas .. J'ai remplace les valeur demander mais l'erreur existe toujours
 

ODVJ

XLDnaute Impliqué
Bonsoir à tous,

Tes variables sont toutes en integer. Certaines devraient être en double.
Dans la formule L0=... la variable InertieI n'existe pas et le dénominateur devrait être parenthésé.

Tu peux envisager de mettre ta procédure en fonction :
VB:
Function New_Raph(Myoung As Double, Inertie As Double, fleche As Double, Ml As Double, Mp As Double, Gamma As Double)
    Dim tolerance As Double, Espilon As Integer, MaxIterations As Integer
    L0 = (384 * Myoung * Inertie * fleche / (Ml * Gamma)) ^ (0.25)
    tolerance = 10 ^ (-7): Epsilon = 1: MaxIterations = 100
    For I = 1 To MaxIterations
        F_L0 = 5 * L0 ^ 4 + 8 * Mp * L0 ^ 3 - (384 * Myoung * Inertie * fleche / (Ml * Gamma))
        F_L0prime = 20 * L0 ^ 3 + 24 * Mp * L0 ^ 2
        If (Abs(F_L0prime) < Epsilon) Then
            Exit For
        Else
            L1 = L0 - F_L0 / F_L0prime
        End If
        If (Abs(L1 - L0) <= tolerance * Abs(L1)) Then
            Exit For
        End If
        L0 = L1
    Next
    New_Raph = L0
End Function

et tu l'appelleras par =New_Raph(C7;C3;C4;C5;C2;C6)

Cordialement
 

Nabafima

XLDnaute Nouveau
Bonsoir à tous,

Tes variables sont toutes en integer. Certaines devraient être en double.
Dans la formule L0=... la variable InertieI n'existe pas et le dénominateur devrait être parenthésé.

Tu peux envisager de mettre ta procédure en fonction :
VB:
Function New_Raph(Myoung As Double, Inertie As Double, fleche As Double, Ml As Double, Mp As Double, Gamma As Double)
    Dim tolerance As Double, Espilon As Integer, MaxIterations As Integer
    L0 = (384 * Myoung * Inertie * fleche / (Ml * Gamma)) ^ (0.25)
    tolerance = 10 ^ (-7): Epsilon = 1: MaxIterations = 100
    For I = 1 To MaxIterations
        F_L0 = 5 * L0 ^ 4 + 8 * Mp * L0 ^ 3 - (384 * Myoung * Inertie * fleche / (Ml * Gamma))
        F_L0prime = 20 * L0 ^ 3 + 24 * Mp * L0 ^ 2
        If (Abs(F_L0prime) < Epsilon) Then
            Exit For
        Else
            L1 = L0 - F_L0 / F_L0prime
        End If
        If (Abs(L1 - L0) <= tolerance * Abs(L1)) Then
            Exit For
        End If
        L0 = L1
    Next
    New_Raph = L0
End Function

et tu l'appelleras par =New_Raph(C7;C3;C4;C5;C2;C6)

Cordialement
Bonjour,

Je vous remercie et je le teste demain matin et je vous tiens au jus
 

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

On peut aussi se passer de la méthode de Newton pour résoudre une équation quartique. Grâce au tableur, on peut faire un calcul direct selon une méthode connue depuis quatre siècles...​

Bonne journée.

ℝOGER2327
#8380


Dimanche 1[SUP]er[/SUP] As 144 (Nativité de Pantagruel - fête Suprême Tierce)
13 Brumaire An CCXXV, 0,6083h - topinambour
2016-W44-4T01:27:36Z
 

Pièces jointes

  • Équation quartique.xlsx
    32.9 KB · Affichages: 114

Nabafima

XLDnaute Nouveau
Bonjour à tous.

On peut aussi se passer de la méthode de Newton pour résoudre une équation quartique. Grâce au tableur, on peut faire un calcul direct selon une méthode connue depuis quatre siècles...​

Bonne journée.

ℝOGER2327
#8380


Dimanche 1[SUP]er[/SUP] As 144 (Nativité de Pantagruel - fête Suprême Tierce)
13 Brumaire An CCXXV, 0,6083h - topinambour
2016-W44-4T01:27:36Z
Je te remecie ROGER2327.. c'est super
 

Discussions similaires

Réponses
8
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz