24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 838  |  回复: 4

你的CEO

铁虫 (小有名气)

[求助] 动力学参数拟合matlab程序有问题 已有1人参与

求大神帮看下程序问题在哪?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

未来为你而来!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

你的CEO

铁虫 (小有名气)

程序如下 :

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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

你的CEO

铁虫 (小有名气)

??? 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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
你的CEO: 金币+10, 有帮助, 感谢 2015-10-18 16:59:24
引用回帖:
3楼: Originally posted by 你的CEO at 2015-10-10 13:50:13
??? Error using ==> feval
Output argument "f" (and maybe others) not assigned during call to
"C:\Users\cai\Desktop\Matlab模拟\PX程序\PX新动力学\拟合程序\PX480602.m>ObjFunc4LNL& ...

第55行加一句:
f=[f1;f2;f3;f4;f5;f6];

修改后代码如下,已经可以运行:
CODE:
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;
f=[f1;f2;f3;f4;f5;f6];
% -------------------------------------------不同配比的方程组
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)
   ];

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2015-10-10 14:35:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

你的CEO

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by 月只蓝 at 2015-10-10 14:35:18
第55行加一句:
f=;

修改后代码如下,已经可以运行:
function PX4800602


clear all
clc
global x0
% k0 = ;
% k0 = ;
k0= ;

% 参数初值
lb = ;                   % 参数下限
ub = ;    % ...

谢谢你,最近才登陆小木虫,可结果有问题呀,这是怎么回事,版主能看出来么

使用函数lsqnonlin()估计得到的参数值为:
        k1 = 0.0000000000 ± NaN
        k2 = 0.0001911071 ± NaN
        k3 = 0.0002896392 ± NaN
        k4 = 1.2592825422 ± NaN
        k5 = 19013.6021392 ± 30461010122.0232390
  The sum of the squares is: 7.0e+003
未来为你而来!
5楼2015-10-18 16:59:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 你的CEO 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 296求调剂 +7 彼岸t 2026-03-29 7/350 2026-03-30 10:23 by cuifj
[考研] 0703 化学 求调剂,一志愿山东大学 342 分 +6 Shern—- 2026-03-28 6/300 2026-03-30 10:18 by herarysara
[考研] 一志愿南开大学0710生物学359求调剂 +4 兔兔兔111223314 2026-03-29 4/200 2026-03-30 06:55 by ilovexiaobin
[考研] 本科双非材料,跨考一志愿华电085801电气,283求调剂,任何专业都可以 +6 芝士雪baoo 2026-03-28 8/400 2026-03-29 08:16 by 松花缸1201
[考研] 一志愿211 初试270分 求调剂 +8 谷雨上岸 2026-03-23 9/450 2026-03-29 01:00 by 我是小康
[考研] 食品工程专硕一志愿中海洋309求调剂 +4 小张zxy张 2026-03-26 8/400 2026-03-28 19:25 by lbsjt
[考研] 压国家一区线,求导师收留,有恩必谢! +7 迷人的哈哈 2026-03-28 7/350 2026-03-28 16:47 by 催化大白
[考研] 346求调剂 一志愿070303有机化学 +3 萝卜炖青菜 2026-03-28 3/150 2026-03-28 14:11 by 唐沐儿
[考研] 药学105500求调剂 +3 Ssun。。 2026-03-28 3/150 2026-03-28 11:24 by lxf170613
[考研] 材料求调剂 一志愿哈工大总分298分,前三科223分 +5 dongfang59 2026-03-27 5/250 2026-03-28 04:53 by wxiongid
[考研] 331环境科学与工程求调剂 +3 熠然好运气 2026-03-27 3/150 2026-03-28 04:11 by fmesaito
[考研] 275求调剂 +10 jjjjjjjjjjl 2026-03-27 10/500 2026-03-27 23:47 by barnett0632
[考研] 085600,材料与化工321分,求调剂 +9 大馋小子 2026-03-27 9/450 2026-03-27 14:30 by mmm just
[考研] 调剂推荐 +5 清酒714 2026-03-26 6/300 2026-03-27 11:12 by 不吃魚的貓
[考研] 求调剂 +6 林之夕 2026-03-24 6/300 2026-03-27 08:38 by hypershenger
[考研] 321求调剂 +6 wasdssaa 2026-03-26 6/300 2026-03-26 20:57 by sanrepian
[考研] 325求调剂 +3 Aoyijiang 2026-03-23 3/150 2026-03-26 20:46 by 不吃魚的貓
[考研] 化工专硕求调剂 +3 question挽风 2026-03-24 3/150 2026-03-24 18:48 by jhhcooi
[考研] 333求调剂 +3 ALULU4408 2026-03-23 3/150 2026-03-23 19:04 by macy2011
[考研] 328求调剂 +4 LHHL66 2026-03-23 4/200 2026-03-23 14:55 by lbsjt
信息提示
请填处理意见