| 查看: 774 | 回复: 4 | |||
[求助]
动力学参数拟合matlab程序有问题 已有1人参与
|
| 求大神帮看下程序问题在哪? |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
向大神求教一个用matlab拟合动力学参数的问题,求指导
已经有5人回复
给我大神求教一个用matlab拟合动力学参数的问题,求指导
已经有0人回复
Matlab拟合动力学参数问题,求指导!
已经有9人回复
各位大神能不能帮小弟看看动力学编程的问题
已经有8人回复
matlab 非线性拟合 数据拟合
已经有3人回复
最小二乘 平方和初值小于函数公差的默认值(动力学方程拟合)
已经有3人回复
使用matlab最优化方法拟合获得多个动力学参数中的问题
已经有4人回复
求助1stopt拟合动力学参数
已经有4人回复
Matlab动力学拟合问题!求助!!!!
已经有0人回复
使用lsqnonlin函数优化动力学参数,总是得不到合理的结果
已经有6人回复
matlab 拟合反应动力学参数结果很差。大家帮忙看一下
已经有14人回复
matlab拟合拟均相动力学参数
已经有6人回复
请那位帮我看看这个MATLAB程序那里有问题!先谢谢
已经有2人回复
请那位帮我看看这个MATLAB程序那里有问题!先谢谢
已经有0人回复
【求助】使用Matlab预估动力学方程问题
已经有13人回复

|
程序如下 : function PX4800602 clear all clc global x0 % k0 = [1.8887 0.0036 0.0070 0.7557 0.1455]; % k0 = [4.4163008451 0.0033686022 0.0065669052 1.6201160059 16.2647816]; k0= [ 5.2766233638 0.0030934069 0.0060459974 1.8656945060 20.6241874]; % 参数初值 lb = [0 0 0 0 0]; % 参数下限 ub = [+inf +inf +inf +inf +inf ]; % 参数上限 x0 = [0 0 0 0 0 0]; tspn=[0 43.2 72]; % yexp =[0 0 0 0 0;0.2282 0.2067 0.0057 0.0025 0.0132;0.2394 0.2170 0.0063 0.0037 0.0123; 0.2515 0.2278 0.0069 0.0040 0.0128;0.2638 0.2378 0.0081 0.0043 0.0135;0.2738109 0.2461347 0.0049171 0.011883 0.01087607]; % yexp: 实验数据 % yexp =[0 0 0 0 0;22.81824 20.67075 0.571198 0.253676 1.322614; 23.94047 21.7016 0.633422 0.372055 1.233396;25.14798 22.77878 0.692198 0.39614 1.280859;26.37669 23.78016 0.811828 0.432807 1.351893;27.38109 24.61347 0.8883 0.49171 1.387607]*0.01; % yexp: 实验数据 yexp=[0 0 0 0 0 0; 22.253 20.067 0.340 0.633 1.213 53.06753634; 23.532 21.175 0.385 0.662 1.310 50.31636493]; % yexp=[0 0 0 0 0 0;23.679 21.655 0.421 0.715 0.888 50.9; 24.415 22.131 0.463 0.724 1.096 48.978;25.148 22.580 0.481 0.751 1.336 47.073;26.377 23.580 0.564 0.869 1.364 44.518;27.110 23.948 0.594 1.177 1.392 43; % 15.51 14.1 0.2476 0.545 0.614 67.75;15.78 14.24 0.265 0.6352 0.632 67.18;16.4 14.51 0.292 0.672 0.937 65.32;]*0.01; % yexp: 两个配比 % yexp=[0 0 0 0 0 0;23.679 21.655 0.421 0.715 0.888 50.9; 24.415 22.131 0.463 0.724 1.096 48.978;25.148 22.580 0.481 0.751 1.336 47.073;26.377 23.580 0.564 0.869 1.364 44.518;27.110 23.948 0.594 1.177 1.392 43;] % yexp: 一个配比 % 使用函数lsqnonlin()进行参数估计 [k,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc4LNL,k0,lb,ub,optimset('TolFun',1.0000e-12),x0,yexp); ci = nlparci(k,residual,jacobian) fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n') fprintf('\tk1 = %.10f ± %.7f\n',k(1),ci(1,2)-k(1)) fprintf('\tk2 = %.10f ± %.7f\n',k(2),ci(2,2)-k(2)) fprintf('\tk3 = %.10f ± %.7f\n',k(3),ci(3,2)-k(3)) fprintf('\tk4 = %.10f ± %.7f\n',k(4),ci(4,2)-k(4)) fprintf('\tk5 = %.7f ± %.7f\n',k(5),ci(5,2)-k(5)) % fprintf('\tk6 = %.7f ± %.7f\n',k(4),ci(6,2)-k(6)) fprintf(' The sum of the squares is: %.1e\n\n',resnorm) % ------------------------------------------------------------------ function f = ObjFunc4LNL(k,x0,yexp) tspn=[0 43.2 72]; [t x] = ode45(@KineticEqs1,tspn,x0,[],k); y = x f1 = y(2:3,1) - yexp(2:3,1); f2 = y(2:3,2) - yexp(2:3,2); f3 = y(2:3,3) - yexp(2:3,3); f4 = y(2:3,4) - yexp(2:3,4); f5 = y(2:3,5) - yexp(2:3,5); f6 = y(2:3,6) - yexp(2:3,6); z1=x % -------------------------------------------不同配比的方程组 function dxdt = KineticEqs1(t,x,k) p0=1.3*1; dxdt = ... [(k(1)*(2*p0*(1-x(1))/(19+0.5*x(6)))*(1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6))) (k(1)*(2*p0*(1-x(1))/(19+0.5*x(6)))*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))-2*(k(2)+k(3))*p0*x(2)/(19+0.5*x(6))-2*k(4)*p0*x(2)/(19+0.5*x(6))*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))) (2*k(2)*p0*x(2)/(19+0.5*x(6))-2*k(4)*p0*x(3)/(19+0.5*x(6))*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))) (2*k(3)*p0*x(2)/(19+0.5*x(6))-2*k(4)*p0*x(4)/(19+0.5*x(6))*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))) (k(4)*(2*(x(2)+x(3)+x(4))*p0/(19+0.5*x(6)))*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))) (2*k(5)*((1-2*x(1)-2*x(5)-x(6))*p0/(19+0.5*x(6)))^2) ]; |

2楼2015-10-10 13:49:42
|
??? Error using ==> feval Output argument "f" (and maybe others) not assigned during call to "C:\Users\cai\Desktop\Matlab模拟\PX程序\PX新动力学\拟合程序\PX480602.m>ObjFunc4LNL". **********错误提示***************** Error in ==> lsqnonlin at 203 initVals.F = feval(funfcn{3},xCurrent,varargin{:}); Error in ==> PX480602 at 30 [k,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc4LNL,k0,lb,ub,optimset('TolFun',1.0000e-12),x0,yexp); Caused by: Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue. |

3楼2015-10-10 13:50:13
月只蓝
主管区长 (职业作家)
-

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

4楼2015-10-10 14:35:18

5楼2015-10-18 16:59:01












回复此楼