24小时热门版块排行榜    

查看: 946  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

你的CEO

铁虫 (小有名气)

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

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

» 猜你喜欢

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

未来为你而来!
已阅   回复此楼   关注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的回帖
查看全部 5 个回答

你的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的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] 关于代码变化问题,想知道的进来 +15 且听虎啸 2026-08-07 22/1100 2026-08-09 22:13 by 布布和一二
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 5/250 2026-08-08 21:54 by 13586093586
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 好奇怪的filecode +3 布布和一二 2026-08-08 4/200 2026-08-08 17:46 by zhanghaozhu
[基金申请] 基金中了 +14 laoda193707 2026-08-06 14/700 2026-08-08 00:23 by 实验小白ha
[基金申请] 娱乐 +6 Tide man 2026-08-03 6/300 2026-08-07 22:40 by 铁帽子农民
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
信息提示
请填处理意见