高斯牛頓迭代求解非線性迴歸問題

解決的問題:已知函數:, 數據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_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;
end
i
real(beta)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章