高斯牛顿法----MATLAB实现

一次作业:参考于下面这个博客:https://blog.csdn.net/zhubaohua_bupt/article/details/74973347
感觉这个博客写的是真的不错。
高斯牛顿法----MATLAB实现_第1张图片
高斯牛顿法----MATLAB实现_第2张图片
高斯牛顿法----MATLAB实现_第3张图片
高斯牛顿法----MATLAB实现_第4张图片

function Guassian
tic;
format short
a = 10*rand()*rand(1000,10);
b = 10*rand()*rand(1000,1);
x = 10*rand()*rand(10,1);
error_init = 1e-17;
k = 0;%迭代次数
error_data = 0;
while 1
    k = k + 1;
    f = a*x - b;
    x_new = x - inv(a'*a)*a'*f;
    error = ( (x_new - x)'*(x_new - x) )^(1/2);
    error_data = [error_data error];
    if(error < error_init)
        break;
    end
    x = x_new;
end
figure
hold on;box on;
plot(error_data,'-r*');
legend('拟合误差')
xlabel('时间s')
ylabel('误差')
disp(error);
disp(k);
toc;
end

你可能感兴趣的:(机器学习)