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

NIchtlineare Gleichung lösen

 

dio
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2013, 17:22     Titel: NIchtlineare Gleichung lösen
  Antworten mit Zitat      
Hallo,

erstmal echt tolles forum hier. Bin seit kurzem an Matlab dran und versuche hier fleißig zu stöbern.

Aktuell möchte ich folgendes Problem Lösen:

gesucht sind die Werte um die Gleichung zu lösen.

Code:
x0 = [-1];           % Make a starting guess at the solution
                            options=optimset('Display','iter','TolFun',1e-12,'Algorithm',{'levenberg-marquardt',.1});   % Option to display output
                            b=4*10^(-3);
                            J=0.1;
                            D=2; % Seigung hir: Annahme der Steigung 2
                       
                            [x,fval] = fsolve(@myfun,x0,options, b,J,D);




die zugehörige FKT ist:

Code:
function F = myfun(x,b,J, D)


F = [((-1)*b/x/4*D/sinh(x)*(2*cosh(x)+1/x*(sinh(-x)-sinh(x)))-J)];
 


Das Problem ist, dass ich hier ein ungenaues Ergebnis erhalte.
Durch wieder einsetzen erhalte ich einen falschen Wert.

Eigentlich sind die Parameter b, J, D gegeben.
Wenn ich das berechnete x in (-1)*b/x/4*D/sinh(x)*(2*cosh(x)+1/x*(sinh(-x)-sinh(x))) erhalte ich aber nicht den Wert von J.


Kann ich irgendwie anders das Problem lösen.

Habt Ihr Vorschläge wie ich das Problem lösen sollte.

Besten Dank.

Gruss,

daniel
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2013, 19:56     Titel:
  Antworten mit Zitat      
Hallo,

Plotte die Funktion mal von -2000 bis 2000. Die Funktion ist immer < -0.1 und nähert sich gegen +/- unendlich an -0.1 an. Wenn es also keine Nullstelle gibt, kann fsolve natürlich auch keine finden - und genau das besagt auch die Meldung:
Zitat:

No solution found.

fsolve stopped because the relative size of the current step is less than the
default value of the step size tolerance, but the vector of function values
is not near zero as measured by the selected value of the function tolerance.


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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2013, 13:52     Titel:
  Antworten mit Zitat      
OK danke schaue mir das mal an.

Noch eine Frage. Habe gerade das integral von
jm=\int_(-b/2)^b/2  \! J1 (x) \, dx gebildet
mit J1(x) =-D*(cosh(A)-coshAx/(b/2))/(A/(b/2)*sinh(A))

und bin auf folgendes gekommen
 jm=-D*b/4/A/sinh(A)*(2*cosh(A)+1/A*(sinh(-A)-sinh(A)))


kann mir das jemand bestätigen.

Besten dank .
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.06.2013, 14:47     Titel:
  Antworten mit Zitat      
Hallo,

die Gleichungen werden leider nicht richtig dargestellt.
Du kannst die Integrale mit der Symbolic Math Toolbox leicht selbst berechnen:

Code:
syms A b D x
int( ..., x)


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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2013, 12:40     Titel:
  Antworten mit Zitat      
Ok besten Dank schon fuer eure Hilfe.

Weiterhin habe ich ein erweitertes Problem.

ich habe Messdaten (polarisationen) die ich in ydata speicher.
weiter habe ich die zugehoerigen xdata (Probenbreiten).
In meiner Funktion gibt es 2 unbekannte: d, a

Grenzbereiche sind leider nicht bekannt.

xdata = [4 15 30 60 120 ];
ydata= [ 0.100000000000000 0.390000000000000 0.870000000000000 1.020000000000000 1.1 ];

wenn ich nun das ganze loese mit
x0 = [-5; 1] % Starting guess
options = optimset('TolFun',1e-18,'Algorithm',{'levenberg-marquardt',.1} ,'Display','off');
[x,resnorm] = lsqcurvefit(@myfun2,x0,xdata,ydata);

wobei die funktion so aussieht:

function F = myfun2(x,xdata)
b=xdata*1%^(-3)
d=x(1)
a=x(2)
F= (-d)/a/(sinh(a)*2)*(b*(cosh(a))-b/2/a*(sinh(a))+ b/a/2*(sinh(-a)));


erhalte ich 2 Werte fuerr d und a die mir aber bei der Kontrolle einsetzen in die Formel ) deutliche Abbweichungen von ydata ergeben.

Hat hier jemand einen Tip, wie ich mich einer besseren loesung annaehern kann.

Gruss und danke fuer die Geduld und Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.06.2013, 14:35     Titel:
  Antworten mit Zitat      
Hallo,

ein Problem sehe ich auf den ersten Blick:
% leitet außerhalb eines Strings Kommentare ein. Das wird im Editor auch in grün gekennzeichnet. Die folgende Zeile ist also wohl nicht so gedacht:

Code:
b=xdata*1%^(-3)

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2013, 16:28     Titel:
  Antworten mit Zitat      
ist auch so gedacht , wurde auskommentiert
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.06.2013, 14:26     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mir das Modell genauer angesehen: alle Terme und damit das gesamte Modell sind linear in b und damit in xdata. Egal welche Werte du für die Parameter vorgibst, es entsteht also immer eine Gerade - und viel besser kann man eine Gerade hier nicht anpassen.

Vielleicht ein Fehler in der Modellfunktion?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.