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
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.
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.
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
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.
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:
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
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
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.