WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

fsolve Problem bei Seillinie

 

kamel
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2012, 20:03     Titel: fsolve Problem bei Seillinie
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


MaFam

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2012, 10:15     Titel:
  Antworten mit Zitat      
Dann versuche doch mal:

Code:
options=optimset('Display','iter', 'Algorithm', 'levenberg-marquardt')
 
kamel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2012, 10:58     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.04.2012, 11:14     Titel:
  Antworten mit Zitat      
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.
Code:
F = [x(1)*cosh(x(2)+x(3)); ...


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2012, 17:55     Titel:
  Antworten mit Zitat      
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?
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.