Résolution équation nr 3

qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    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. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
       
      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
  2. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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
      1. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention  
         
        JvDo
        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
    2. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      Désolé, mais depuis que je t'ai remercié pour la résolution de cette équation, et bien cela remarche !!!!!
      Cdlt
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Nettement oui :-)
      0
    4. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour 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. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour 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
  7. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
       
      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. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour Raymond,
      Merci pour tes explications
      0
    3. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      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. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859 > qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour,

      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. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour 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
  8. qataror Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
     
    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