解决的问题:已知函数:, 数据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:
clc
clear
%训练数据
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_di