|
|
fsolve Problem bei Seillinie |
|
kamel |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 25.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.04.2012, 20:03
Titel: fsolve Problem bei Seillinie
|
|
|
|
|
Hallo zusammen,
ich benötige ein wenig Hilfe.
Ich soll ein Kurve eines Seils, an welchem ein Gewicht hängt beschreiben.
Den mathematischen Ansatz habe ich bereits. Allerdings benötige ich Hilfe bei der Programmierung der fsolve-Funktion. Kann mir da jemand weiterhelfen?
Folgendes habe ich bisher programmiert:
Beschreibung der Bedingungen der Kurve:
function F = myfun(x)
F(x) = [x(1)*cosh(x(2)+x(3));
x(1)*cosh((0.85/x(1))+x(4))+x(5)-0.3;
x(1)*cosh((x(6)/x(1))+x(2))+x(3)-x(1)*cosh((x(6)/x(1))+x(4))-x(5);
x(1)*sinh((x(6)/x(1))+x(2))+1-x(1)*sinh((x(6)/x(1))+x(4));
sqrt(x(1)*(sinh((x(6)/x(1))+x(2))-sinh(x(2))))^2-0.8;
sqrt(x(1)*(sinh((0.85/x(1))+x(4))-sinh((x(6)/x(1))+x(4))))^2-0.2]
Funktion zum Lösen des nicht-linearen Gleichungssystems:
x0 = [1;1;1;1;1;1]; % Make a starting guess at the solution
options=optimset('Display','iter'); % Option to display output
[x,fval] = fsolve(@myfun,x0,options) % Call solver
Als Ergebnis bekomme ich zahlreiche Fehlermeldungen, sodass ich garnicht weiß, wo ich alles mit korrigieren anfangen soll...
EDU>> my
F =
-0.7256
Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle non-square systems;
using Levenberg-Marquardt algorithm instead.
> In fsolve at 303
In my at 4
Subscript indices must either be real positive integers or logicals.
Error in myfun (line 2)
F(x) = [x(1)*cosh(x(2)+x(3));
Error in C:\Program Files (x86)\MATLAB\R2012a
Student\toolbox\shared\optimlib\finDiffEvalAndChkErr.p>finDiffEvalAndChkErr (line
26)
Error in C:\Program Files (x86)\MATLAB\R2012a
Student\toolbox\shared\optimlib\finitedifferences.p>finitedifferences (line 128)
Error in levenbergMarquardt (line 87)
[JAC,~,~,numEvals,evalOK] = finitedifferences(XOUT,funfcn{3},[],[],[],costFun,
...
Error in fsolve (line 404)
[x,FVAL,JACOB,EXITFLAG,OUTPUT,msgData] = ...
Error in my (line 4)
[x,fval] = fsolve(@myfun,x0,options) % Call solver
Da ich noch Neuling bei Matlab bin, wäre es super, wenn mir jemand Tipps geben könnte. Danke schon mal im Voraus.
VG
|
|
|
|
|
MaFam |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2012, 10:15
Titel:
|
|
|
|
kamel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 25.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2012, 10:58
Titel:
|
|
Danke für den Vorschlag.
Eine Aufsplittung des GS in 4 und 2 Gleichungen hat geholfen (warum auch immer?!). Das System konnte nun gelöst werden.
Aber trotzdem Danke für den Tipp.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.04.2012, 11:14
Titel:
|
|
Hallo,
zur Erklärung:
es gab hier eine Warnung (zu Trust-Region) und eine Fehlermeldung
Zitat: |
Error in myfun (line 2)
F(x) = [x(1)*cosh(x(2)+x(3)); ... |
Alles weitere sind nur Informationen, auf welchem Weg es zu dieser Fehlermeldung kam.
Nun brauchst du nur das (x) nach dem F weglassen, und alles funktioniert auch mit den 6 Gleichungen.
Grüße,
Harald
|
|
|
MaFam |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2012, 17:55
Titel:
|
|
Harald hat den eigentlichen Fehler entdeckt. Ich hatte das leider übersehen. Eine Frage zu dem math. Ansatz habe ich noch. Wäre es nicht leichter, die DGL direkt mit einem numerischen Verfahren zu lösen oder machst du dort weiterführende Analysen?
|
|
|
|
|
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.
|
|