matlab拟合参数最优,使用matlab最优化方法拟合获得多个动力学参数中的问题 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
各位師兄師姐,麻煩大家幫我看一下這個問題。我現在想用一個模型來描述我的實驗現象,模型如圖所示。
?
我通過實驗有了x-t的實驗數據,如下圖所示,我現在想用matlab的fmincon函數求解模型中的ks和Dp(Dp含在參數beita里面)兩個參數,我的程序大概步驟是:首先假設兩個ks和Dp的參數,并給其他參數賦值(已知),求出dx/dt,然后調用ODE函數求出Xsim的值,最后求所有參數點的Xsim和Xexp的差平方,以這個差平方和最小為優化目標求兩個參數。函數的程序如下所示:
function y = chapingfang1( para )
%chapingfang1 求實驗值與模擬值的差平方
%? ?根據輸入的ks和Dp,求出dx/dt,求出xi,并根據實驗值求差平方,需要在函數外給Xexp賦值。
%? ?首先申明Xexp為全局變量,將數據導入Xexp,然后給para賦初始值,并給出para的上下界限,然后引用函數。
global Xexp;? ? %申明一個在外部定義的全局變量
function dxdt=solve(t,x)
%ks=para(1);Dp=para(2);
S0=6.45E7;? ? %單位體積比表面積,m2/m3
C=44.64;? ? %摩爾濃度,mol/m3,50℃,1bar
SP=1.04;? ? %結構參數,structure parameter
epsilon=0.135;? ?%孔隙率
p=300;??%MgO的密度,kg/m3
M=40.3E-3;??%MgO的分子量,kg/mol
beita=(2*para(1)*p*(1-epsilon))/(M*para(2)*S0); % beita=2*ks*p*(1-epsilon)/(M*Dp*s0)
Z=2.48;? ? %產物與反應物體積比
dxdt=para(1)*S0*C*(1-x)*sqrt(1-SP*log(1-x))*60/((1-epsilon)*(1+beita*Z*(sqrt(1-SP*log(1-x))-1)/SP)); %dx/dt,1/min
end
datanum=length(Xexp);? ?%獲得實驗數據的個數
[t,x]=ode45(@solve,(0:datanum),[0]);
y=0;? ? %賦初始值
for i=1:datanum
ysingle=(x(i)-Xexp(i))^2;? ? %單個x值求平方差
y=y+ysingle;? ? %求所有數值的差平方
end
end
調用函數時,先申明Xexp為全局變量并給其賦值,然后給para賦值,假設para=[1e-20,1e-15];然后設置options.MaxFunEvals = 10000;options.MaxIter = 5000;options.TolFun=1e-40;options.TolX=1e-40;算法設為‘active-set’。計算后會提示Optimization completed because the objective function is non-decreasing in
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.就是這樣,一直算不出來結果。
此后,我還用過fminunc和lsqcurvefit命令,但是均算不出來結果,用過fminsearch命令,可以得到結果,但是只要一改初始值結果就會變化。現在我也不清楚到底問題出在哪個地方,究竟用哪個算法更合適。麻煩知道的師兄師姐幫我一下,小弟真的感激不盡!
我的x-t實驗數據如下所示:
time1? ? ? ? weight1
0? ? ? ? 0
1? ? ? ? 0.0131059561590576
2? ? ? ? 0.0224613155271807
3? ? ? ? 0.0258574867886566
4? ? ? ? 0.0287923752485341
5? ? ? ? 0.0319666281518343
6? ? ? ? 0.0344779298157369
7? ? ? ? 0.0365664754496289
8? ? ? ? 0.0389215931122698
9? ? ? ? 0.0414292601750792
10? ? ? ? 0.0437186434808063
11? ? ? ? 0.04540291762739
12? ? ? ? 0.047525420820067
13? ? ? ? 0.0493874788829805
14? ? ? ? 0.0512869214142812
15? ? ? ? 0.0534027784792448
16? ? ? ? 0.0555023317621618
17? ? ? ? 0.0571714444298997
18? ? ? ? 0.0588653762308168
19? ? ? ? 0.0607537072673469
20? ? ? ? 0.0624277006851242
21? ? ? ? 0.0639143563779841
22? ? ? ? 0.0658329065264603
23? ? ? ? 0.0676833338658756
24? ? ? ? 0.0689399712324093
25? ? ? ? 0.070436388425348
26? ? ? ? 0.0721083049282149
27? ? ? ? 0.0733571538638347
28? ? ? ? 0.0744049574361283
29? ? ? ? 0.0759068784535796
30? ? ? ? 0.0771386966869343
31? ? ? ? 0.0779835856724823
32? ? ? ? 0.0790293123298656
33? ? ? ? 0.0802949842762596
34? ? ? ? 0.0813463186039008
35? ? ? ? 0.0821874691426103
36? ? ? ? 0.0830400427133269
37? ? ? ? 0.0844930523846384
38? ? ? ? 0.0849185084040326
39? ? ? ? 0.0853313990882189
40? ? ? ? 0.0866122325134587
41? ? ? ? 0.087233126225921
42? ? ? ? 0.0878623275980246
43? ? ? ? 0.0884889328264904
44? ? ? ? 0.0891348533636229
45? ? ? ? 0.0897540855441568
46? ? ? ? 0.0903847407566979
47? ? ? ? 0.0910422920173286
48? ? ? ? 0.0914330635577191
49? ? ? ? 0.0918563388164574
50? ? ? ? 0.0926972816636758
51? ? ? ? 0.0931137031032097
52? ? ? ? 0.0935382245108942
53? ? ? ? 0.0941693989521628
54? ? ? ? 0.09436462895374
55? ? ? ? 0.0945851973172237
56? ? ? ? 0.0956667507568113
57? ? ? ? 0.0958463000508149
58? ? ? ? 0.0958502461891445
59? ? ? ? 0.0964731129707716
60? ? ? ? 0.0969135227775206
61? ? ? ? 0.0973228827063593
62? ? ? ? 0.0975322357293269
63? ? ? ? 0.0977422118267678
64? ? ? ? 0.0983701670499253
65? ? ? ? 0.0985833623654773
66? ? ? ? 0.0987822269681474
67? ? ? ? 0.0992140175780183
68? ? ? ? 0.0996444581931973
69? ? ? ? 0.0996341774643909
70? ? ? ? 0.0998332497585521
71? ? ? ? 0.0998405189607386
72? ? ? ? 0.100276151863194
73? ? ? ? 0.100476470306301
74? ? ? ? 0.100685511792032
75? ? ? ? 0.101090302508068
76? ? ? ? 0.100895903272455
77? ? ? ? 0.101105879369896
78? ? ? ? 0.101320216988649
79? ? ? ? 0.101736534582437
80? ? ? ? 0.101742765327168
81? ? ? ? 0.101946718371369
82? ? ? ? 0.102368332098179
83? ? ? ? 0.102157006006046
84? ? ? ? 0.102369993630107
85? ? ? ? 0.10280313423467
86? ? ? ? 0.102997845007519
87? ? ? ? 0.102997845007519
88? ? ? ? 0.103208028796451
89? ? ? ? 0.103203978812376
90? ? ? ? 0.103418212585383
91? ? ? ? 0.103629330986024
92? ? ? ? 0.103838684008992
93? ? ? ? 0.103842941684558
94? ? ? ? 0.104064652351243
95? ? ? ? 0.104048867797924
96? ? ? ? 0.104469131530042
97? ? ? ? 0.104469339221533
98? ? ? ? 0.104468508455569
99? ? ? ? 0.104469339221533
100? ? ? ? 0.104679523010465
101? ? ? ? 0.10508524833821
102? ? ? ? 0.104889810645142
103? ? ? ? 0.105095840604253
104? ? ? ? 0.105100305971311
105? ? ? ? 0.105506550527784
106? ? ? ? 0.105531785043945
107? ? ? ? 0.10530290902082
108? ? ? ? 0.105743111136078
109? ? ? ? 0.10553583502802
110? ? ? ? 0.105940833435547
111? ? ? ? 0.105940833435547
112? ? ? ? 0.106151017224479
113? ? ? ? 0.106151017224479
114? ? ? ? 0.106372727891164
115? ? ? ? 0.106361304859156
116? ? ? ? 0.106586338589697
117? ? ? ? 0.106571384802343
118? ? ? ? 0.106567334818267
119? ? ? ? 0.106797145453102
120? ? ? ? 0.106992998529152
121? ? ? ? 0.106991648534461
122? ? ? ? 0.107202143860629
123? ? ? ? 0.106993206220644
124? ? ? ? 0.106991856225952
125? ? ? ? 0.107201001557428
126? ? ? ? 0.106991856225952
127? ? ? ? 0.106980744731181
128? ? ? ? 0.106991856225952
129? ? ? ? 0.106991856225952
130? ? ? ? 0.107217305339475
131? ? ? ? 0.10718635930731
132? ? ? ? 0.107201832323393
133? ? ? ? 0.10719726311059
134? ? ? ? 0.107412327649561
135? ? ? ? 0.107412327649561
136? ? ? ? 0.107607869188375
137? ? ? ? 0.107622511438493
138? ? ? ? 0.107622511438493
139? ? ? ? 0.107621472981038
140? ? ? ? 0.107402254612246
141? ? ? ? 0.107830826004005
142? ? ? ? 0.107818468360289
143? ? ? ? 0.107836849057245
144? ? ? ? 0.108042982862102
145? ? ? ? 0.108264589683041
146? ? ? ? 0.108043086707848
147? ? ? ? 0.108249116666959
148? ? ? ? 0.108470931179389
149? ? ? ? 0.108462208136765
150? ? ? ? 0.109102521003639
151? ? ? ? 0.108883821863575
152? ? ? ? 0.109094109498252
153? ? ? ? 0.109304085595693
154? ? ? ? 0.109304293287184
155? ? ? ? 0.109305020207403
156? ? ? ? 0.109094005652507
157? ? ? ? 0.109309174037224
158? ? ? ? 0.109094005652507
159? ? ? ? 0.109093278732288
160? ? ? ? 0.109305331744639
161? ? ? ? 0.109304293287184
162? ? ? ? 0.10972206472141
163? ? ? ? 0.109724660865048
164? ? ? ? 0.109727464700177
165? ? ? ? 0.109724349327811
166? ? ? ? 0.109933806196525
167? ? ? ? 0.109500665591962
168? ? ? ? 0.109935156191216
169? ? ? ? 0.110150116884442
170? ? ? ? 0.109949590749844
171? ? ? ? 0.110151882262116
172? ? ? ? 0.109943152313621
173? ? ? ? 0.110145339980148
174? ? ? ? 0.109721649338428
175? ? ? ? 0.109934636962489
176? ? ? ? 0.109939725404019
177? ? ? ? 0.109934948499725
178? ? ? ? 0.10993484465398
179? ? ? ? 0.109934948499725
180? ? ? ? 0.109950629207299
181? ? ? ? 0.110145859208876
182? ? ? ? 0.110146170746112
183? ? ? ? 0.110359262215919
184? ? ? ? 0.110145339980148
185? ? ? ? 0.110140978458836
186? ? ? ? 0.11036642757236
187? ? ? ? 0.110351266093514
188? ? ? ? 0.110776825958653
189? ? ? ? 0.110565499866521
190? ? ? ? 0.110568615238886
191? ? ? ? 0.110566849861213
192? ? ? ? 0.110771529825632
193? ? ? ? 0.110985867444384
194? ? ? ? 0.110981921306055
195? ? ? ? 0.11099085204017
196? ? ? ? 0.111180682062979
197? ? ? ? 0.110764883697919
198? ? ? ? 0.11098597129013
199? ? ? ? 0.11098597129013
200? ? ? ? 0.111207370419578
201? ? ? ? 0.111403431187119
202? ? ? ? 0.111399173511553
203? ? ? ? 0.111211628095144
204? ? ? ? 0.111406442713739
205? ? ? ? 0.110987840513549
206? ? ? ? 0.111403431187119
207? ? ? ? 0.111196155079062
208? ? ? ? 0.111402600421155
209? ? ? ? 0.111387958171037
210? ? ? ? 0.111187951265166
211? ? ? ? 0.111210485791944
212? ? ? ? 0.110990021274205
213? ? ? ? 0.110982128997546
214? ? ? ? 0.111001340460467
215? ? ? ? 0.11142752340008
216? ? ? ? 0.111406131176503
217? ? ? ? 0.111391696617875
218? ? ? ? 0.111184939738546
219? ? ? ? 0.111406442713739
220? ? ? ? 0.111196466616298
221? ? ? ? 0.111596999656768
222? ? ? ? 0.111631268752789
223? ? ? ? 0.112048209421051
224? ? ? ? 0.112262754731295
225? ? ? ? 0.112040940218865
226? ? ? ? 0.112026401814492
227? ? ? ? 0.111815802642578
228? ? ? ? 0.112036994080535
229? ? ? ? 0.112037305617771
230? ? ? ? 0.112036994080535
231? ? ? ? 0.111842594844922
232? ? ? ? 0.112254343225908
233? ? ? ? 0.112036994080535
234? ? ? ? 0.112036786389044
235? ? ? ? 0.11203709792628
236? ? ? ? 0.111816841100033
237? ? ? ? 0.112247281715212
238? ? ? ? 0.112033151787951
239? ? ? ? 0.112258289364237
240? ? ? ? 0.112468888536151
241? ? ? ? 0.112457153966908
242? ? ? ? 0.112247281715212
243? ? ? ? 0.112457257812653
244? ? ? ? 0.112457465504144
245? ? ? ? 0.112456738583925
246? ? ? ? 0.11245663473818
247? ? ? ? 0.112243335576883
248? ? ? ? 0.112457465504144
249? ? ? ? 0.112694545341165
250? ? ? ? 0.112663599309001
251? ? ? ? 0.112878975385208
252? ? ? ? 0.11286734466171
253? ? ? ? 0.112667753138821
254? ? ? ? 0.112224747188434
255? ? ? ? 0.112667649293076
256? ? ? ? 0.112458503961599
257? ? ? ? 0.112667753138821
258? ? ? ? 0.112683122309158
259? ? ? ? 0.112666091606893
260? ? ? ? 0.112653110888703
261? ? ? ? 0.112864021597854
262? ? ? ? 0.112661107011108
263? ? ? ? 0.112866098512764
264? ? ? ? 0.112870875417058
265? ? ? ? 0.112876794624553
266? ? ? ? 0.112878144619244
267? ? ? ? 0.113088120716685
268? ? ? ? 0.113298304505617
269? ? ? ? 0.113299135271581
270? ? ? ? 0.113298304505617
271? ? ? ? 0.113298304505617
272? ? ? ? 0.113088120716685
273? ? ? ? 0.113088120716685
274? ? ? ? 0.112867863890438
275? ? ? ? 0.113090820706069
276? ? ? ? 0.11308915917414
277? ? ? ? 0.113072543854857
278? ? ? ? 0.113508488294549
279? ? ? ? 0.113313777521699
280? ? ? ? 0.113721268227119
281? ? ? ? 0.113301523723728
282? ? ? ? 0.113523649773395
283? ? ? ? 0.113511292129678
284? ? ? ? 0.113492496049739
285? ? ? ? 0.113508488294549
286? ? ? ? 0.113739856615567
287? ? ? ? 0.113298200659871
288? ? ? ? 0.113288335314047
289? ? ? ? 0.11331398521319
290? ? ? ? 0.113508488294549
291? ? ? ? 0.113524272847868
292? ? ? ? 0.113719087466463
293? ? ? ? 0.113717633626025
294? ? ? ? 0.113717633626025
295? ? ? ? 0.113718775929226
296? ? ? ? 0.113714725945151
297? ? ? ? 0.113507449837094
298? ? ? ? 0.113507969065821
299? ? ? ? 0.11350983828924
總結
以上是生活随笔為你收集整理的matlab拟合参数最优,使用matlab最优化方法拟合获得多个动力学参数中的问题 - 计算模拟 - 小木虫 - 学术 科研 互动社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java和其他语言相比 特点,【单选题】
- 下一篇: matlab中 ne k,KFoldCV