高斯牛顿迭代求解非线性回归问题

来源:互联网 发布:香港网络电视机顶盒 编辑:程序博客网 时间:2024/04/27 15:35

解决的问题:已知函数:, 数据X=[1.0,2.0,3.0,4.0,5.0]'; Y=[15.0,21.656,27.928,34,39.944]'; 求参数 b c d。该问题属于非线性回归,不能直接使用最小二乘或梯度下降法求解。但可以使用高斯牛顿法迭代求解。

首先将b c d 作为变量泰勒展开得。。。。。。。懒得写了。。。。。代码copy:

clcclear%训练数据x=[1.0,2.0,3.0,4.0,5.0]';y=[15.0,21.656,27.928,34,39.944]';%终止条件,最大迭代次数,收敛精度loop_max =100;%初始值beta=[0.5 1 1]';%停止迭代误差error=4;for i=1:loop_max    xx=x.^beta(1);    y_mao=[x.^beta(1),x,ones(size(x,1),1)]*[3,beta(2),beta(3)]';    y_dif=y-y_mao;    norm(y_dif)    if norm(y_dif)<error        break;    end    %构造系数矩阵    A1=3*log(beta(1))*x.^beta(1);    A2=x;    A3=ones(size(x,1),1);    A=[A1,A2,A3];    %根据最小二乘求改正系数 并更新    beta=beta+inv(A'*A)*A'*y_dif;endireal(beta)




0 1
原创粉丝点击