高斯牛顿法做非线性拟合.docx

上传人:b****9 文档编号:96124 上传时间:2022-10-02 格式:DOCX 页数:2 大小:13.43KB
下载 相关 举报
高斯牛顿法做非线性拟合.docx_第1页
第1页 / 共2页
高斯牛顿法做非线性拟合.docx_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

高斯牛顿法做非线性拟合.docx

《高斯牛顿法做非线性拟合.docx》由会员分享,可在线阅读,更多相关《高斯牛顿法做非线性拟合.docx(2页珍藏版)》请在冰豆网上搜索。

高斯牛顿法做非线性拟合.docx

高斯牛顿法做非线性拟合

高斯牛顿算法程序,仅供参考。

clear;clc;

M=1000;

Te=20;

%模型

t=Te*(1:

M)';

loadnoise;%噪音可自己添加

Et1=0.4*exp(-t/50)+0.6*exp(-t/200);

Et2=0.4*exp(-(t/50).^2)+0.6*exp(-t/200);

Et3=0.3*exp(-t/50)+0.4*exp(-t/200)+0.3*exp(-t/800);

Et4=0.3*exp(-(t/50).^2)+0.4*exp(-t/200)+0.3*exp(-t/800);

Et=Et4+noise;

%%

%选择合适的初始值很重要

%p0=[0.5,10,0.5,100];

p0=[0.5,50,0.5,100,0.5,500]';

%迭代过程

fori=1:

M

[J,dF]=GNA(p0,t,Et);

p=p0+(J'*J)\J'*dF;

ifnorm(p-p0)/norm(p0)<1e-6

break;

end

p0=p;

end

disp(p);

fit=p

(1)*exp(-(t/p

(2)).^2)+p(3)*exp(-t/p(4))+p(5)*exp(-t/p(6));

plot(t,Et,t,fit)

xlabel('Measuredtime(\mus)');

ylabel('Amplitude');

title('ModelsVSFitting');

legend('Model','Fitting')

function[J,dE]=GNA(p,t,Et)

%计算Jacobi矩阵和拟合误差

%p为未知参数

p1=p

(1);

p2=p

(2);

p3=p(3);

p4=p(4);

p5=p(5);

p6=p(6);

f=p1*exp(-(t/p2).^2)+p3*exp(-t/p4)+p5*exp(-t/p6);%拟合函数表达式

fp1=exp(-t.^2/p2^2);

fp2=(2*p1*t.^2.*exp(-t.^2/p2^2))/p2^3;

fp3=exp(-t/p4);

fp4=(p3*t.*exp(-t/p4))/p4^2;

fp5=exp(-t/p6);

fp6=(p5*t.*exp(-t/p6))/p6^2;

J=[fp1,fp2,fp3,fp4,fp5,fp6];

dE=Et-f;

计算结果如下:

0.303048.88010.3971198.67670.3057791.1436

仅7次迭代就能出结果,结果精度高,速度非常快。

对比Matlab自带函数nlinfit和lsqcurvefit的计算结果:

Nlinfit:

0.303048.88010.3971198.67680.3057791.1437

Lsqcurvefit:

0.303048.87950.3970198.66150.3057791.1156

三者结果差别很小,计算结果都相当准确。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1