Macro VBA-Newton Raphson

  • Initiateur de la discussion Initiateur de la discussion Nabafima
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

Nabafima

Guest
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

Dernière modification par un modérateur:
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
 
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 modification par un modérateur:
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 !
 
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
 
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
 
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

F
  • Question Question
Réponses
2
Affichages
714
Fressard Pierre
F
A
Réponses
37
Affichages
4 K
asso78Lim
A
X
  • Question Question
Microsoft 365 Macro "évolutif"
Réponses
8
Affichages
1 K
B
Réponses
17
Affichages
3 K
benoitoleron
B
M
Réponses
3
Affichages
995
MrAntonin
M
Y
Réponses
11
Affichages
3 K
Y
A
Réponses
6
Affichages
4 K
A
E
Réponses
4
Affichages
8 K
excel girl
E
X
Réponses
0
Affichages
896
xavierhome
X
Retour