|
|
Nichtlineares Gleichungssystem |
|
cubalibre |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 05.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.07.2011, 12:51
Titel: Nichtlineares Gleichungssystem
|
|
Hallo miteinander,
ich habe folgendes Probem: ich habe drei Unbekannte und drei Gleichungen von denen zwei jedoch nicht linear sind.
Gegeben sind folgende Variablen:
A_1=2.0*10^-3
A_2=2.86*10^-4
A_3=1.23*10^-3
A_M_1=7.74*10^-4
A_M_2=A_2
p_1=20000
p_2=0
ro=860
Die Gleichungen lauten:
I) p_1 +ro/2+v_1^2=p_2+ro/2*v_2^2+p_3+ro/2*v_3^2
II) A_1*v_1=A_2*v_2+A_3*v_3
III) A_3*v_3^2=(A_1-A_M_1)*v_1^2
Wie kann ich die Unbekannten v_2; v_3 und p_3 am besten mit Matlab berechen lassen? Mit einer normalen Matrix funktioniert es gaube ich ja nicht mehr da nicht linear oder? Das Problem ist dies ist eine vereinfachte Darstellung meines Problems. Normalerweise sind es 12 Gleichungen mit zwölf Unbekannten
Kann mir jemand helfen? ich bin echt langsam am verzweifeln...
|
|
|
|
|
Coja |
Forum-Century
|
|
Beiträge: 166
|
|
|
|
Anmeldedatum: 20.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.07.2011, 21:49
Titel:
|
|
Hallo,
ich weis nicht ob man das mit
lösen kann. Du hast für v_3 keinen Wert angegeben...das ist mind. eine Unbekannte zuviel oder du musst auf
verwenden, wobei hierfür die Anpassung an Messdaten erfolgen kann.
Gruß Coja
|
|
|
cubalibre |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 05.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.07.2011, 11:26
Titel:
|
|
aber ich habe doch drei Gleichungen mit drei Unbekannten (wo v_3 auch mit dabei ist) also sollte es doch zu lösen sein oder versteh ich da grad was falsch?
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2011, 10:59
Titel:
|
|
Hallo,
im Prinzip musst Du "nur" das Gleichungssystem umstellen in die Form F(X)=0.
Allerdings wird das hier nicht so funktionieren, da v_1 fehlt. Ich hoffe aber, die Idee ist klar (aus Gleichung I wird einfach
p_1 +ro/2+v_1^2 - (p_2+ro/2*v_2^2+p_3+ro/2*v_3^2) = 0
usw.
Und: wichtig ist natürlich ein vernünftigerer Startwert als [0;0;0] ...
Titus
|
|
|
Schwabe12345 |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 02.06.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2014, 10:25
Titel:
|
|
Hallo zusammen,
ich habe das Beispiel aus diesem Threat auf meine Anwendung zugeschnitten. Folgender Code liegt meinem Problem zu grunde:
Als Fehler erhalte ich (auch nach clear) folgenden Text:
Attempted to access x(2); index out of bounds because numel(x)=1.
Error in Loesung/myf (line 14)
z = x(2);
Error in fsolve (line 218)
fuser = feval(funfcn{3},x,varargin{:});
Error in Loesung (line 10)
x = fsolve(@myf,[0;0;0]);
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
Was mache ich falsch?
Vielen Dank im Voraus!
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2014, 11:30
Titel:
|
|
Innerhalb der Funktion myf wird x überschrieben. Ich denke das ist so nicht beabsichtigt.
viele Grüße
Thomas
|
|
|
Schwabe12345 |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 02.06.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2014, 12:21
Titel:
|
|
Hallo und danke!
Ich habe zusätzlich vor dem fsolve Befehl das x in xs getauscht.
Folgender Code liegt nun vor:
Läuft komischerweise trotzdem nicht. Auch wenn ich die Änderung rückgängig mache, also x = fsolve (@myf,[0;0;0]) stehen lasse.
Für eure Hilfe jetzt schon besten Dank!
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2014, 13:57
Titel:
|
|
bei mir läufts. Welche Fehlermeldung/Problem kommt denn bei dir?
viele Grüße
Thomas
|
|
|
Schwabe12345 |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 02.06.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2014, 14:06
Titel:
|
|
Hallo Thomas,
Fehlermeldung kommt direkt keine, aber mein Workspace bleibt leer und ich kann auch die Ergebnisse nicht abrufen.
Wenn ich z. B. xs(1) eingebe kommt
"Undefined function 'xs' for input arguments of type 'double'."
Wie rufe ich die Ergebnisse ab?
Vielen Dank und schöne Grüße!
P.S. Soll ich eigentlich x vor fsolve oder xs vor fsolve verwenden?
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.06.2014, 07:34
Titel:
|
|
Wenn du eine Funktion mit function definierst musst du die Rückgabewerte mit angeben. In diesem Fall x. Aufrufen tust du die Funktion dann mit "x = mysolve". Lies dir am besten nochmal ein Tutorial dazu durch.
viele Grüße
Thomas
|
|
|
|
|
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.
|
|