Lösung einer linearen Gleichung in Mathematica

  • Das sollte einfach sein, aber ich finde anscheinend nicht den richtigen Weg.

    Ich habe eine Gleichung der Form $ ax + bx + cy + az + dz = 0 $, und ich möchte die Beziehungen zwischen den Parametern $ a, b, c, d $ usw. so lösen, dass die Gleichung für alle Werte von $ x, y gilt. z $ usw.

    Dies ist ein sehr vereinfachtes Beispiel für die Art von Gleichung, mit der ich mich befasse. Es gibt tatsächlich 308 Variablen $ x, y, \ ldots $ und 42 Parameter $ a, b, \ ldots $, was dies nicht trivial macht. Wie in der kurzen Beispielgleichung könnten verschiedene Variablen denselben Parameter haben und mehrmals mit unterschiedlichen Parametern auftreten.

    Mein bester Versuch ist bisher:

     Solve[ForAll[{x, y, ...}, a*x + b*y + ... == 0], {a, b, ...}]
     

    Dies ergibt die richtige Lösung für eine kleinere Gleichung (etwa 20 Variablen und 9 Parameter), ist aber für diese viel zu langsam. Gibt es eine spezifischere Technik, die ich verwenden könnte, die speziell für diese Art von Problem optimiert ist? Weglassen von ForAll führt zu Lösungen in Bezug auf die x-Variablen, was irgendwie nutzlos ist.

    EDIT: mach es (in den Kommentaren)! Vielen Dank!

    23 May 2012
    Szabolcs
2 answers
  •  Coefficient[a x + b x + c y + a z + d z, #] == 0 & /@ {x, y, z} // Reduce[#, {a, b, c, d}] &
    
    b == -a && c == 0 && d == -a
     
    23 May 2012
    Mark Adler
  • Sie können SolveAlways für die von Ihnen beschriebenen Probleme verwenden. Ich habe nicht nachgesehen, ob es für ein sehr großes System schnell genug ist.

     In[1]:= SolveAlways[a x + b x + c y + a z + d z == 0, {x, y, z}]
    
    Out[1]= {{a -> -d, b -> d, c -> 0}}
     
    23 May 2012
    Szabolcs