| 5 | 1/1 | 返回列表 |
| 查看: 2886 | 回復(fù): 7 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
ronghengyidu木蟲 (小有名氣)
|
[求助]
matlab擬合反應(yīng)動力學參數(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求解: 結(jié)果(k1,k2,k3,k4,k5,目標函數(shù)值): 17.60849027475542 73.06467445464085 51.32551162517818 23.02494410245102 6.001239504989786 6.794401934343191e-008 優(yōu)于原書matlab結(jié)果: 17.49, 72.2996, 50.9086, 22.5339, 5.9799, 3.614535245714516e-007 |
木蟲 (小有名氣)
送紅花一朵 |
非常感謝您的回復(fù),我只有一個微分方程,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()估計得到的結(jié)果為初值,使用函數(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()的結(jié)果為初值,使用函數(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é)假日能夠回答我的問題。 |
|
是不是還有一個微分方程,dc2/dt=... ...。 否則應(yīng)該怎樣使用c2數(shù)據(jù)呢? |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 278求調(diào)劑 +7 | 煙火先于春 2026-03-17 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 265求調(diào)劑 +12 | 梁梁校校 2026-03-19 | 14/700 |
|
|
[考研] 306求調(diào)劑 +4 | chuanzhu川燭 2026-03-18 | 4/200 |
|
|
[考研] 324分 085600材料化工求調(diào)劑 +4 | llllkkkhh 2026-03-18 | 4/200 |
|
|
[考研] 一志愿華中科技大學,080502,354分求調(diào)劑 +5 | 守候夕陽CF 2026-03-18 | 5/250 |
|
|
[考研] 材料專碩英一數(shù)二306 +7 | z1z2z3879 2026-03-18 | 7/350 |
|
|
[考研] 考研調(diào)劑求學校推薦 +3 | 伯樂29 2026-03-18 | 5/250 |
|
|
[考研] 290求調(diào)劑 +7 | ^O^乜 2026-03-19 | 7/350 |
|
|
[考研] 求調(diào)劑一志愿南京航空航天大學289分 +3 | @taotao 2026-03-19 | 3/150 |
|
|
[考研] 295材料求調(diào)劑,一志愿武漢理工085601專碩 +5 | Charlieyq 2026-03-19 | 5/250 |
|
|
[考研] 353求調(diào)劑 +3 | 拉鉤不許變 2026-03-20 | 3/150 |
|
|
[考研] 0703化學調(diào)劑 +5 | pupcoco 2026-03-17 | 8/400 |
|
|
[考研] 材料工程專碩調(diào)劑 +5 | 204818@lcx 2026-03-17 | 6/300 |
|
|
[考研] 【同濟軟件】軟件(085405)考研求調(diào)劑 +3 | 2026eternal 2026-03-18 | 3/150 |
|
|
[考研]
|
胡辣湯放糖 2026-03-15 | 6/300 |
|
|
[考研] 考研化學學碩調(diào)劑,一志愿985 +4 | 張vvvv 2026-03-15 | 6/300 |
|
|
[考研] 一志愿蘇州大學材料工程(085601)專碩有科研經(jīng)歷三項國獎兩個實用型專利一項省級立項 +6 | 大火山小火山 2026-03-16 | 8/400 |
|
|
[考研] 275求調(diào)劑 +4 | 太陽花天天開心 2026-03-16 | 4/200 |
|
|
[考研] 302求調(diào)劑 +4 | 小賈同學123 2026-03-15 | 8/400 |
|
|
[考研] 0856專碩279求調(diào)劑 +5 | 加油加油!? 2026-03-15 | 5/250 |
|