Ich bin Matlab völlig neu und ich hatte einige Probleme mit meinem Code.Minimalisierer in Matlab mit 'fsolve' numerisch finden
Ich brauche 'fsolve', um Minimizer zu einem nichtlinearen Optimierungsproblem zu finden, aber ich kann es nicht zum Laufen bringen. Ich habe den 'Lösungsprozess des nichtlinearen Systems' Teil von mathworks verwendet.
Mein Code ist folgende:
function F = myfun(x)
F = [4*x(4) + 2*x(1) - x(3)*(2*x(1) + 4) + 4*x(1)*(x(1).^2 + x(2) - 11) + 2*x(2).^2 - 14;
x(3) - 10*x(4) + 2*x(2) + 4*x(2)*(x(2).^2 + x(1) - 7) + 2*x(1).^2 - 22;
x(2) - (x(1) + 2).^2;
4*x(1) - 10*x(2);];
x0 = [-5;-5];
options = optimoptions('fsolve','Display','iter');
[x,fval] = fsolve(@myfun,x0,options);
end
Wo es das sagt; der Wert, der x zugewiesen wurde, scheint nicht verwendet zu werden; nicht genug Eingabeargumente Aber gemäß der MathWorks-Seite habe ich genau dasselbe gemacht wie sie, also bin ich jetzt irgendwie verloren.
Die Funktion F = 'myfun (x)' sollte nur enthalten den 'F = [...]' Teil. Es ist eine Funktion, die einen Vektor "x" nimmt und den Wert Ihrer Kostenfunktion zurückgibt. Die letzten drei Zeilen definieren einen Anfangspunkt x0 und einige Optionen vor dem Aufruf von fsolve. Dies sollte außerhalb der Funktion geschehen. Sonst würde sich die Funktion selbst aufrufen. Erstellen Sie ein Skript, das die letzten drei Zeilen enthält, und sehen Sie, was das bedeutet. – Florian