У меня есть домашнее задание, где я должен найти минимум функции с помощью метода «Крутой спуск» с постоянным размером шага.Matlab показывает мне ошибку
Error using -
Matrix dimensions must agree.
Error in stepfix (line 11)
x=x-s*grad(x1(k),x2(k))/norm(grad(x1(k),x2(k)));
, но я не понимаю, почему у меня проблема с размерами матрицы.
Я пробовал на другом компьютере, и там эта функция и скрипт работали.
Это функция:
function [ out ] = stepfix( fct,grad,x,epsilon )
k=1;
x1(k)=x(1,1);
x2(k)=x(2,1);
s=0.5;
for k=1:50
x=x-s*grad(x1(k),x2(k))/norm(grad(x1(k),x2(k)));
x1(k)=x(1,1);
x2(k)=x(2,1);
end
out=[x1(1:end),x2(1:end)];
plot(x1(k),x2(k),'m');
end
Вот как я вызываю функцию:
syms x1 x2
fct(x1,x2)=x1^2-x2^2+8*x1*x2-x2^4+1;
grad=gradient(f);
grad1=@(x1,x2) [eval(grad(1,1));eval(grad(2,1))];
x=[3;3];
epsilon=0.01;
%%
c=stepfix(fct,grad1,x,epsilon)