Lösen einer Gleichung < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
Ich möchte eine Gleichung mit einem vereinfachten Ausdruck erstellen und diese dann lösen. Das Problem ist das Erstellen der Gleichung nach dem Vereinfachen des Ausdruckes. Ich gebe also z. B. folgendes ein:
syms a
simplify((- [mm] a^2 [/mm] + 1)/(1 - a))
solve ('ans = 0')
Dann interpretiert MATLAB das Gleichheitszeichen trotz der einfachen Anführungszeichen als Zuweisung. Eine Lösungsmethode funktionert bei dieser kleinen Gleichung ganz gut:
solve ('simplify((- [mm] a^2 [/mm] + 1)/(1 - a)) = 0')
Jedoch bei der größeren Gleichung, die ich eigentlich vereinfachen und lösen will, rechnet MATLAB Ewigkeiten rum. Obwohl das Vereinfachen und Lösen des vereinfachten Ausdrucks (wenn ich den vereinfachten Ausdruck dann von Hand kopiere und in "solve" einfüge) beides recht schnell geht. Wie kann ich also Schritt für Schritt den Ausdruck vereinfachen, mit diesem eine Gleichung erstellen und diese dann lösen?
Vielen Dank im Vorraus...
Gruß
P.S.: Kann man den Formeleditor auch ausschalten? Ist ja schön und gut das Teil, aber im MATLAB Forum wohl nicht so sinnvoll, da man den Quelltext nicht mehr kopieren kann.
|
|
|
|
Hi,
so:
1: | clear all;
| 2: | clc;
| 3: |
| 4: | syms a;
| 5: | eqn='(-a^2+1)/(1-a)=0'
| 6: | simp=simplify(eqn)
| 7: | solve(simp) |
simplify bringt aber nix.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:09 Mi 05.09.2007 | Autor: | Urgestein |
Hmhm, das führt leider nicht zum gewünschten Ergebnis. Denn wenn ich
syms a
simplify [mm] ((-a^2+1)/(1-a))
[/mm]
eingebe kommt als Antwort: a+1. Was er auch richtig so gemacht hat. Und genau diesen Ausdruck a+1 will ich jetzt gleich 0 setzen und lösen. Das will/muss ich so machen, da wie gesagt MATLAB mit der langen original Formel nicht zurecht kommt beim Lösen. Tu ich sie seperat vereinfachen und dann manuell lösen klappt alles wunderbar. Nur leider muss ich sie nicht nur einmal lösen, deswegen soll das auch automatisch funktionieren.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:00 Mi 05.09.2007 | Autor: | Urgestein |
So,
nach langem hin und her habe ich jetzt eine Lösung des Problems gefunden :) Diese funktioniert allerdings nur dann, wenn man das vereinfachte Ergebnis gleich null setzen will (da MATLAB das wohl automatisch macht):
syms a;
simplify [mm] ((-a^2+1)/(1-a))
[/mm]
solve(ans)
Wenn ich das vereinfachte Ergebnis gleich 5 z. B. setzen wollte, hätte ich schon wieder ein Problem. Hat vielleicht trotzdem jmd. eine Lödung dazu?
|
|
|
|
|
Probier es mal so:
1: | clear all;
| 2: | clc;
| 3: |
| 4: | syms a;
| 5: | term=(-a^2+1)/(1-a)
| 6: | simp=simplify(term)
| 7: | eqn=[char(simp),'=0']
| 8: | solve(eqn,a) |
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:13 Do 06.09.2007 | Autor: | Urgestein |
Wunderbar, danke...
|
|
|
|