Мой код градиента приличный не работает. Я не понимаю, где я делаю что-то не так
close all;
clear all;
clc
xx=linspace(0,10,100);
y=xx.^3+rand(1,100)*10;
subplot(1,2,1);
plot(xx,y,'.');
hold on
x0=ones(1,100);
x1=xx;
x1=x1;
x2=xx.^2;
x2=x2;
x3=xx.^3;
x3=x3;
X = [(x0);
(x1);
(x2);
(x3);
];
X=X';
y=y';
alpha=.00001;
m=100;
n=4;
iteration=30000;
J=zeros(iteration,1);
theta=zeros(n,1);
for itr=1:iteration
temp=zeros(n,1);
for i=1:n
temp(i)=sum((X*theta-y).*X(:,i))*alpha*1/m;
end
theta=theta-temp;
J(itr)=sum((X*theta-y).^2);
end
Y=theta(1)+theta(2)*x1+theta(2)*x2+theta(3)*x3;
plot(xx,Y);
subplot(1,2,2);
plot(J);

Левый - это кривая справа, один - кривая функции стоимости. Функция стоимости сходится быстрее .Если я увеличиваю число выходных данных функции стоимости итерации, остается неизменным, но измененная кривая изменяется. Но если я делаю это,
temp(i)=sum((X*theta-y))*alpha*1/m;
код просто отлично работает.
