Как исправить проблему с размерами матрицы при поиске минимума функции - PullRequest
0 голосов
/ 27 марта 2019

У меня есть домашнее задание, где я должен найти минимум функции с помощью метода «Крутой спуск» с постоянным размером шага.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)
...