




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最小二乘法:%递推公式,更新p0=p2;for n=2:N-1%递推最小二乘法 K0=p0*X(n,:)*inv(1+X(n,:)*p0*X(n,:);%计算 Theta_abs=Theta_abs+K0*(Y(n)-X(n,:)*Theta_abs);%计算估计值Theta; p3=p0-K0*X(n,:)*p0;%计算P p0=p3; %误差平方和最小 Y1=X(n,:)*Theta_abs;%递推值 J=(Y(n,:)-Y1)*(Y(n,:)-Y1) if (J0:收敛 0:函数调用次数或迭代次数达到最大值(该值在options中指定) 0:不收敛5) out: 包含以下数据的一个结构变
2、量 funcCount 函数调用次数 iterations 实际迭代次数 cgiterations 实际PCG迭代次数(大规模计算用) algorithm 实际使用的算法 stepsize 最后迭代步长(中等规模计算用) firstorderopt 一阶最优条件满足的情况(大规模计算用)6) lam:上下界所对应的Lagrange乘子7) jac:结果(x点)处的雅可比矩阵输入参数其中输入变量的含义为: x0为初始解(缺省时程序自动取x0=0) t,y: 拟合数据 v1,v2: 参数待求x的上下界 options:包含算法控制参数的结构LineSearchType 线搜索方法(cubicpol
3、y,quadcubic(缺省值)opt=optimset(oldopts,newopts)可以设定的参数比较多,对lsqnonlin和lsqcurvefit,常用的有以下一些参数:Diagnostics 是否显示诊断信息( on 或off)Display 显示信息的级别(off , iter , final,notify)LargeScale 是否采用大规模算法( on 或off)缺省值为onMaxIter 最大迭代次数TolFun 函数计算的误差限TolX 决策变量的误差限Jacobian 目标函数是否采用分析Jacobi矩阵(on ,off)MaxFunEvals 目标函数最大调用次数Le
4、venbergMarquardt 搜索方向选用LM法(on), GN法(off,缺省值)LineSearchType 线搜索方法(cubicpoly,quadcubic(缺省值)LargeScale: on | off LevenbergMarquardt: on | off 例子1用matlab实现对1 首先编写m文件function f =lsq(x,xdata)f=x(1)*sin(xdata)+0.5*x(2)*sin(2*xdata)./(1-x(2)2*sin(xdata).2).0.52 利用lsqcurvefit函数调用m文件m=4;k=0.4o=0:0.01*pi:2*pi;
5、xdata=o;ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k2*sin(o).2).0.5;x0 = 0; 0;x,resnorm = lsqcurvefit(lsq,x0,xdata,ydata)结果得到:x(1)= 4.0000;x(2)=0.4000;resnorm = 6.3377e-0162 nlinfitm=4;k=0.4;o=0:0.005*pi:2*pi;xdata=o;ydata=m*sin(o)+0.5*k*sin(2*o)./(1-(k2*sin(o).2).0.5;x0 = 0; 0;beta = nlinfit(xdata,ydata,ls
6、q,x0)例子1.1 用fminunc函数;k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);x,fr = fminunc(F,0 0 0)x,fr = fminsearch(F,1 1 1)例子1.2 用遗传算法的参数识别k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =
7、(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);x,fval = ga(F,3,10;1;8, 20;10;15)%ee=norm(E);%使用差平方和最小原则;或者使用sum(abs(E);%ee=norm(E)/sqrt(n);%使用rms准则例子1.3 利用multistart方法k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata
8、)-ydata);ms=MultiStart;opts=optimset(Algorithm,interior-point, LargeScale,off);problem=createOptimProblem(fmincon,x0,10,1,8,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,200)例子1.4 利用globalsearchk1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*
9、xdata)+k3*sin(xdata);F =(x)norm(x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata);gs = GlobalSearch(Display,iter);opts=optimset(Algorithm,interior-point);problem=createOptimProblem(fmincon,x0,10,1,8,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xming,fming,flagg,outptg,manyminsg = run(gs,problem)例子1.5
10、 利用multistart和lsqcurvefitk1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);ms=MultiStart;opts=optimset(Algorithm, trust-region-reflective);problem=createOptimProblem(lsqcurvefit,x0,10,1,8,xdata,xdata, ydata,ydata,objective,myfun,lb,1,0,1,ub,20,10,15,options,opts);xminm,fmin
11、m,flagm,outptm,manyminsm=run(ms,problem,100)function y=myfun(x,xdata)y=x(1).*exp(x(2).*xdata)+x(3).*sin(xdata);例子1.6利用multistart和lsqnonlin(8s)k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+k3*sin(xdata);F =(x)x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata;ms=MultiStart;opts=optimset(Al
12、gorithm, trust-region-reflective);problem=createOptimProblem(lsqnonlin,x0,10,1,8,xdata,xdata, ydata,ydata,objective,F,lb,1,0,1,ub,20,10,15,options,opts);xminm,fminm,flagm,outptm,manyminsm=run(ms,problem,100)1.7 利用matlabpool parallel加速tic;k1=13;k2=1.3;k3=9.1;xdata=0:pi/100:pi;ydata= k1*exp(k2*xdata)+
13、k3*sin(xdata);F =(x)x(1).*exp(x(2).*xdata)+x(3).*sin(xdata)-ydata;ms=MultiStart(Display,iter,UseParallel,always);opts=optimset(Algorithm, trust-region-reflective);matlabpool open 2problem=createOptimProblem(lsqnonlin,x0,10,1,8,xdata,xdata, ydata,ydata,objective,F,lb,1,0,1,ub,20,10,15,options,opts);x
14、minm,fminm,flagm,outptm,manyminsm=run(ms,problem,100)time=toc;%47.3541s函数模型 function y=myfun(x,xdata)y=x(1)*exp(x(2).*xdata)+x(3)*sin(xdata);例子2(多输入变量)function F=myfun(k,xdata)F = k(1)*xdata(:,1)+k(2)*xdata(:,2)+k(3)*xdata(:,3);xdata = 3.6 7.7 9.3; 4.1 8.6 2.8; 1.3 7.9 10.0ydata = 16.5 150.6 263.1k0
15、 = 0,0,0x,resnorm=lsqcurvefit(parameter_identification,k0,xdata,ydata)例子3 (带参数限制条件的)M函数:function F = myfun(k,xdata)F = k(1)*exp(k(2)*x)+k(3)*sin(x);Workspace 代码:k1=13;k2=1.3;k3=9.1;x=0:pi/100:pi;y = k1*exp(k2*x)+k3*sin(x);k0=-1,-1,-1k,resnorm=lsqcurvefit(myfun,k0,x,y,5,0.1,2,20,8,15)结果k = 13.0000 1.3000 9.1000例子3 lsqnonlin%编写M文件: function E = myfun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024微生物检测经验分享试题及答案
- 项目质量保证流程的各个环节试题及答案
- 项目预算制定的试题及答案
- 细菌与病毒的区别试题及答案
- 筛选耐药菌的方法与流程试题及答案
- 项目管理考试技能提升试题及答案
- 证券从业资格证的思维导图试题及答案
- 2024年项目管理资格考试的知识回顾试题及答案
- 2025年会计风险控制方法试题及答案
- 纸品生命周期评估考核试卷
- 电梯日管控、周排查、月调度内容表格
- 新能源电动汽车技术简介
- 天融信运维安全审计系统V3
- 《校本研修》课件
- 《医疗人文关怀》课件
- 教学勇气:漫步教师心灵
- 社团语言学习法课件
- 卷料加工中的跑偏与纠偏控制
- 波纹钢装配式检查井通用技术规范
- 当代学前儿童家庭教育的问题与对策研究 论文
- 小学语文五年下册《习作:形形色色的人》说课稿(附教学反思、板书)课件
评论
0/150
提交评论