| 5 | 1/1 | 返回列表 |
| 查看: 2887 | 回復: 7 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
ronghengyidu木蟲 (小有名氣)
|
[求助]
matlab擬合反應動力學參數(shù) 已有1人參與
|
||
|
本人是matlab大白,最近仿照黃華江編著的“實用化工計算機模擬”例題7-5擬合動力學參數(shù), 動力學方程為dc1/dt=k1*c1/(k2+k3*c1+k4*c2+k5*c1*c2),擬合k1,k2,k3,k4,k5, matlab程序和動力學數(shù)據(jù)見附件,運行出現(xiàn)如下錯誤,請各位大拿幫助。 Error: File: KineticsEst.m Line: 47 Column: 60 Unbalanced or unexpected parenthesis or bracket. Error in run (line 64) evalin('caller', [script ';']); Error: File: KineticsEst.m Line: 47 Column: 60 Unbalanced or unexpected parenthesis or bracket. Error in run (line 64) evalin('caller', [script ';']); |
程序 |
木蟲 (小有名氣)
|
樓主的問題,沒有看明白,找到了 黃華江編著的“實用化工計算機模擬”例題7-5擬合動力學參數(shù) 7個微分方程,5個擬合參數(shù)k1,k2,k3,k4,k5,初值t=0時,x為0.1883, 0.2507, 0.0467, 0.0899, 0.1804, 0.1394, 0.1046 q = 8.75 + k5, dx1/t= k5-q*x1- k1*x1*x2-k4*x1*x6*sqrt(0.9), dx2/t= 7.0-q*x2 - k1*x1*x2-2*k2*x2*x3, dx3/t= 1.75 -q*x3 - k2*x2*x3, dx4/t= -q*x4 + 2*k1*x1*x2-k3*x4*x5, dx5/t= -q*x5 + 3*k2*x2*x3-k3*x4*x5, dx6/t= -q*x6 + 2*k3*x4*x5-k4*x1*x6*sqrt(0.9), dx7/t= -q*x7 + 2*k4*x1*x6*sqrt(0.9) 數(shù)據(jù):t,x1,x4,x5,x6 0 0.1883 0.0899 0.1804 0.1394 0.0100 0.2047 0.0866 0.1729 0.1297 0.0200 0.2181 0.0856 0.1680 0.1205 0.0300 0.2291 0.0863 0.1647 0.1123 0.0400 0.2382 0.0878 0.1623 0.1053 0.0500 0.2459 0.0899 0.1604 0.0995 0.0600 0.2523 0.0921 0.1588 0.0948 0.0700 0.2576 0.0945 0.1574 0.0911 0.0800 0.2622 0.0968 0.1561 0.0882 0.0900 0.2660 0.0989 0.1548 0.0859 0.1000 0.2692 0.1010 0.1537 0.0842 0.1100 0.2719 0.1028 0.1525 0.0830 0.1200 0.2742 0.1045 0.1515 0.0821 0.1300 0.2761 0.1060 0.1505 0.0814 0.1400 0.2777 0.1074 0.1495 0.0810 0.1500 0.2790 0.1086 0.1487 0.0807 0.1600 0.2801 0.1096 0.1479 0.0805 0.1700 0.2811 0.1106 0.1471 0.0803 0.1800 0.2819 0.1114 0.1465 0.0803 0.1900 0.2825 0.1121 0.1458 0.0803 0.2000 0.2830 0.1127 0.1453 0.0803 用OpenLu求解: 結果(k1,k2,k3,k4,k5,目標函數(shù)值): 17.60849027475542 73.06467445464085 51.32551162517818 23.02494410245102 6.001239504989786 6.794401934343191e-008 優(yōu)于原書matlab結果: 17.49, 72.2996, 50.9086, 22.5339, 5.9799, 3.614535245714516e-007 |
木蟲 (小有名氣)
送紅花一朵 |
非常感謝您的回復,我只有一個微分方程,dc1/dt=k1*c1/(k2++k3*c1+k4*c2+k5*c1*c2), 擬合5個參數(shù)k1,k2,k3,k4,k5。我的t,c1,c2數(shù)據(jù)在附件中,matlab程序也在附件中,這兩個文件都可以用記事本打開。在這里我把程序和實驗數(shù)據(jù)再貼出來。 function KineticsEst % 動力學ODE方程模型的參數(shù)估計 clear all clc k0 = [0.5 0.5 0.5 0.5 0.5]; % 參數(shù)初值 lb = [0 0 0 0 0]; % 參數(shù)下限 ub = [+inf +inf +inf +inf +inf]; % 參數(shù)上限 x0 = [150 1500]; KineticsData; yexp = ExpData(:,2:3); % yexp: 實驗數(shù)據(jù)[x1 x2] % 使用函數(shù)fmincon()進行參數(shù)估計 [k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],yexp); fprintf('\n使用函數(shù)fmincon()估計得到的參數(shù)值為:\n') fprintf('\tk1 = %.4f\n',k(1)) fprintf('\tk2 = %.4f\n',k(2)) fprintf('\tk3 = %.4f\n',k(3)) fprintf('\tk4 = %.4f\n',k(4)) fprintf('\tk5 = %.4f\n',k(5)) fprintf(' The sum of the squares is: %.1e\n\n',fval) k_fmincon = k; % 使用函數(shù)lsqnonlin()進行參數(shù)估計 [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n使用函數(shù)lsqnonlin()估計得到的參數(shù)值為:\n') Output % 以函數(shù)fmincon()估計得到的結果為初值,使用函數(shù)lsqnonlin()進行參數(shù)估計 k0 = k_fmincon; [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n以fmincon()的結果為初值,使用函數(shù)lsqnonlin()估計得到的參數(shù)值為:\n') Output % ------------------------------------------------------------------ function f = ObjFunc4Fmincon(k,x0,yexp) tspan = ExpData(:,1); [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1:2) = x(:,1:2); f = sum((y(:,1)-yexp(:,1)).^2) + sum((y(:,2)-yexp(:,2)).^2)); % ------------------------------------------------------------------ function f = ObjFunc4LNL(k,x0,yexp) tspan = = ExpData(:,1); [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1:2) = x(:,1:2); f1 = y(:,1) - yexp(:,1); f2 = y(:,2) - yexp(:,2); f = [f1; f2]; % ------------------------------------------------------------------ function dxdt = KineticEqs(t,x,k) dxdt = ... k(1)*x(1)./(k(2)+k(3)*x(1)+k(4)*x(2)+k(5)*x(1).*x(2)); 實驗數(shù)據(jù)如下: 動力學數(shù)據(jù): t c1 c2 0 150 1500 10 137.3 1487.3 30 107.7 1457.7 60 72.8 1422.8 90 48.8 1398.8 120 22.9 1372.9 150 11.8 1361.8 180 5.4 1355.4 220 1.9 1351.9 240 0.9 1350.9 期望樓上能夠指點,如果您能夠給出openLU程序,我也非常感謝,因為我第一次聽說這個程序,怕仿照編程又要出錯。非常感謝您在節(jié)假日能夠回答我的問題。 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料與化工(0856)304求 B區(qū) 調(diào)劑 +3 | 邱gl 2026-03-21 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 22 350 本科985求調(diào)劑,求老登收留 +3 | 李軼男003 2026-03-20 | 3/150 |
|
|
[考研] 279分求調(diào)劑 一志愿211 +14 | chaojifeixia 2026-03-19 | 15/750 |
|
|
[考研] 求調(diào)劑 +3 | 白QF 2026-03-21 | 3/150 |
|
|
[考研] 一志愿山大07化學 332分 四六級已過 本科山東雙非 求調(diào)劑! +3 | 不想理你 2026-03-16 | 3/150 |
|
|
[考研] 301求調(diào)劑 +10 | yy要上岸呀 2026-03-17 | 10/500 |
|
|
[考研] 324分 085600材料化工求調(diào)劑 +4 | llllkkkhh 2026-03-18 | 4/200 |
|
|
[考研] 一志愿 西北大學 ,070300化學學碩,總分287,雙非一本,求調(diào)劑。 +3 | 晨昏線與星海 2026-03-18 | 3/150 |
|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-18 | 6/300 |
|
|
[考研] 295求調(diào)劑 +4 | 一志愿京區(qū)211 2026-03-18 | 6/300 |
|
|
[考研]
|
簡木ChuFront 2026-03-19 | 8/400 |
|
|
[考研] 260求調(diào)劑 +3 | 朱芷琳 2026-03-20 | 3/150 |
|
|
[考研] 一志愿西安交通大學 學碩 354求調(diào)劑211或者雙一流 +3 | 我想要讀研究生 2026-03-20 | 3/150 |
|
|
[基金申請]
學校已經(jīng)提交到NSFC,還能修改嗎?
40+4
|
babangida 2026-03-19 | 8/400 |
|
|
[考博] 招收博士1-2人 +3 | QGZDSYS 2026-03-18 | 3/150 |
|
|
[考研] 0703化學調(diào)劑 +5 | pupcoco 2026-03-17 | 8/400 |
|
|
[考研] 化學工程321分求調(diào)劑 +15 | 大米飯! 2026-03-15 | 18/900 |
|
|
[考研] 0703化學336分求調(diào)劑 +6 | zbzihdhd 2026-03-15 | 7/350 |
|
|
[考博] 26申博 +4 | 八6八68 2026-03-16 | 4/200 |
|
|
[考研] 中科院材料273求調(diào)劑 +4 | yzydy 2026-03-15 | 4/200 |
|