Вычисление суммы Matlab - PullRequest
       12

Вычисление суммы Matlab

0 голосов
/ 29 сентября 2018

Я пишу линейное регрессионное присваивание в Matlab (y-пересечение фиксировано в начале координат).Мне нужно обновлять значение наклона на каждом шаге итерации.N - количество моих точек данных.Я сделал это внутри цикла for:

for i = 1:numIter
   sum = 0;
   for i = 1:n
      sum = sum + (slope*x(i) - y(i))*x
   end
slope = slope - factor*sum;
end

Моя программа возвращает неверные результаты с ошибкой в ​​несколько процентов, и после выполнения тестовых случаев я пришел к выводу, что один шаг итерации делает неправильную вещь.Я что-то упускаю из виду?Я новичок в численных расчетах в Matlab.

Спасибо за любой вклад.

Редактировать.Что запускается, это

data = load('data.txt');
x = [data(:,1)];
y = [data(:,2)];
slope = 0;
iter = 1000; %number of iterations
factor = 0.1/n; %rate at which we approach the optimum
slope = fit(x, y, slope, factor, iter);

Функция находится в другом файле, и это выглядит так:

function slope = fit(x, y, slope, factor, iter)
n = length (x);
for i = 1:iter
   sum = 0;
      for j = 1:n
         sum = sum + (slope*x(j) - y(j))*x(j)
         % we were given such a formula
      end
   slope = slope - factor*sum;
end
end

Интересно, не проскользнул ли я где-нибудь вокруг взаимодействий.

Правка2.Уравнение для обновления наклона (S).

S_i + 1 = S_i - скорость / n сумма _j = 1 ^ n [(S_i * x_j - y_j) * S_i]

...