24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2592  |  回复: 15

雨枫林影

新虫 (小有名气)

[求助] 求大神帮忙拟合一个非线性方程,求出模型参数

我现有一个动力学模型,数据也有,请求大神帮忙进行一个非线性方程的拟合,求出模型中的若干参数,最好用matlab软件,实在不行,别的软件也可以,只要帮我把参数算出来就行了。
应用MATLAB软件根据发酵试验数据和经验获得模型参数的初估值,进行非线性拟合,采用算法为全局性收敛的Marquardt修正的高斯牛顿法,以误差平方和最小为目标,获得发酵动力学模型参数估计值,这段话是参考一篇文献,我和他用同一个方程,方法,就是试验数据不一样,想重新算出一组参数。
关系到本人的毕业论文,急求,可再追加金币,如能帮忙,万分感谢。
t         X           S           P
88        6.7        3.17        4.86
92        7.5        2.87        5.17                                   
96        8.4        2.33        5.72                 
100        9.1        1.87        6.18
104        9.3        1.36        6.73               
108        9.1        0.95        7.13
112        8.6        0.52        7.56

求大神帮忙拟合一个非线性方程,求出模型参数
360截图20140321193034293.jpg


求大神帮忙拟合一个非线性方程,求出模型参数-1
360截图20140321193141731.jpg
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
雨枫林影: 金币+100, ★★★很有帮助 2014-03-23 16:42:18
fegg7502: 金币+3, 应助指数+1, 3ks 2014-03-24 08:32:10
1.  8个参数的初值,你自己再调一下;
2.  原问题没有给出t=0时的初值,代码编写时以t=88为零时刻。

代码和计算结果如下:
CODE:
function ode_fit
format long
clear all
clc

x0 = [6.7 4.86 3.17];
k0 = [1.5 1.5 1.5 6.8 2/3 0.1 0.1 0.01];   
lb = -[1 1 1 1 1 1 1 1 ]*1e9;
ub = [1 1 1 1 1 1 1 1 ]*1e9;

data=...
    [

88        6.7        3.17        4.86
92        7.5        2.87        5.17                                   
96        8.4        2.33        5.72                 
100        9.1        1.87        6.18
104        9.3        1.36        6.73               
108        9.1        0.95        7.13
112        8.6        0.52        7.56
];
tspan = [data(:,1)'-88];
yexp = [data(2:end,2) data(2:end,4) data(2:end,3)];

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,x0,yexp);      
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.9f \n',k(1))
fprintf('\tk2 = %.9f \n',k(2))
fprintf('\tk3 = %.9f \n',k(3))
fprintf('\tk4 = %.9f \n',k(4))
fprintf('\tk5 = %.9f \n',k(5))
fprintf('\tk6 = %.9f \n',k(6))
fprintf('\tk7 = %.9f \n',k(7))
fprintf('\tk8 = %.9f \n',k(8))

figure(1)

ts=0:((max(tspan)-min(tspan))/100):max(tspan);
[ts ys] = ode45(@KineticsEqs,ts,x0,[],k);
yy = [data(:,2) data(:,4) data(:,3)];
figure(1)
plot(ts,ys(:,1),'b',tspan,yy(:,1),'bo',ts,ys(:,2),'r',tspan,yy(:,2),'ro',ts,ys(:,3),'k',tspan,yy(:,3),'ko'),
legend('X的计算值','X的实验值','P的计算值','P的实验值','S的计算值','S的实验值','Location','best');



function f = ObjFunc(k,tspan,x0,yexp)           % 目标函数
[t Xsim] = ode45(@KineticsEqs,tspan,x0,[],k);
Xsim1=Xsim(:,1);
Xsim2=Xsim(:,2);
Xsim3=Xsim(:,3);
ysim(:,1) = Xsim1(2:end);
ysim(:,2) = Xsim2(2:end);
ysim(:,3) = Xsim3(2:end);

size(ysim(:,1));
size(ysim(:,2));
size(yexp(:,1));
size(yexp(:,2));

f = [(ysim(:,1)-yexp(:,1)) (ysim(:,2)-yexp(:,2)) (ysim(:,3)-yexp(:,3))];

function dCdt = KineticsEqs(t,C,k)              % ODE模型方程
umax=k(1);Ks=k(2);Ki=k(3);Pmax=k(4);a=k(5);Yxs=k(6);Yps=k(7);m=k(8);
X=C(1);P=C(2);S=C(3);

dXdt=umax*(S./(S+Ks)).*(1./(1+S/Ki)).*(1-P/Pmax).*X;
dPdt=a*dXdt;
dSdt=-Yxs*dXdt-Yps*dPdt-m*X;

dCdt = [dXdt; dPdt;dSdt];

求大神帮忙拟合一个非线性方程,求出模型参数-2
附图1.jpg

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2014-03-22 15:36:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

k1~k8分别对应于1楼中除去β以外的8个参数。

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2014-03-22 15:39:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
fegg7502: 金币+3, 应助指数+1, 3ks 2014-03-24 08:32:32
雨枫林影: 金币+100, ★★★很有帮助 2014-03-24 16:04:06
1:不知道参数有无物理意义、有无范围限制?
2:感觉有过拟合现象,应该可以简化减少些参数;

1stOpt求解代码及参考结果:
CODE:
ConstStr f1=umax*(S/(S+Ks))*(1/(1+S/Ki))*(1-P/Pmax)*X,
         f2=a*f1+b*X;
Variable t,X,S,P;
ODEFunction X'=f1;
            P'=f2;
            S'=-Yxs*f1-Yps*f2-m*X;
Data;
//t         X           S           P
88        6.7        3.17        4.86
92        7.5        2.87        5.17
96        8.4        2.33        5.72
100        9.1        1.87        6.18
104        9.3        1.36        6.73
108        9.1        0.95        7.13
112        8.6        0.52        7.56

umax        -5781392.33135318
ks        -210837.14834589
ki        0.00495481210991207
pmax        6.70905130223683
a        0.0119239466154204
b        0.0132719043224854
yxs        -3.01795075046523
yps        255.886555416186
m        -3.38343920138113

====== 结果输出 ======

文件: 数据文件-1
No        t        目标 x        计算 x        目标 s        计算 s        目标 p        计算 p
1        92        7.5        7.66055911481825        2.87        2.77397566145994        5.17        5.25307951950778
2        96        8.4        8.46838672391427        2.33        2.33779433171825        5.72        5.69174584294069
3        100        9.1        9.02185397024733        1.87        1.87519267194909        6.18        6.16392886995249
4        104        9.3        9.24404020474683        1.36        1.40371520415259        6.73        6.65300158028002
5        108        9.1        9.10467025194884        0.95        0.942143382474268        7.13        7.13997225746637
6        112        8.6        8.62950508373926        0.52        0.507516501557943        7.56        7.60639184924091
求大神帮忙拟合一个非线性方程,求出模型参数-3
c65.jpg


求大神帮忙拟合一个非线性方程,求出模型参数-4
c66.jpg


求大神帮忙拟合一个非线性方程,求出模型参数-5
c67.jpg

10楼2014-03-23 22:29:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

雨枫林影

新虫 (小有名气)

拜托,大神快出来
2楼2014-03-22 11:04:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 鼓励交流 2014-03-24 08:31:54
时间t=0时,X P S的初值呢?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2014-03-22 14:21:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

此外,β哪里有用到?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2014-03-22 15:04:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

雨枫林影

新虫 (小有名气)


送红花一朵
fegg7502: 金币+1, 鼓励交流 2014-03-24 08:32:19
引用回帖:
6楼: Originally posted by 月只蓝 at 2014-03-22 15:39:25
k1~k8分别对应于1楼中除去β以外的8个参数。

真的太感谢你了
我刚查了一下,三个方程里的第二个方程给错了,对不起啊,正确的应该是
求大神帮忙拟合一个非线性方程,求出模型参数-6
360截图20140323163308884.jpg

7楼2014-03-23 16:37:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

雨枫林影

新虫 (小有名气)

引用回帖:
5楼: Originally posted by 月只蓝 at 2014-03-22 15:36:01
1.  8个参数的初值,你自己再调一下;
2.  原问题没有给出t=0时的初值,代码编写时以t=88为零时刻。

代码和计算结果如下:

function ode_fit
format long
clear all
clc

x0 = ;
k0 = ;   
lb = -*1e ...

能不能再帮我算一下,拜托了,求求你。
8楼2014-03-23 16:39:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

雨枫林影

新虫 (小有名气)

引用回帖:
6楼: Originally posted by 月只蓝 at 2014-03-22 15:39:25
k1~k8分别对应于1楼中除去β以外的8个参数。

t=88,就是按0时刻算的
9楼2014-03-23 16:41:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 雨枫林影 的主题更新
信息提示
请填处理意见