24小时热门版块排行榜    

查看: 2563  |  回复: 9

最自私的女人

新虫 (初入文坛)

[求助] 动力学方程组参数求解问题 已有3人参与

本人动力学方程如下:
dx1/dt=k21x2+k31x3+k41x4+k51x5+k61x6+k71x7+k81x8
dx2/dt=-k21x2+k32x3+k42x4+k52x5+k62x6+k72x7+k82x8
dx3/dt=-k31x3-k32x3+k43x4+ k53x5+k63x6+k73x7+k83x8
dx4/dt=-k41x4-k42x4-k43x4+ k54x5+k64x6+k74x7+k84x8
dx5/dt=-k51x5-k52x5-k53x5-k54x5-k56x52-k57x52+k65x6+k75x7+k85x8
dx6/dt=-k61x6-k62x6-k63x6-k64x6-k65x6-k67x62+k56x52+k76x7+k86x8
dx7/dt=-k71x7-k72x7-k73x7-k74x7-k75x7-k76x7-k78x72+k57x52+k67x62+k87x8
dx8/dt=-k81x8-k82x8-k83x8-k84x8-k85x8-k86x8-k87x8-k89x82+k78x72
dx9/dt=k89x82
方程中有多个缩合反应为表观二级(即平方),已上传图片供参考
k为动力学参数,k大于0,共33个
x为质量分数,x>0,九个x之和为1
已知数据如下:
温度        时间                    x1            x2           x3                   x4                     x5               x6             x7            x8            x9
430        0.00         0.0192         0.0236         0.1006         0.3284         0.1647         0.1327         0.1981         0.0319         0.0008
430        20.00         0.0287         0.0503         0.1313         0.3156         0.1391         0.1206         0.1755         0.0366         0.0022
430        40.00         0.0349         0.0858         0.1827         0.3058         0.1203         0.0805         0.1476         0.0384         0.0039
430        60.00         0.0423         0.1250         0.2086         0.2950         0.1005         0.0624         0.1180         0.0428         0.0053
本人想编写一个MATLAB程序实现以下功能:
设k初值均为0,求解方程中的33个参数,将求得的参数代入方程中,根据t=0min的数据求得t=20、40、60min的x计算值,将x计算值与x实验值比较,如果误差<5%,得到的参数就是最终参数,如果误差大于5%,就将得到的参数最为初值        循环上述计算,直到        误差<5%。       
哪位大侠能帮忙编写一下,小女子不胜感激呢~

动力学方程组参数求解问题
动力学方程组.jpg
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
参数估计问题或者叫常微分方程组参数拟合。参数太多,MATLAB求解估计困难不小,而且数据仅有4组。
建议你找有高版本1stOpt软件的专家帮你做一下,推荐本版块的专家dingd。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-09-02 14:26:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Cle_key

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
虽然楼主自称小女子。。。但肯定不帮

[ 发自手机版 http://muchong.com/3g ]
坚持就能成功
3楼2014-09-02 17:38:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

polypro

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
按自由约束条件,具有唯一解的情况是 自由变量数=组分数-平衡相数+2,LZ的当前数据应该有很多不定解
泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。
4楼2014-09-03 08:20:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最自私的女人

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-09-02 14:26:53
参数估计问题或者叫常微分方程组参数拟合。参数太多,MATLAB求解估计困难不小,而且数据仅有4组。
建议你找有高版本1stOpt软件的专家帮你做一下,推荐本版块的专家dingd。

因为论文需要得用MATLAB的,我也知道很难,有很多解,只是想得到个稍微好点的解,我就是不知道判断误差那一部分该怎么编写,我现在一个能稍微计算下的程序呢
5楼2014-09-03 10:16:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最自私的女人

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by Cle_key at 2014-09-02 17:38:33
虽然楼主自称小女子。。。但肯定不帮

赠人玫瑰,手有余香的亲
6楼2014-09-03 10:17:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最自私的女人

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by polypro at 2014-09-03 08:20:26
按自由约束条件,具有唯一解的情况是 自由变量数=组分数-平衡相数+2,LZ的当前数据应该有很多不定解

我也知道有很多不定解呢,我想在这些不定解中找到使得x计算值与x实验值相差最小的那一组,请问你会不会编写误差判断这一部分啊?我自己有个能计算的程序呢
7楼2014-09-03 10:18:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最自私的女人

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-09-02 14:26:53
参数估计问题或者叫常微分方程组参数拟合。参数太多,MATLAB求解估计困难不小,而且数据仅有4组。
建议你找有高版本1stOpt软件的专家帮你做一下,推荐本版块的专家dingd。

你好,能麻烦你帮我看一下我的下面这个程序为什么运行不了嘛?
function fourLumpK_VR440
clc;
clear all;
format long;
fourLumpData=[...
0        69.33        21.33        7.66        1.76
15        52.96        26.45        17.84        3.18
30        49.9        27.61        18.29        3.92
45        39.03        28.51        27.93        5
60        33.45        25.4        34.49        7.1
90        25.76        24.99        42.38        7.48
];
% vector of yields/%
Xexp=fourLumpData(2:6,2:5);
% oil residence time,unit: min
time= fourLumpData(2:6,1)';  

% initiate parameter for optimization
X0=fourLumpData(1,2:5);
%      k1      k2     k3      k4     k5  
K0 =[0.0014 0.0012 0.0005 0.0020 0.0013];
lb=0;
ub=inf;

%计时开始拟合
tic;

K=lsqnonlin(@objFun,K0,lb,ub,[],X0,Xexp,time);
% 拟合结果显示
disp(K)
% 计时结束
disp('耗时:');
toc;
% 保存拟合结果
save fourLumpK_VR440;

% 检验-----------------------------------------------
tf=max(time);
tspan=[0:1:tf];
[nr,nc]=size(Xexp);
XcalFinal=zeros(nr,nc);
for i=1:nr
        [t,Xcal]=ode45(@modelEquation,tspan,X0,[],K,tf);
    n=find(t>=time(i));
        m=n(1);
        %线性内插
        Xc=Xcal(m,-(Xcal(m,-Xcal(m-1,)/(t(m)-t(m-1))*(t(m)-time(i));
        XcalFinal(i,=Xc;
    save XcalFinal
end
objX = abs((XcalFinal - Xexp)./100).^2;
F=sum(sum(objX))^0.5;
error=(XcalFinal - Xexp)
avrError=sum(abs(error))/nr
relatError=(XcalFinal - Xexp)./Xexp*100
avrRelError=sum(abs(relatError))/nr

rou_2=1-sum((XcalFinal - Xexp).^2)./sum(Xexp.^2)
Fc_11=(sum(XcalFinal.^2)-sum((XcalFinal - Xexp).^2))/5./(sum((XcalFinal - Xexp).^2)/(5*4-5))

% 残差图-----------------------------------------------------------
figure(1);
clf;
hold on;
plot(XcalFinal(:,1),Xexp(:,1),'m*');
plot(XcalFinal(:,2),Xexp(:,2),'r*');
plot(XcalFinal(:,3),Xexp(:,3),'b*');
plot(XcalFinal(:,4),Xexp(:,4),'k*');
legend('尾油','蜡油','轻油','气+焦'); % 图形注解
xlabel('Xcal,%'); % x轴注解
ylabel('Xexp,%'); % y轴注解
% title('Xexp-Xcal'); % 图形标题
hold on;
x=0:0.1:80;
plot(x,x,'k-');

% y-t图形显示
figure(2);
clf;
hold on;
tf=max(time);
tspan=[0:1:tf];
[t,XcalFinal]=ode45(@modelEquation,tspan,X0,[],K,tf);
plot(t,XcalFinal(:,1),'m');
plot(t,XcalFinal(:,2),'r');
plot(t,XcalFinal(:,3),'b');
plot(t,XcalFinal(:,4),'k');
legend('尾油','蜡油','轻油','气+焦'); % 图形注解
xlabel('t/min'); % x轴注解
ylabel('X/%'); % y轴注解
% title('X--t'); % 图形标题
hold;

%绘制试验点
figure(2);
hold on;
plot(fourLumpData(:,1)',fourLumpData(:,2),'m*');
plot(fourLumpData(:,1)',fourLumpData(:,3),'r*');
plot(fourLumpData(:,1)',fourLumpData(:,4),'b*');
plot(fourLumpData(:,1)',fourLumpData(:,5),'k*');

% -----------------------------------------------------------------
function F = objFun(K,X0,Xexp,time)
tf=max(time);
tspan=[0:1:tf];
[nr,nc]=size(Xexp);
XcalFinal=zeros(nr,nc);
for i=1:nr
        [t,Xcal]=ode45(@modelEquation,tspan,X0,[],K,tf);
    n=find(t>=time(i));
        m=n(1);
        %线性内插
        Xc=Xcal(m,-(Xcal(m,-Xcal(m-1,)/(t(m)-t(m-1))*(t(m)-time(i));
        XcalFinal(i,=Xc;
end
objX = abs((XcalFinal - Xexp)./100).^2;
F=sum(sum(objX))^0.5;
error=(XcalFinal - Xexp)
avrError=sum(abs(error))/nr
avrErr=sum(avrError)/nc
relatError=(XcalFinal - Xexp)./Xexp*100
avrRelError=sum(abs(relatError))/nr
avrRelErr=sum(avrRelError)/nc
K

function dxdt = modelEquation(t,X,K,tf)
f1=-(K(1)+K(2)+K(3))*X(1);
f2= K(1)*X(1)-(K(4)+K(5))*X(2);
f3= K(2)*X(1)+K(4)*X(2);
f4= K(3)*X(1)+K(5)*X(2);
dxdt = [f1;f2;f3;f4];
8楼2014-09-04 20:20:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最自私的女人

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 最自私的女人 at 2014-09-04 20:20:33
你好,能麻烦你帮我看一下我的下面这个程序为什么运行不了嘛?
function fourLumpK_VR440
clc;
clear all;
format long;
fourLumpData=;
% vector of yields/%
Xexp=fourLumpData(2:6,2:5);
% oil residen ...

发现有乱码哎,我上传个附件给你,麻烦你帮我看一下吧。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : fourLumpK_VR440.m
  • 2014-09-04 20:22:37, 3.21 K
9楼2014-09-04 20:22:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

恋雨zz

新虫 (初入文坛)

有人解出了么
10楼2015-05-02 15:10:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 最自私的女人 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 6/300 2026-08-11 13:19 by JACS/Angew
[基金申请] 听说今天filecode变了 +26 布布和一二 2026-08-06 49/2450 2026-08-11 13:18 by WH3796
[基金申请] 帮忙看看fileCode +6 wwncly 2026-08-10 12/600 2026-08-11 13:01 by wwncly
[基金申请] FileCode能看出啥? +7 要乐观耀哥 2026-08-10 17/850 2026-08-11 10:50 by 要乐观耀哥
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +15 Lanmanbaby 2026-08-09 23/1150 2026-08-11 09:51 by demonstreets
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +6 Tide man 2026-08-10 6/300 2026-08-11 09:45 by tangmnt
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +10 yufeiwaner 2026-08-09 11/550 2026-08-10 18:47 by yufeiwaner
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 关于Filecode分析方法 +3 majunge000 2026-08-10 3/150 2026-08-10 15:46 by lch2012
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +11 archvillain 2026-08-04 13/650 2026-08-10 14:41 by seekfind
[基金申请] 好奇怪的filecode +4 布布和一二 2026-08-08 5/250 2026-08-10 14:20 by 冰心玉壶晴
[基金申请] 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-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
信息提示
请填处理意见