|
Marco_gast |

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 15:47
Titel: fsolve Problem
|
 |
hallo,
bei ausführen dieses codes:
bekomme ich folgende fehlermeldung:
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
aufgerufe wird die funktion über x = fsolve(@funktion,x0). Egal welche x0 werte ich eingebe, erhalte ich immer den gleichen Fehler.
kann mir jemand helfen, ich bin echt am verzweifeln
danke
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 16:05
Titel:
|
 |
Hallo
bei F noch zusätzliche Runde Klammern verwenden, ich fürchte hier läuft etwas schief in der Rangabfolge, vielleicht ist das sogar ein Bug in Matlab
so:
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 16:15
Titel:
|
 |
Hallo,
Runde Klammern ? Wo genau bitte?
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 16:21
Titel:
|
 |
Marco_gast hat Folgendes geschrieben: |
Hallo,
Runde Klammern ? Wo genau bitte? |
Habe doch schon in der Code oben gemacht, dann nochmal siehe rote Klammern:
F = [( 0.5 * (ke * x(1)*x(2) * dT)^2 / ((ps0 * ps_y * x(3)*x(2))/x(1))-((UV/100) * P * t) );
( x(1) * x(2) * x(3) * ho_y * cy * dT -(((100-UV)/100) * P * t) )];
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 16:25
Titel:
|
 |
Danke , das wars.
Da muss man erstmal drauf kommen
Ich dachte die Trennung mittels Semikolon ist eindeutig
Ich danke dir
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 16:29
Titel:
|
 |
Hallo,
ich würde der Übersichtlichkeit halber empfehlen, solche Bandwurmbefehle grundsätzlich zu vermeiden.
Wenn bei Anwendung von fsolve ein Fehler in der Funktion auftritt, dann würde ich zunächst mal einen Aufruf mit dem Startwert versuchen:
Das funktioniert dann wahrscheinlich auch noch nicht, das Debuggen ist so aber deutlich einfacher.
Grüße,
Harald
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 18:43
Titel:
|
 |
Hallo,
ich bin nochmal und ich muss den Thread nochmal öffnen.
Ich habe gerade festgestellt, dass die Lösungen x1 x2 x3 die ich erhalte, immer nur bei der ersten Funktion stimmen.
Bei der 2. Funktion stimmen die nicht
kann das jemand bestätigen ?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 20:10
Titel:
|
 |
Hallo,
was meinst du mit der 1. oder 2. Funktion?
V wird, wie der Code Analyzer auch anzeigt, nicht verwendet. Wo ist also der Sinn dieser Berechnung? Oder soll V etwa auf 0 gesetzt werden?
Grüße,
Harald
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 20:20
Titel:
|
 |
ach schei**** ich hätte mir den code nochmal anschauen müssen.
Ja richtig V wird nicht benutz
Nein ich meine die ergebnisse x1 x2 x3. Wenn ich die Gleichung 1:
0.5 * (ke * x(1)*x(2) * dT)^2 / ((ps0 * ps_y * x(3)*x(2))/x(1))-((UV/100) * P * t)
wieder umgestellt nach:
(UV/100) * P * t = 0.5 * (ke * x(1)*x(2) * dT)^2 / ((ps0 * ps_y * x(3)*x(2))/x(1))
einsetze, dann stimmt das Ergebniss. In der zweiten eingesetzt, eben nicht.
Das exitflag ist -2, und sagt aus, wenn ich das richtig verstehe, dass die Lösung nicht an einer Nullstelle konvergiert.
Ist das die Ursache ?
Ich habe auch schon in der hilfe gelesen und Tolfun und TolX geändert. leider nur mit mäßigen Erfolg
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.04.2014, 21:37
Titel:
|
 |
Hallo,
Zitat: |
Ja richtig V wird nicht benutz |
D.h. es kann weggelassen werden?
Zitat: |
Das exitflag ist -2, und sagt aus, wenn ich das richtig verstehe, dass die Lösung nicht an einer Nullstelle konvergiert.
Ist das die Ursache ? |
Genau.
Die Problemstellung ist insofern ungewöhnlich, dass du zwei Gleichungen in drei Unbekannten hast - d.h. es gibt i.d.R. entweder keine Lösung oder unendlich viele. Ist das bewusst so?
Grüße,
Harald
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.04.2014, 08:27
Titel:
|
 |
Guten Morgen Harald
ja V kann weggelassen werden, (typischer copy-paste Fehler meinerseits)
ja leider habe ich nur 2 Gleichungen. Es wäre natürlich schön wenn es unendlich viele Lösungen gäbe, dann könnte ich mir eine passende aussuchen.
Gibt es einen anderen Algorithmus, mit dem ich weiterkomme ?
Danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.04.2014, 09:28
Titel:
|
 |
Hallo,
wenn es überhaupt eine Lösung gibt, dann musst du ausreichend gute Startwerte angeben.
Deine Parameter haben sehr unterschiedliche Größenordnungen, d.h. es kann durchaus sein, dass ein Teil der Gleichung keine numerisch sichtbare Rolle mehr spielt, wenn die Startwerte ungünstig gewählt sind.
Grüße,
Harald
|
|
|
Marco_gast |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 53
|
 |
|
 |
Anmeldedatum: 19.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.04.2014, 09:51
Titel:
|
 |
Ok vielen Dank.
Als Startwerte meinst Du die x0 die ich beim aufruf der Funktion fsolve mit übergebe, richtig?
Ich habe beide Funktion mal einzel getestet. die Lösuingen die sich ergaben, waren immer abhängig von den Startwerten.
m.a.w. Egal welche Startwerte ich angebe es kommen immer andere Lösungen bei raus. Ebenfalls ist das exitflag immer 1 und mit dem immer sehr geringen Fval Wert, heißt das doch das es unendlich viele Lösungen gibt, richtig ?
Die Lösungen liegen immer sehr nah an den Startwerten, wird eine Lösung gefunden wird die Funktion beendet.
Besteht die Möglichkeit einen Bereich anzugeben in dem Lösungen gesucht werden soll ?
Danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.04.2014, 10:24
Titel:
|
 |
Hallo,
Zitat: |
Als Startwerte meinst Du die x0 die ich beim aufruf der Funktion fsolve mit übergebe, richtig? |
Ja.
Zitat: |
Ich habe beide Funktion mal einzel getestet. die Lösuingen die sich ergaben, waren immer abhängig von den Startwerten. |
Es bringt wenig, die Funktionen separat zu testen. Klar ist die Lösung von den Startwerten abhängig, es wird ja die nächstgelegene Lösung gesucht. Dass es bei einer Gleichung mit 3 Unbekannten viele Lösungen gibt, sollte nicht verwundern.
Zitat: |
m.a.w. Egal welche Startwerte ich angebe es kommen immer andere Lösungen bei raus. Ebenfalls ist das exitflag immer 1 und mit dem immer sehr geringen Fval Wert, heißt das doch das es unendlich viele Lösungen gibt, richtig ? |
Ja. Aber eben nur für jede Gleichung für sich genommen.
Zitat: |
Besteht die Möglichkeit einen Bereich anzugeben in dem Lösungen gesucht werden soll ? |
Nicht direkt. Du kannst höchstens norm(f(x)) minimieren und dann fmincon nutzen.
Grüße,
Harald
|
|
|
|
|
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 - 2025
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.
|
|