| 查看: 2961 | 回复: 9 | ||||
飞鸿印雪jay银虫 (小有名气)
|
[求助]
关于非线性最小二乘拟合的问题已有3人参与
|
| 我在matlab中调用这个函数LSQNONLIN,这是非线性最小二乘法,其包含两个算法,trust region reflective and Levenberg-Marquardt,但是我找到的书上是把trust region reflective法归为无约束多维极值问题,百度上还说Levenberg-Marquardt是trust region reflective法的一种?究竟是怎么样的啊? |
» 猜你喜欢
求国际会议网站
已经有1人回复
求取一些关于纳米材料和纳米技术相关的英文PPT。
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有217人回复
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有19人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
26申博推荐:南京航空航天大学国际前沿院光学方向招收博士生!
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助一个超定方程组最小二乘解问题
已经有5人回复
在用nlinfit对非线性函数拟合时遇到的一些问题请教
已经有5人回复
最小二乘解算拟合方程
已经有12人回复
在进行多元非线性拟合的时候,用matlab拟合的值残差都大于0
已经有14人回复
求助用matlab 多元非线性拟合2
已经有21人回复
求用最小二乘拟合时间序列
已经有3人回复
非线性最小二乘,约束优化
已经有11人回复
求助Matlab最小二乘法非线性拟合
已经有4人回复
有没有对非线性拟合结果参数检验的?
已经有3人回复
线性拟合中的问题
已经有9人回复
求助一个逻辑斯蒂函数的拟合
已经有8人回复
matlab非线性拟合求助
已经有7人回复
关于非线性拟合的拟合度的问题
已经有5人回复
求助最小二乘法拟合
已经有4人回复
基于最小二乘互相关算法的图像定位匹配研究 (论文讨论)
已经有8人回复
非线性数据拟合的数学原理!!!!!????
已经有30人回复
关于拟合:同一个方程,非线性拟合与转换后线性拟合
已经有8人回复
非线性最小二乘拟合(初值问题)lsqcurvefit 函数的设定
已经有14人回复
origin进行非线性拟合如何选择函数或者自定义合适的函数
已经有19人回复
最小二乘法非线性拟合的参数误差如何确定?
已经有3人回复
最小二乘拟合 初值 运算时间
已经有12人回复
【求助】Matlab非线性最小二乘拟合活度系数模型(Willson、NRTL、UNIQUAC)
已经有17人回复
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68120.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

2楼2014-08-25 21:15:24
飞鸿印雪jay
银虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 340.5
- 散金: 60
- 帖子: 69
- 在线: 60.3小时
- 虫号: 2338094
- 注册: 2013-03-11
- 性别: GG
- 专业: 生物化工与食品化工
3楼2014-08-27 16:34:40
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68120.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区
【答案】应助回帖
|
你用其中一种算法,看哪种能运行得通。然后说明用了该算法即可。我印象中对于参数有约束的问题,Levenberg-Marquardt不适用,trust region reflective算法适用,在MATLAB中help LSQNONLIN,即可找到相关文献,在论文中引用即可。比如trust region reflective算法的文献: [1] Byrd, R.H., R.B. Schnabel, and G.A. Shultz, Approximate Solution of the Trust Region Problem by Minimization over Two-Dimensional Subspaces, Mathematical Programming, 247-263, 1988。 [2] Steihaug, T , The Conjugate Gradient Method and Trust Regions in Large Scale Optimization, SIAM Journal on Numerical Analysis, 626-637, 1983。 |

4楼2014-08-27 16:58:17
飞鸿印雪jay
银虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 340.5
- 散金: 60
- 帖子: 69
- 在线: 60.3小时
- 虫号: 2338094
- 注册: 2013-03-11
- 性别: GG
- 专业: 生物化工与食品化工
|
还想请教一下,我在用Levenberg-Marquardt算法时,提示Warning: The Levenberg-Marquardt algorithm does not handle bound constraints; using the trust-region-reflective algorithm instead. 好像是说不能有上下界条件,那么我就不定义上下界条件,都改为[]。可以运行,但是拟合出的K值有负值,根据物理意义,不应该有负值。于是我定义下限为0,此时只能用trust region reflective算法,但是这样一来两种算法的结果就很大不同,我不懂哪个是对的?还有就是我如果上下限都为【】时,用Levenberg-Marquardt和trust-region-reflective计算的结果也不同,这是为什么啊? |
5楼2014-08-27 17:09:10
月只蓝
主管区长 (职业作家)
-

专家经验: +1059 - 计算强帖: 8
- 应助: 1712 (讲师)
- 贵宾: 8.888
- 金币: 68120.7
- 散金: 1938
- 红花: 443
- 沙发: 4
- 帖子: 4373
- 在线: 3291.4小时
- 虫号: 1122189
- 注册: 2010-10-14
- 专业: 宇宙学
- 管辖: 计算模拟区

6楼2014-08-27 20:01:09
戴钢盔的猪头
木虫 (知名作家)
- 应助: 200 (高中生)
- 金币: 5083.9
- 散金: 1310
- 红花: 18
- 帖子: 6001
- 在线: 319.9小时
- 虫号: 2854040
- 注册: 2013-12-07
- 性别: GG
- 专业: 波谱分析与成像分析
7楼2014-08-28 08:22:57
飞鸿印雪jay
银虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 340.5
- 散金: 60
- 帖子: 69
- 在线: 60.3小时
- 虫号: 2338094
- 注册: 2013-03-11
- 性别: GG
- 专业: 生物化工与食品化工
|
function six format long clear all clc tspan = [0 5 10 15 20 25 30 35 40 45 50 60 70 80 90 100 110 120]; x0 = [0.625342136 0.4277651 0.105943812 0.025723604 0.068458848 0.024280873]; k0 = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; %初值影响结果和拟合曲线 lb = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; ub = []; options=optimset ('MaxFunEvals',900,'MaxIter', 900,'TolFun',1e-6 ,'TolX',1e-6);% 'Algorithm','levenberg-marquardt' data=[ 0.426497671 0.497339486 0.142025477 0.035090359 0.092890445 0.029854978 0.364294441 0.531501605 0.168117836 0.043136361 0.12057094 0.04928427 0.282498683 0.547077762 0.189668188 0.048822175 0.131956864 0.046858784 0.212605727 0.514167749 0.197954862 0.052949232 0.152963586 0.087585303 0.164747872 0.505213939 0.2149634 0.059265477 0.171651807 0.069189738 0.121489746 0.498609347 0.241653892 0.068929957 0.20397071 0.083896341 0.097513728 0.477379331 0.249727987 0.07289705 0.218884281 0.092080203 0.067200762 0.446186417 0.266194438 0.080524446 0.248121593 0.116558008 0.054994421 0.439029489 0.285465434 0.089772626 0.284305489 0.129282266 0.037566506 0.379466296 0.269368897 0.086289166 0.279633537 0.133442735 0.023114503 0.339137907 0.280855057 0.094689189 0.31863228 0.160250254 0.014416665 0.298370384 0.283002041 0.099613179 0.346807226 0.190914639 0.008962296 0.252702001 0.270900503 0.099468657 0.362646478 0.211507797 0.004440918 0.205484131 0.258866251 0.100635933 0.384374958 0.233976586 0.003384414 0.17228843 0.245343436 0.100783129 0.408520669 0.270125675 0.001097832 0.126954121 0.21601133 0.094095289 0.405977951 0.287462314 0.000364687 0.104930458 0.197777161 0.090126427 0.404440384 0.275667765 ]; yexp = data(:,1:6); [k,resnorm,residual,exitflag,output,lambda,jacobian] =... lsqnonlin(@ObjFunc,k0,lb,ub,options,tspan,x0,yexp); %非线性最小二乘 ci = nlparci(k,residual,jacobian); %参数的置信区间,置信区间越窄越好 fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n') fprintf('\tk(1) = %.9f ± %.9f\n',k(1),ci(1,2)-k(1)) fprintf('\tk(2) = %.9f ± %.9f\n',k(2),ci(2,2)-k(2)) fprintf('\tk(3) = %.9f ± %.9f\n',k(3),ci(3,2)-k(3)) fprintf('\tk(4) = %.9f ± %.9f\n',k(4),ci(4,2)-k(4)) fprintf('\tk(5) = %.9f ± %.9f\n',k(5),ci(5,2)-k(5)) fprintf('\tk(6) = %.9f ± %.9f\n',k(6),ci(6,2)-k(6)) fprintf('\tk(7) = %.9f ± %.9f\n',k(7),ci(7,2)-k(7)) fprintf('\tk(8) = %.9f ± %.9f\n',k(8),ci(8,2)-k(8)) fprintf('\tk(9) = %.9f ± %.9f\n',k(9),ci(9,2)-k(9)) fprintf('\tk(10) = %.9f ± %.9f\n',k(10),ci(10,2)-k(10)) fprintf('\tk(11) = %.9f ± %.9f\n',k(11),ci(11,2)-k(11)) fprintf('\tk(12) = %.9f ± %.9f\n',k(12),ci(12,2)-k(12)) fprintf('\tk(13) = %.9f ± %.9f\n',k(13),ci(13,2)-k(13)) fprintf('\tk(14) = %.9f ± %.9f\n',k(14),ci(14,2)-k(14)) fprintf('\tk(15) = %.9f ± %.9f\n',k(15),ci(15,2)-k(15)) fprintf('The sum of the squares is: %.9e\n\n',resnorm) fprintf('The value of the exitflag is: %.9e\n\n',exitflag) output function f = ObjFunc(k,tspan,x0,yexp) % 目标函数 [t, Xsim] = ode45(@KineticsEqs,tspan,x0,[],k); %四阶,五级Runge-Kutta单步算法 Xsim1=Xsim(:,1); Xsim2=Xsim(:,2); Xsim3=Xsim(:,3); Xsim4=Xsim(:,4); Xsim5=Xsim(:,5); Xsim6=Xsim(:,6); ysim(:,1) = Xsim1(2:end); ysim(:,2) = Xsim2(2:end); ysim(:,3) = Xsim3(2:end); ysim(:,4) = Xsim4(2:end); ysim(:,5) = Xsim5(2:end); ysim(:,6) = Xsim6(2:end); size(ysim(:,1)); size(ysim(:,2)); size(ysim(:,3)); size(ysim(:,4)); size(ysim(:,5)); size(ysim(:,6)); size(yexp(:,1)); size(yexp(:,2)); size(yexp(:,3)); size(yexp(:,4)); size(yexp(:,5)); size(yexp(:,6)); R2=1-sum((ysim-yexp).^2)./sum((mean(ysim)-yexp).^2); fprintf('\n\t决定系数R-Square = %.6f',R2); f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3)) (ysim(:,4)-yexp(:,4)) (ysim(:,5)-yexp(:,5)) (ysim(:,6)-yexp(:,6))];% %拟合结果标绘 plot(tspan(2:end),yexp(:,1),'bx',t,Xsim(:,1),'b-',tspan(2:end),yexp(:,2),'bx',t,Xsim(:,2),'b-',tspan(2:end),yexp(:,3),'bx',t,Xsim(:,3),'b-',tspan(2:end),yexp(:,4),'bx',t,Xsim(:,4),'b-',tspan(2:end),yexp(:,5),'bx',t,Xsim(:,5),'b-',tspan(2:end),yexp(:,6),'bx',t,Xsim(:,6),'b-') xlabel('time(min)') ylabel('concentration(mg/mL)') legend('cAexp','cAcal','cBexp','cBcal') %,'cDexp','cDcal','cEexp','cEcal','cFexp','cFcal' function dCdt = KineticsEqs(t,C,k) % ODE模型方程 dCAdt =-(k(1)+k(2)+k(3)+k(4)+k(5))*C(1); %注意负号不能少!!! dCBdt =k(1)*C(1)-(k(6)+k(7)+k(8)+k(9))*C(2); dCCdt =k(2)*C(1)+k(6)*C(2)-(k(10)+k(11)+k(12))*C(3); dCDdt =k(3)*C(1)+k(7)*C(2)+k(10)*C(3)-(k(13)+k(14))*C(4); dCEdt =k(4)*C(1)+k(8)*C(2)+k(11)*C(3)+k(13)*C(4)-k(15)*C(5); dCFdt = k(5)*C(1)+k(9)*C(2)+k(12)*C(3)+k(14)*C(4)+k(15)*C(5); dCdt = [dCAdt; dCBdt;dCCdt;dCDdt;dCEdt;dCFdt]; % 我想将R2算出来,但是计算时提示维数不对,改了半天,但是还是改不出来,麻烦大神给看下。还有对我的这个程序,大神能不能帮忙看下有什么地方还能修改的?希望能提出宝贵意见。由于参数多于方程,我一直担心拟合的多值问题。不知道拟合到什么程度算是达到标准了?我试过将算出的k值带入,返算各个C的值,任有部分c值的平均误差大于10%,这是我返算后得到的相对误差。(-12.39% -4.19% -4.26% -11.89% -3.83% -6.72%)不知道还能怎么改进了。 还有k的初值,是不是用1stop跑下才能定比较好呢?谢谢大神!!! |
8楼2014-08-29 18:24:28
dingd
铁杆木虫 (职业作家)
- 计算强帖: 4
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.5小时
- 虫号: 291104
- 注册: 2006-10-28
【答案】应助回帖
★ ★ ★ ★ ★
飞鸿印雪jay: 金币+5, ★★★很有帮助 2014-08-30 15:59:09
飞鸿印雪jay: 金币+5, ★★★很有帮助 2014-08-30 15:59:09
|
你的tspan数据是18项,data数据里只有17项,是否是维数不对的原因? 1stOpt求解: 均方差(RMSE):0.0117362257945764 残差平方和(SSE):0.0132229436065228 相关系数(R): 0.975470953559367 相关系数之平方(R^2): 0.951543581238022 确定系数(DC): 0.931561811072389 F统计(F-Statistic): 6.71001796921087 参数 最佳估算 -------------------- ------------- k1 0.0418596441571267 k2 2.79667520548361E-15 k3 0.00417748060126059 k4 9.1607798493403E-17 k5 0.002587391875802 k6 0.0129169740911302 k7 6.28738094929527E-27 k8 0.00711557400407817 k9 4.45038192613903E-19 k10 0.00176044626727443 k11 0.00588665699827607 k12 0.00711101883579135 k13 3.65140745025477E-18 k14 5.96964429169975E-15 k15 0.00230341081562437 |
9楼2014-08-29 22:53:02
飞鸿印雪jay
银虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 340.5
- 散金: 60
- 帖子: 69
- 在线: 60.3小时
- 虫号: 2338094
- 注册: 2013-03-11
- 性别: GG
- 专业: 生物化工与食品化工
10楼2014-08-30 15:58:41













回复此楼