Résolution équation nr 3

Bonjour,

Toujours sur le même fichier, j'ai une troisième équation à une inconnue à développer.
Après G560=G559 et J560=J559
Cette fois-ci, c'est calculer la valeur en B560 que fera que la valeur en K560 soit égale à K559.

Raymond a trouvé cette solution
QUOTE..................................................................................................
Je ne sais pas si c'est toujours d'actualité ou si tu t'en es déjà sorti, mais pour le fun j'ai recommencé mes calculs et fait une vérification chiffrée :

B560=(K559 - G560 - 0,75*J559 + 25)*H560/6,25 - 3*D559

Avec K559=104 ; G560=25 ; J559=22 ; H560=4 et D559=18 par exemple on trouve 2 comme solution.
https://www.cjoint.com/c/EEuhiP7feyC

Cordialement (je me suis bien amusé !).
UNQUOTE...................................................................................................

Malheureusement, lorsque je rentre la formule dans mon fichier telle quelle, je trouve des résultats différents.

Voici le lien pour le fichier complet ( résultats précédents inclus )
https://www.cjoint.com/c/EExrsPm6XRf

Merci en core pour votre aide précieuse.
Cordialement

7 réponses

Résumé de la discussion

Détermination de B560 pour que K560 = K559 dans un fichier Excel, en tenant compte des liaisons entre G560, J560, H560 et D559, et avec des essais numériques et des corrections proposées. Plusieurs solutions ont été proposées, notamment corriger EK560 en remplaçant L569 par L560 et adopter la virgule décimale selon le locale, puis employer le solveur ou du VBA pour isoler B560. Raymond a proposé une dérivation complexe aboutissant à une autre expression permettant d’obtenir B560 via une résolution algébrique, validant l’emploi du solveur et la nécessité d’adapter les paramètres (D559, H559, J559, etc.). D'autres échanges abordent aspects pratiques tels que les liens entre onglets et les macros, ou la mise à jour automatique, ce qui peut introduire des écarts entre résultats et nécessiter des ajustements spécifiques au fichier.

Bobot (l’IA à votre service)
  1. bonjour JvDo,
    As-tu réussi à mettre à jour le fichier CAC TCT ?
    Visualisez l'onglet SYNTHESE et vérifiez la pertinence du début des signaux hausse et baisse ?
    Cordialement
    0
    1. Contributeur
      Salut qataror.

      Contrairement à ce que tu penses, il ne s'agit pas d'équations à une inconnue, mais de calculs itératifs.
      Et lorsque tu écris "Cette solution existe car le solveur les résout", tu ne fais en réalité que confirmer mes dires, puisque le solveur fonctionne par calculs successifs, donc par approximations de plus en plus fines, c'est-à-dire par tatonnements ; il ne résout pas d'équation.
      0
      1. Bonsoir Raymond PENTIER,

        Contrairement à ce que tu penses, il s'agit d'une équation à une inconnue.
        L'équation de la première partie de ce post fait intervenir une inconnue : B560, 22 données : J559, K559, H559 et D541 à D559 et elle est quadratique.
        La dernière équation de ce post est beaucoup plus simple, elle ne fait intervenir que 2 données : H559 et D559, toujours la même inconnue bien sûr et elle est linéaire.

        Une précision : ce n'est pas parce que le solver trouve une solution à un problème que l'on peut affirmer quoi que ce soit sur l'existence ou l'inexistence d'une équation explicitant l'inconnue à trouver.

        Cordialement
        0
      2. Bonjour Raymond,
        Merci pour tes explications
        0
      3. Bonjour,
        Suite à mon message nr 21, je me suis aperçu d'une erreur dans ma demande de résolution d'équation égale à 0 .
        Je vous joins le lien du fichier test
        https://www.cjoint.com/c/EEBkhSHj60U
        L'équation est Y560 = 0
        Merci
        Très cordialement
        0
      4. @qatarorBonjour,

        la formule :
        B560=2*X559-W559


        cordialement

        PS : je ne connais pas bien le partage de documents sur dropbox mais je suppose qu'il faut partager le dossier, fournir un lien et un mot de passe.
        Sinon, ça ne passe pas sur cjoint ?
        0
      5. @JvDoBonjour JvDo,
        Merci pour la résolution de l'équation.
        Finalement, le fichier entier passe sur Cjoint. Donc voici le lien
        https://www.cjoint.com/?3EBoW5a2IxE
        cela concerne le CAC40 et le TCT ( cad qu'il faut le renseigner toutes les heures.
        Dites moi si vous arrivez à l'ouvrir correctement et le prochain message sera: comment l'utiliser ?
        Cordialement
        0
    2. Bonsoir,
      Il me reste une équation à résoudre :
      Calculer la valeur en B560 qui fera que la valeur en I560=0
      Pour exemple, I560 est égale à 0 avec B560 = 16,84 ( solveur )
      Merci par avance pour la résolution de cette dernière équation
      Tres cordialement
      0
      1. Contributeur
        En modifiant un peu mon code si ça t'intéresse :
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim CellSav As Variant
        Dim delta As Double, i As Long
        If Target.Column <> 2 Then Exit Sub
        Cancel = True
        CellSav = Target.Formula
        delta = Target.Offset(, 7)
        Do While (Abs(delta) > 0.001 And i < 1000)
        Target = Target - delta
        delta = Target.Offset(, 7)
        i = i + 1
        Loop
        Target.Offset(, 12) = Target
        Target.Formula = CellSav
        MsgBox Target.Offset(, 12)
        End Sub

        eric
        0
      2. Bonsoir à tous,

        Là, qataror, tu aurais pu le faire tout seul.
        L'équation est
        =4*H559-3*D559


        à eriiic : pour le coup j'ai amélioré l'empreinte carbone de ma formule.

        Cordialement
        0
      3. Contributeur
        Nettement oui :-)
        0
      4. @eriiicBonjour Eric,
        Merci Eric pour la vba et c'est très bluffant.
        Seulement l'onglet donCAC est, pour réduire le nombre de fenêtre, caché.
        Je rentre les valeurs ( indices ou valeurs ) dans la base et mes résultats ( copier coller) sont dans l'onglet Bilan Simu ( je fais un copier coller des résultats les plus intéréssant de l'onglet donCAC vers Bilan Simu )
        Très cordialement
        0
      5. @JvDoBonjour JvDo,
        Encore merci pour cette nouvelle résolution.
        Bien sur, j'ai essayé mais dès qu'il faut isoler B560 les soucis commencent.
        Très cordialement
        je finalise la construction du fichier et je vous fais suivre les résultats
        Bonne journée à tous
        0
    3. Contributeur
      Bonjour,

      Comme tu ne redonnes pas toutes les explications pas facile pour ceux qui n'ont pas l'historique.
      Je suis peut-être à coté de la plaque...

      Donc une autre approche. Vu que ton problème est linéaire on peut approcher la solution rapidement en vba (un peu comme le solveur) qq soient le nombre d'antécédents et sans remonter la chaine.
      Pour l'instant un simple double-clic dans la colonne B (B560 par exemple) t'affiche l'évaluation et la met en N.
      C'est juste pour que tu vois le principe et que tu testes, après on peut envisager un autre fonctionnement. Calcul d'une plage sur ordre (j'ai l'impression que le calcul dépend des calculs précédents), ou maj sur une saisie ou autre chose.
      https://www.cjoint.com/c/EEysxCnk04L

      eric
      0
      1. Bonjour Eric,
        Merci pour t'intéresser à la résolution d'équation pour mon fichier excel.
        Dans l'onglet donCAC, si tu remontes la colonne M jusqu'à la ligne 1, tu auras
        quelques explications concernant la fonction des onglets.
        Je vais regarder attentivement le fichier que tu as joint à ton message.
        Merci et bonne soirée.
        Cordialement
        0
      2. Bonsoir eriiic,

        Je crois que tu t'es croisé les doigts dans tes offsets et ton delta.
        Les offsets ne pointent pas sur les bonnes cellules, ton delta est du mauvais signe et tu retournes la cellule de la colonne M alors que tu modifies celle de la colonne N.
        J'ai modifié les lignes en gras :

        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim CellSav As Variant
        Dim delta As Double, i As Long
        If Target.Column <> 2 Then Exit Sub
        Cancel = True
        CellSav = Target.Formula
        'delta = Target.Offset(, 8) - Target.Offset(, 7)
        delta = -Target.Offset(, 9) + Target.Offset(-1, 9)
        Do While (Abs(delta) > 0.001 And i < 1000)
        Target = Target + delta
        'delta = Target.Offset(, 8) - Target.Offset(, 7)
        delta = -Target.Offset(, 9) + Target.Offset(-1, 9)
        i = i + 1
        Loop
        Target.Offset(, 12) = Target
        Target.Formula = CellSav
        MsgBox Target.Offset(, 12)
        End Sub

        Sinon, dans sa version 3 (ce post donc), le problème n'est plus linéaire mais quadratique tout en restant bien sur à une inconnue : B560.
        Il est possible d'expliciter B560 par une formule directe.

        cordialement
        0
      3. Contributeur
        Ah, possible que je n'ai pas lu assez attentivement et comme j'ai raté le départ... :-)
        Je rendais égales I et J ce qui avait l'air de correspondre à ce qui est demandé. Je m'appuyais peut-être sur des cellules temporaires de contrôle.
        Je te fais confiance, tu as l'air plus imprégné du fichier que moi :-)
        Pour la formule je vois bien que je retourne la même chose que toi. Disons que ça permet d'économiser du papier pour ressortir l'équation;-)
        Par linéaire je voulais dire continue et sans points d'inflexion. Ca a l'air d'aller.
        eric
        0
    4. Bonjour,

      En fait, tu as 2 solutions pour B560 : -306.563405500034 et 16.0232590592985.
      Normal, vu que tu aboutis à une équation du second degré (c'est dû aux dénominateurs en F560 et H560).
      voilà ta formule, un peu longue quand même.
      J'ai abandonné la simplification, c'est trop prise de tête.

      =4*(-((5625-3*(K559-J559*0.75))*H559+(2937.5-2.5*(K559-J559*0.75))*D559-(25+K559-J559*0.75)*SOMME(D541:D558))+RACINE((((5625-3*(K559-J559*0.75))*H559+(2937.5-2.5*(K559-J559*0.75))*D559-(25+K559-J559*0.75)*SOMME(D541:D558)))^2-4*(2100-(K559+125-J559*0.75))*((1500*D559)*(3*H559+0.75*D559)-(K559+125-J559*0.75)*(SOMME(D541:D558)+1.75*D559)*(3*H559+0.75*D559)+(75*D559)*(SOMME(D541:D558)+1.75*D559))))/(2*(1975-K559+J559*0.75))


      cordialement
      0
      1. en détail :

        Point de départ :

        K560=K559
        On remplace K560 :
        G560+J560=K559
        On remplace G560 :
        D560/F560*100-100+J559*.75+I560*0.25=K559
        On remplace I560 :
        D560/F560*100-100+J559*.75+(100*D560/H560-100)*0.25=K559
        On remplace F560 :
        D560/(SOMME(D541:D559)/20+D560/20)*100-100+J559*.75+(100*D560/H560-100)*0.25=K559
        On remplace H560 :
        D560/(SOMME(D541:D559)/20+D560/20)*100-100+J559*.75+(100*D560/(.75*H559+.25*D560)-100)*0.25=K559
        On remplace D560 :
        (.75*D559+.25*B560)/(SOMME(D541:D559)/20+(.75*D559+.25*B560)/20)*100-100+J559*.75+(100*(.75*D559+.25*B560)/(.75*H559+.25*(.75*D559+.25*B560))-100)*0.25=K559
        et on réorganise :
        (1500*D559+500*B560)/(SOMME(D541:D559)+.75*D559+.25*B560)-100+J559*.75+(100*(.75*D559+.25*B560)/(.75*H559+.25*(.75*D559+.25*B560))-100)*0.25=K559

        (1500*D559+500*B560)/(SOMME(D541:D558)+1.75*D559+.25*B560)-100+J559*.75+(100*(.75*D559+.25*B560)/(.75*H559+.25*(.75*D559+.25*B560))-100)*0.25=K559

        (1500*D559+500*B560)/(SOMME(D541:D558)+1.75*D559+.25*B560)+((75*D559+25*B560)/(.75*H559+.25*(.75*D559+.25*B560))-100)*0.25=K559+100-J559*.75

        (1500*D559+2000*.25*B560)/(SOMME(D541:D558)+1.75*D559+0.25*B560)+(75*D559+100*.25*B560)/(3*H559+0.75*D559+0.25*B560)=K559+125-J559*.75
        On simplifie l'écriture :
        a_ correspond à : (1500*D559)
        b_ correspond à : (SOMME(D541:D558)+1.75*D559)
        c_ correspond à : (75*D559)
        d_ correspond à : (3*H559+0.75*D559)
        x_ correspond à : (.25*B560)
        e_ correspond à : (K559+125-J559*.75)
        l'équation devient :
        (a_+2000*x_)/(b_+x_)+(c_+100*x_)/(d_+x_)=e_

        (a_+2000*x_)*(d_+x_)+(c_+100*x_)*(b_+x_)=e_*(d_+x_)*(b_+x_)

        a_*d_+x_*(2000*d_+a_)+2000*x_^2+c_*b_+x_*(c_+100*b_)+10*x_^2=e_*b_*d_+e_*x_*(b_+d_)+e_*x_^2

        a_*d_-e_*b_*d_+c_*b_+x_*(2000*d_+a_+c_+100*b_-e_*(b_+d_))+(2100-e_)*x_^2=0
        On simplifie à nouveau l'écriture :
        aa correspond à : (2100-e_)
        bb correspond à : (2000*d_+a_+c_+100*b_-e_*(b_+d_))
        cc correspond à : (a_*d_-e_*b_*d_+c_*b_)
        On obtient l'équation du second degré :
        aa*x_^2+bb*x_+cc=0

        Dont les solutions sont :
        x1 = (-(2000*d_+a_+c_+100*b_-e_*(b_+d_))+racine((2000*d_+a_+c_+100*b_-e_*(b_+d_))^2-4*(2100-e_)*(a_*d_-e_*b_*d_+c_*b_)))/(2*(2100-e_))

        x2 = (-(2000*d_+a_+c_+100*b_-e_*(b_+d_))-racine((2000*d_+a_+c_+100*b_-e_*(b_+d_))^2-4*(2100-e_)*(a_*d_-e_*b_*d_+c_*b_)))/(2*(2100-e_))

        On remonte les simplifications à l'envers et on obtient :
        x1=(-(2000*(3*H559+0.75*D559)+(1500*D559)+(75*D559)+100*(SOMME(D541:D558)+1.75*D559)-(K559+125-J559*.75)*((SOMME(D541:D558)+1.75*D559)+(3*H559+0.75*D559)))+racine((2000*(3*H559+0.75*D559)+(1500*D559)+(75*D559)+100*(SOMME(D541:D558)+1.75*D559)-(K559+125-J559*.75)*((SOMME(D541:D558)+1.75*D559)+(3*H559+0.75*D559)))^2-4*(2100-(K559+125-J559*.75))*((1500*D559)*(3*H559+0.75*D559)-(K559+125-J559*.75)*(SOMME(D541:D558)+1.75*D559)*(3*H559+0.75*D559)+(75*D559)*(SOMME(D541:D558)+1.75*D559))))/(2*(2100-(K559+125-J559*.75)))

        même chose pour x2 avec un moins devant racine.

        B560 s'obtient en multipliant x1 et x2 par 4 et après quelques simplifications, on obtient la formule du post précédent.

        cdlt
        0
      2. @JvDoJvDo
        Je vois que je ne t'avais pas remercié pour cette performance.
        Cela doit être pour çà que j'ai un problème.
        En effet, lorsque je colle ta formule (JvDo 24 mai 2015 à 16:02) dans mon fichier test MT3 , je trouve le résultat positif et correct.
        Par contre, lorsque je colle la même formule dans mon fichier réel, je trouve un résultat négatif et qui ne correspond pas à une valeur boursière.
        Y a-t-il une solution ?
        Merci
        Cdlt
        0
      3. Désolé, mais depuis que je t'ai remercié pour la résolution de cette équation, et bien cela remarche !!!!!
        Cdlt
        0
    5. Bonjour Raymond,
      Désolé pour m'être mal exprimé au départ.
      Effectivement, ce sont des équations à une inconnue suite à une fichier
      Excel. Comme les solutions proposées par ccm81 et JvDo, elles intègrent
      cette problématique. Cette solution existe car le solveur les résout.
      Amicalement
      0
      1. Contributeur
        Cette fois-ci je ne pourrai pas t'aider, car J560 est fonction de J559, qui est fonction de J558, elle-même fonction de J557 et ceci 540 fois !
        Pour corser le tout, I560 est fonction de D560 et de H560, qui présentent chacune la même problématique ...
        Je crois que ta procédure par tâtonnements est la plus facile !
        0
        1. Contributeur
          Et je comprends pourquoi tu ne trouveras jamais le bon résultat avec ma formule :

          Tu avais omis de préciser, dans tes premiers messages, que par exemple G560 et H560 étaient fonction de D560 ! Cette condition n'a donc pas été prise en compte dans mes développements ... Ma formule ne correspond plus à rien du tout !
          0