[XL 2010] Résolution de 26304 quations sous excel !!!

enviromtl

XLDnaute Nouveau
Bonjour cher(e)s collègues,

Comme indiqué sur le titre de la discussion, je cherche à résoudre 26304 equations sous Excel de type (a/b)+(x/b)+ alpha exp(x beta)=0 (voir fichier excel)

J'ai trouvé une solution (la méthode Newton Méthode de Newton - Wikipédia voir exemple) mais je dois faire 5 itérations ce qui allourdie le fichier et encombre la feuille excel :(

C'est pourquoi je me demande si par hasard quelqu'un parmis vous aurait une solution plus élégante (en utilisant juste une seule cellule) pour determiner la valeur de x en fonction de a,b, alpha et beta :confused:

J'ai bien hâte de lire vos suggestions

cordialement

Ben :)
 

Pièces jointes

  • Classeur1.xlsx
    50.1 KB · Affichages: 112
  • Classeur1.xlsx
    50.1 KB · Affichages: 113
  • Classeur1.xlsx
    50.1 KB · Affichages: 109

CHALET53

XLDnaute Barbatruc
Re : [XL 2010] Résolution de 26304 quations sous excel !!!

bonjour,

Par rapport au fichier, si j'ai x en G2 pour la première ligne, et si la formule est la suivante :
=(D2/E2)+(G2/E2)+B2^(G2*A2)
le solveur donne une réponse en une seule itération : -2109.865946

Je ne suis pas un spécialiste du genre

A suivre
 

flyonets44

XLDnaute Occasionnel
Re : [XL 2010] Résolution de 26304 quations sous excel !!!

Bonjour
voici un exemple de code dont tu pourrais t'inspirer
pour réaliser ton job
cette macro xl 2003 utilise le solveur pour réaliser un calcul de valeur pour optimiser un rendement
A adapter bien sûr à ton cas
Sub Ciblage()
'Calcul du cours pour obtenir un rendement défini dans la
'cellule F3
Application.ScreenUpdating = False
Dim Arrdata, data&
Arrdata = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
Dim Res() As Variant, Rng As Range
ReDim Res(1 To 100, 1 To 7)
Z = 1: Col = 1: Y = 0
'With Feuil2
For Y = LBound(Arrdata) To UBound(Arrdata)
'Range("trop").GoalSeek _
Goal:=Range("objtr").Value, ChangingCell:=Range("cours")
Range("objtr").Value = Arrdata(Y)
Range("trop").GoalSeek _
Goal:=Arrdata(Y), ChangingCell:=Range("cours")
'End With
'stockage des résultats dans un tableau intermédiaire
Res(1, 1) = Range("objtr").Value
Res(Z + 1, Col) = Range("gpo").Value
Res(Z + 2, Col) = Range("cours").Value
Res(Z + 3, Col) = Range("cours").Offset(2, 0).Value
'Debug.Print Res(3, 1)
'Construction du tableau des résultats dans la feuille cible
Set Rng = Feuil4.Range("B2").Offset(0, Y)
'Rng.Offset(0, -1).Value = "Taux"
Rng.Resize(4, 1) = Res
Next
Erase Res: Set Rng = Nothing
Application.GoTo reference:=Feuil4.Cells(2, 1), Scroll:=True
End Sub
Cordialement
 

enviromtl

XLDnaute Nouveau
Re : [XL 2010] Résolution de 26304 quations sous excel !!!

Bonjour CHALET53 et flyonets44 :)

Le problème avec le solveur CHALET53 est qu'il ne permet pas de reproduire la résolution pour les autres 26304 d'une manière automatique. Autrement dit, il faut refaire la procédure manuellement 26304 (voir Ce lien n'existe plus) ce qui donc non optimale !

flyonets44, j'ai essayé d'adapter ton code et de l'épurer ..mais, je n'y arrive pas pour l'instant.

Je reste donc ouvert à des nouvelles suggestions.
PS: equations sous Excel est de type (a/b)+(x/b)+ alpha e(x beta)=0

Merci
Ben
 

CHALET53

XLDnaute Barbatruc
Re : [XL 2010] Résolution de 26304 quations sous excel !!!

Re,

Si ma formule est bonne : avec une macro sur valeur cible
K1 contient la formule générique qui est recopiée dans les cellules

Sub Calcul()
'
'
For i = 2 To 877
'
Range("K1").Select
Selection.Copy
Cells(i, 11).Select
ActiveSheet.Paste
Cells(i, 11).GoalSeek Goal:=0, ChangingCell:=Cells(i, 7)
Next i
End Sub
 

Discussions similaires