Gleichungen mit C++ lösen



  • Hi Leute,

    ich habe mir mal überlegt, ob es möglich ist mit irgendeiner Programmiersprache, zum Beispiel C++, eine eingegebene Gleichung zu lösen.

    Ich würde nämlich gern ein Programm schreiben, in das ich eine Funktion (z.B. y=x² + 3) eingeben kann und dass das Programm diese Gleichung dann löst.

    Ich habe aber wirklich keinen Plan, wie ich da vorgehen muss... Nun wollte ich fragen, ob ihr mir da einen Hinweis geben könntet, wie ich das machen könnte? Ich wäre euch sehr dankbar...

    MfG René



  • du willst ein computer algebra system wie maple oder mathematica.

    zu erst musst du den ausdruck in seine bestandteile zerlegen (konstanten, variablen, operatoren) und diese in relation stellen ( pow[mult[10, 20, 30], 9] ).
    auf den entstandenen baum kannst du dann transformationen anwenden, die du sonst auch per hand/kopf machen wuerdest.
    der trick dabei ist, dass der computer nicht wie ein mensch vorausdenken und den loesungsweg ahnen kann. der computer probiert alle moeglichen operationen und muss dann entscheiden, welche ihm am meisten gebracht hat. dieses entscheiden ist bei komplexeren formeln schwer bis unmoeglich. auch koennen dabei zyklische transformationen entstehen (endlosschleifen), die der computer erkennen und abbrechen muss (eventuell mit memoization zu entscheiden).

    http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

    lecture 3b ist ueber symbolisches ableiten. koennte dir sehr helfen. sieh dir das video einfach mal an (~500MB).



  • Ich danke dir für deine schnelle antwort. Ich werde mir das Video mal herunterladen. Mal sehen, ob es etwas nützt, aber wenn du es sagst.. 😉

    MfG René



  • Ersatzweise kann man Lösungen von Gleichungen auch schätzen. Solche Verfahren nennt man numerisch. Schau mal z.b. nach Newton Verfahren in der Wikipedia oder bei Google. Realistische Fehlergrößen liegen im Bereich ab 10610^{-6} für 'liebe' Probleme.
    Andere Suchworte dazu sind 'Numerik', 'Gauss Elimination', 'Fließkommazahlen', das Standard-Numerik-Programm Matlab (oder freie alternative Octave), 'Fehlerrechnung' ...


Anmelden zum Antworten