Ja klar. Die Startparameter für x0 sind ja auch andere.
x0 = [1,1,1,1,1,1]
Jetzt scheint es zu klappen. Ich kann wohl allerdings nur meine berechneten Werte leicht verändern. Wenn ich die Werte etwas anders nehme läuft der Fit gleich wieder völlig daneben.
Hast du eine Idee wie ich es umgehen kann die Zwischengleichungen zu lösen um die Änderung meiner Startparameter nicht selber lösen zu müssen.
Code: Exiting due to infeasibility: 2 lower bounds exceed the corresponding upper bounds.
Sollte es dir auch: bei deinem "weiträumigeren Wertepaar" ist bei den letzten beiden Elementen die untere Schranke größer als die obere. Das geht schlecht.
Das letzte Problem lag dann vor allem an der Anzahl der Startwerte. Wenn du einen Startvektor mit 4 Elementen vorgibst und x(5) extrahierst, geht auch das schlecht.
[quote]Hast du eine Idee wie ich es umgehen kann die Zwischengleichungen zu lösen um die Änderung meiner Startparameter nicht selber lösen zu müssen. [/quote
Das verstehe ich nicht. Grundsätzlich kann aber alles, was du mit Papier und Bleistift machen kannst, auch die Symbolic Math Toolbox für dich erledigen.
Ich darf dich auch noch an die 'TypicalX'-Option erinnern, siehe erster Beitrag.
Ich habe das Intervall nochmal angepasst. Hat da einen Denkfehler. ^^
Leider funktioniert das mit dem neuen Intervall leider auch nicht. Ich würde gerne deinen Tipp umsetzen mit dem TypicalX, allerdings verstehe ich die Option nicht :/
Was mich auch sehr wurmt ist folgendes. Ich habe die Formel mal etwas dünner gestalltet. Es handelt sich ja eh um einen komplexen Ausdruck.
Die Idee ist, dass ich die Startwerte vorgebe, die ja nicht perfekt sein können. Sieht man ja am Fit. Und von dort den Faktor x(i) als Abweichung ausgegeben haben möchte. So muss er nicht mit kleinen Werten rechnen. Dann bekomme ich aber die Meldung:
Zitat:
Initial point is a local minimum.
Optimization completed because the size of the gradient at the initial point
is less than the default value of the optimality tolerance.
Es kann ja wohl kaum sein, dass ich die Perfekten Werte bestimme. Meine Ausgabe der Faktoren ist nämlich
Die Optionen für lsqcurvefit und ihre Beschreibung findest du hier
https://www.mathworks.com/help/opti.....fit.html#inputarg_options
TypicalX gibt an, wie stark einzelne Größen bei der Gradientenbildung variiert werden sollen. In deinem ursprünglichen Beispiel sowas wie [1000, 1, 1e-10, 1e-8].
Den Tip mit dem globalen Minimum oder Maximum finde ich gut. Allerdings kann ich gerade die Hilfe nicht ganz nachvollziehen. In dem Beispiel wird ja mit Startparametern gearbeitet. Bei mir ja auch. Komischerweise ist aber die Konvergenz des Programms auf die Startparameter im Beispiel bezogen. Würde mir ja jetzt nicht viel bringen, da die Startparameter ja optimiert werden sollen.
Bei dem Tip mit typicalX verstehe ich die Syntax leider nicht. Es ist ja nicht so, dass ich micht nicht auf die Suche mach.
Zitat:
Typical x values. The number of elements in TypicalX is equal to the number of elements in x0, the starting point. The default value is ones(numberofvariables,1). The solver uses TypicalX for scaling finite differences for gradient estimation.
Wie ich das jetzt umsetze ist mir doch recht schleierhaft.
fitfcn = @(p,xdata)abs(i*2*pi*p(4)*C_0*xdata+1./(p(1)*R_m+i*(2*pi*p(2)*L_m*xdata-1./(2*pi*p(3)*C_m*xdata))));
rng default % for reproducibility
N = 500; % number of data points
preal = [1,1,1,1]; % real coefficients
xdata = 5*rand(N,2); % data points
ydata = fitfcn(preal,xdata) + 0.1*randn(N,1); % response data with noise
Ich habe aber das gleiche Problem. Der Wert p(3) bzw. p(4) wird nicht angepasst, da sie wohl einfach zu klein sind. Typical x scheint wohl doch der einzige letzte Weg zu sein. Es sei denn du findest einen Fehler in dem oberen Programm. Das wäre ja auch schon klasse. Wenn es dann klappt.
Bitte auch darauf achten, dass optimoptions (Link) und optimset (hier verwendet) unterschiedliche Syntax haben. Wenn du bei optimoptions die Optionen anpassen willst, musst du sie auch mal am Anfang erstellt haben (erster Befehl im Link).
Bitte auch darauf achten, dass optimoptions (Link) und optimset (hier verwendet) unterschiedliche Syntax haben. Wenn du bei optimoptions die Optionen anpassen willst, musst du sie auch mal am Anfang erstellt haben (erster Befehl im Link).
Wenn ich nur die oben zitierte Zeile eingebe, klappt es nicht. Wie definiere ich das vorher? Auch die Syntax mit typicalX ist mir schleirhaft.
Als Tip für die weitere Arbeit:
im Editor ist ein Code-Analyse Tool, das solche Syntaxfehler anzeigt (rotes / oranges / grünes Quadrat in der rechten oberen Ecke). Wenn Probleme erkannt werden, sind rechts auch rote oder orange Balken, auf die man klicken kann.
Zudem sollte die Farbgebung im Editor helfen. Zeichenketten sind immer in purpur. Wenn eine Zeichenkette nicht abgeschlossen ist, erscheint sie dunkelrot.
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.