1
Ich versuche plotten rosenbrock function
Wie Rosenbrock- Funktion in Matlab
wie diese
clear; clc; close all;
% Parameters
nx = 2; % No. of Input variables
f = @rosenbrock;
limits = repmat([-10 10], nx, 1);
titl = 'Rosenbrock';
% Plot
[X,Y] = meshgrid(linspace(limits(1,1),limits(1,2),100),...
linspace(limits(2,1),limits(2,2),100));
Z = reshape(f([X(:)'; Y(:)']), 100, 100);
surfc(X,Y,Z);
rosenbrock.m
function [y] = rosenbrock(x)
xn = circshift(x',1)';
xn(1) = 0;
y = sum(100*(xn - x.^2).^2 + (x - 1).^2);
end
ich die Implementierung über Funktion kennen zu zeichnen ist nicht richtig. Mit der Schleife kann es leicht gemacht werden, aber mit der Vektorisierung bekomme ich falsche Ergebnisse. Kann jeder Körper helfen?
mit Ihrem Code, erhalte ich diesen Fehler während Funktion umformen aufrufen. 'Um die Anzahl der Elemente zu RESHAPE darf nicht ändern. –
@KarenJohnson Nun, ich benutze nicht' Umformen'. Ich bin mir also nicht sicher, wie Sie meinen Code verwenden. Außerdem gehe ich davon aus, dass die Funktion einen Skalar ausgibt, genau wie bei der Schleifenimplementierung. – Divakar
@KarenJohnson Ist der verknüpfte Loopy-Code in Ihrem Fall anwendbar? Warum teilen Sie nicht den Code, der für Sie funktioniert, dann können wir ihn vektorisieren? – Divakar