|
|
Komisches Ergebnis in Matlab durch solve-Befehl |
|
Alton2 |
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.11.2016, 23:24
Titel: Komisches Ergebnis in Matlab durch solve-Befehl
|
|
Hallo,
ich habe versucht eine Gleichung in Matlab zu lösen mithilfe dem Befehl:
solve(D==0,x1);
D ist eine Funktion von x1 wobei x1=sym('x1') ist.
Das Ergebnis ist ein sehr komisches:
(42161*root(z^4 + (18400*z^3)/42161 - (901894296*z^2)/1777549921 - (18400*z)/42161 - 84640000/1777549921, z, 2)^2)/6250 + (1777549921*root(z^4 +....
Was ist bedeutet z und root? Ich habe eine ganz normale Zahl erwartet. Die gleiche Rechnung habe ich in meinen Taschenrechner auflösen lassen und hab die erwartete Zahl herausbekommen. Daher müsste Matlab dies ja auch können... aber wie?
Gruß,
Alton2
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 06.11.2016, 11:00
Titel: Re: Komisches Ergebnis in Matlab durch solve-Befehl
|
|
Hallo Alton2,
Vielleicht steckt ja ein Bug in Deinem Code. Deshalb wäre es praktisch, wenn Du ein Minimal-Beispiel posten würdest, das das gezeigte Verhalten reproduziert.
Gruß, Jan
|
|
|
Alton2 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.11.2016, 14:12
Titel: Beispiel
|
|
Diese Gleichung soll nach x1 gelöst werden:
-((92*((8*x1)/81 - 8/9)*((92*(1 - ((2*x1)/9 - 2)^2)^(1/2))/25 + 368/125))/(25*(1 - ((2*x1)/9 - 2)^2)^(1/2)) - 8*x1 + 108)/(2*((2*x1 - 27)^2 + ((92*(1 - ((2*x1)/9 - 2)^2)^(1/2))/25 + 368/125)^2)^(1/2))
Das Ergebnis soll 13.0004 ergeben.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.11.2016, 15:26
Titel:
|
|
Hallo,
und welchen Code hast du nun dafür verwendet?
Das Problem dürfte sein, dass solve symbolisch, also exakt zu lösen versucht. Dabei kommen Polynome 4. Grades ins Spiel, und dafür gibt es keine expliziten Formeln.
Wenn du eine Zahl als Ergebnis haben möchtest, versuch mal eine Umwandlung mit
double
oder
eval
, oder eine numerische Lösung mit
fzero
oder
fsolve
.
Grüße,
Harald
|
|
|
Alton2 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.11.2016, 20:58
Titel:
|
|
Danke hat jetzt geklappt.
noch eine Frage. Ich will folgende Gleichung nach x1 auflösen:
Dazu bin ich folgendermaßen vorgegangen:
Dazu gibt er mir keine Lösung raus, weil er anscheinend ins zeitliche unendliche rechnet. Wenn ich die Werte für "xm1 xm2 ym1 ym2 R Ex Ey" vor dem solve Befehl einsetze gibt er mir die Lösung heraus. Ich will aber eine allgemeine Formel für x1.
Wo liegt hier das Problem?
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.11.2016, 22:00
Titel:
|
|
Hallo,
was lässt dich denn annehmen, dass es eine explizite Lösung gibt?
Was hast du davon, wenn du eine Formel bekommst und damit Wände tapezieren kannst?
Grüße,
Harald
|
|
|
Alton2 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.11.2016, 22:08
Titel:
|
|
"was lässt dich denn annehmen, dass es eine explizite Lösung gibt? "
Wenn ich Zahlenwerte einsetze dann funktioniert es ja.
"Was hast du davon, wenn du eine Formel bekommst und damit Wände tapezieren kannst?"
Wenn ich die Formel habe, spare ich mir in meiner aufwendigen Simulation immer wieder das Umformen mit den eingesetzten Werten (würde tausende male durchgeführt werden müssen).
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.11.2016, 22:33
Titel:
|
|
Hallo,
Zitat: |
Wenn ich Zahlenwerte einsetze dann funktioniert es ja. |
Vermutlich aber mit einer numerischen Lösung?
Zitat: |
Wenn ich die Formel habe, spare ich mir in meiner aufwendigen Simulation immer wieder das Umformen mit den eingesetzten Werten (würde tausende male durchgeführt werden müssen). |
Wenn die Formel sehr komplex ist, kann das erneute Lösen sogar schneller sein. Allerdings würde ich dafür
fzero
oder
fsolve
verwenden, denn das numerische Lösen dürfte schneller sein als das symbolische.
Grüße,
Harald
|
|
|
Alton2 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.11.2016, 22:39
Titel:
|
|
fsolve(D1,x1) oder fzero(D1,x1) funktioniert nicht.
-->FZERO requires at least two input arguments or a structure with valid fields.
-->FSOLVE requires the following inputs to be of data type double: 'X0'.
Wie würde man das für meinen Beispiel eingeben?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.11.2016, 23:04
Titel:
|
|
Hallo,
In der Dokumentation findest du viele Beispiele. Insbesondere akzeptieren die beiden Funktionen keine symbolischen Ausdrücke.
Grüße,
Harald
|
|
|
Alton2 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 08.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.11.2016, 19:49
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|