1stopt 7参数拟合求助
需要根据两个式子(一个微分方程,一个代数方程)拟合7个未知参数fac(1)~fac(7),网上下载的软件有参数限制,想向有正版软件的朋友求助,帮忙拟合一下。写了两版,程序分别如下。完整程序和数据放在了文件里,不知为什么上传失败,只能贴一下网盘链接,麻烦大家了。
链接:https://pan.baidu.com/s/18yjg6HL9hhQ5hmjGdjFhEQ
提取码:8xmm
第一种:
//title "fit";
parameter fac(1:7);
variable t,lamb,pa,p,lambv;
odefunction lambv'=((1/3/fac(7))*(fac(1)*((lamb/lambv)^fac(2)-(lambv/lamb)^(0.5*fac(2)))+fac(3)*((lamb/lambv)^fac(4)-(lambv/lamb)^(0.5*fac(4)))+fac(5)*((lamb/lambv)^fac(6)-(lambv/lamb)^(0.5*fac(6)))));
p=(pa+fac(1)*((lamb/lambv)^fac(2)/lamb-(lambv/lamb)^(fac(2)*0.5)/lamb)+fac(3)*((lamb/lambv)^fac(4)/lamb-(lambv/lamb)^(fac(4)*0.5)/lamb)+fac(5)*((lamb/lambv).^fac(6)/lamb-(lambv/lamb)^(fac(6)*0.5)/lamb));
//根据上面两个式子拟合fac(1)~fac(7),共计7个参数。lambv为中间变量
data;
//t,lamb,pa,p
第二种:
//title "fit";
parameter fac(1:7);
variable t,lamb,pa,p;
conststr lambvdif=((1/3/fac(7))*(fac(1)*((lamb/lambv)^fac(2)-(lambv/lamb)^(0.5*fac(2)))+fac(3)*((lamb/lambv)^fac(4)-(lambv/lamb)^(0.5*fac(4)))+fac(5)*((lamb/lambv)^fac(6)-(lambv/lamb)^(0.5*fac(6)))));
function p=(pa+fac(1)*((lamb/lambv)^fac(2)/lamb-(lambv/lamb)^(fac(2)*0.5)/lamb)+fac(3)*((lamb/lambv)^fac(4)/lamb-(lambv/lamb)^(fac(4)*0.5)/lamb)+fac(5)*((lamb/lambv).^fac(6)/lamb-(lambv/lamb)^(fac(6)*0.5)/lamb));
//根据上面两个式子拟合fac(1)~fac(7),共计7个参数。lambv为中间变量
data;
//t,lamb,pa,p
返回小木虫查看更多
京公网安备 11010802022153号
微分变量作为中变变量好像无法实现。
可以考虑求解微分方程,得到 lambv 解析式带入 p 中进行非线性方程拟合。
还有一种就是对 p求导,组成微分方程组拟合 ?
您好,我用微分方程组的形式写了一下程序,可以麻烦您帮我跑一下看看吗
Parameter fac(1:7);
ConstStr lambdif=A*w*cos(w*t);
lambvdif=((1/3/fac(7))*(fac(1)*((lamb/lambv)^fac(2)-(lambv/lamb)^(0.5*fac(2)))+fac(3)*((lamb/lambv)^fac(4)-(lambv/lamb)^(0.5*fac(4)))+fac(5)*((lamb/lambv)^fac(6)-(lambv/lamb)^(0.5*fac(6)))));
Variable t,lamb,pa,p;
Constant A=0.02,w=2*pi*0.1;
ODEFunction p'=pa+fac(1)*((fac(2)-1)*lamb^(fac(2)-2)*lambv^(-fac(2))*lambdif-fac(2)*lamb^(fac(2)-1)*lambv^(-fac(2)-1)*lambvdif+(0.5*fac(2)+1)*lamb^(-0.5*fac(2)-2)*lambv^(0.5*fac(2))*lambdif-0.5*fac(2)*lamb^(-0.5*fac(2)-1)*lambv^(0.5*fac(2)-1)*lambvdif)+fac(3)*((fac(4)-1)*lamb^(fac(4)-2)*lambv^(-fac(4))*lambdif-fac(4)*lamb^(fac(4)-1)*lambv^(-fac(4)-1)*lambvdif+(0.5*fac(4)+1)*lamb^(-0.5*fac(4)-2)*lambv^(0.5*fac(4))*lambdif-0.5*fac(4)*lamb^(-0.5*fac(4)-1)*lambv^(0.5*fac(4)-1)*lambvdif)+fac(5)*((fac(6)-1)*lamb^(fac(6)-2)*lambv^(-fac(6))*lambdif-fac(6)*lamb^(fac(6)-1)*lambv^(-fac(6)-1)*lambvdif+(0.5*fac(6)+1)*lamb^(-0.5*fac(6)-2)*lambv^(0.5*fac(6))*lambdif-0.5*fac(6)*lamb^(-0.5*fac(6)-1)*lambv^(0.5*fac(6)-1)*lambvdif);
//根据上面两个式子拟合fac(1)~fac(7),共计7个参数。lambv为中间变量
Data;
//t,lamb,pa,p
0 0.959926667213440 -0.218715993911157 -0.0609662220570843
0.0100000000000000 0.960060000419617 -0.217953308698164 -0.0601988575052841
0.0200000000000000 0.960183332761129 -0.217248055533299 -0.0586004556313694
0.0300000000000000 0.960310000181198 -0.216523956896799 -0.0598319351599084
0.0400000000000000 0.960420000155767 -0.215895323573625 -0.0592181922334017
0.0500000000000000 0.960559999942780 -0.215095494743585 -0.0577557643513868
0.0600000000000000 0.960676667292913 -0.214429178596415 -0.0563035568552177
0.0700000000000000 0.960810000101725 -0.213667918567369 -0.0562269347026404
0.0800000000000000 0.960936667521795 -0.212944948052557 -0.0564259238264651
0.0900000000000000 0.961046667098999 -0.212317295943482 -0.0537828971720869
0.100000000000000 0.961189999580383 -0.211499705156834 -0.0547939745570696
0.110000000000000 0.961310000419617 -0.210815425359240 -0.0536558808743694
0.120000000000000 0.961439999739329 -0.210074361156256 -0.0552049394966249
0.130000000000000 0.961553332805634 -0.209428498212864 -0.0533279895347856
0.140000000000000 0.961696667273839 -0.208611922930574 -0.0547945686849519
0.150000000000000 0.961800000270208 -0.208023415546762 -0.0532876594536559
0.160000000000000 0.961940000057221 -0.207226321745154 -0.0509894265270881
0.170000000000000 0.962063333988190 -0.206524344385847 -0.0501778902776873
0.180000000000000 0.962169999678930 -0.205917410019245 -0.0502746930628899
0.190000000000000 0.962316667238871 -0.205083123883024 -0.0495968417849477
0.200000000000000 0.962433333396912 -0.204419710035615 -0.0472132050693843
0.210000000000000 0.962576666275660 -0.203604919455239 -0.0484606909901491
0.220000000000000 0.962676665782928 -0.203036632647645 -0.0495768924563658
0.230000000000000 0.962816666762034 -0.202241257206550 -0.0508967558960456
0.240000000000000 0.962926666736603 -0.201616516537996 -0.0476233841843231
0.250000000000000 0.963063333431880 -0.200840559228892 -0.0468362780039746
0.260000000000000 0.963176666895549 -0.200197280019895 -0.0486882526110127
0.270000000000000 0.963316667079926 -0.199402888747258 -0.0454051383025184
0.280000000000000 0.963433334032695 -0.198741104393035 -0.0452764009626071
0.290000000000000 0.963550000190735 -0.198079514508925 -0.0448494356201968
0.300000000000000 0.963679999907811 -0.197342536339294 -0.0449833927792348
0.310000000000000 0.963783333698909 -0.196756897310271 -0.0426126775765766
0.320000000000000 0.963916666507721 -0.196001460068449 -0.0441506994685100
0.330000000000000 0.964036666949590 -0.195321772871168 -0.0425706893672636
0.340000000000000 0.964173332850138 -0.194547935703942 -0.0438506779501000
0.350000000000000 0.964290000597636 -0.193887538472069 -0.0417353759771666
0.360000000000000 0.964416666428248 -0.193170761056756 -0.0438396124512487
0.370000000000000 0.964553333918254 -0.192397635767639 -0.0429577403349063
0.380000000000000 0.964653333822886 -0.191832102284730 -0.0409461894762005
0.390000000000000 0.964793333609899 -0.191040588507138 -0.0417681424238785
0.400000000000000 0.964893333117167 -0.190475389506915 -0.0403640892202786
0.410000000000000 0.965033333698908 -0.189684336018058 -0.0395319429176814
0.420000000000000 0.965153333346049 -0.189006510522505 -0.0396276800113452
0.430000000000000 0.965280000766118 -0.188291237369717 -0.0385797461602765
0.440000000000000 0.965410000085831 -0.187557379585116 -0.0385647679180981
0.450000000000000 0.965513333479563 -0.186974219511924 -0.0377487349326589
0.460000000000000 0.965636665821075 -0.186278388275524 -0.0369432895124589
0.470000000000000 0.965739999214808 -0.185695550701227 -0.0385068828949284
0.480000000000000 0.965873333215713 -0.184943715898085 -0.0363684893042258
0.490000000000000 0.965996665954590 -0.184248493064694 -0.0350844423645908
0.500000000000000 0.966119999885559 -0.183553472396837 -0.0350422560310213
0.510000000000000 0.966236666838328 -0.182896214094321 -0.0357082890947156
0.520000000000000 0.966343333721161 -0.182295455797467 -0.0344226096619861
0.530000000000000 0.966483333508174 -0.181507199906605 -0.0344232075748849
0.540000000000000 0.966569999456406 -0.181019369758473 -0.0337612557794114
0.550000000000000 0.966713333129883 -0.180212790651351 -0.0328476531863676
0.560000000000000 0.966833333174388 -0.179537732473905 -0.0325253978559010
0.570000000000000 0.966953334013621 -0.178862866531231 -0.0332915932673917
0.580000000000000 0.967066667079926 -0.178225679580843 -0.0316902061386422
0.590000000000000 0.967166666587194 -0.177663602741103 -0.0315181295683456
0.600000000000000 0.967303333679835 -0.176895645311491 -0.0325612034572683
0.610000000000000 0.967396666606267 -0.176371336695062 -0.0309402003803836
0.620000000000000 0.967536666393280 -0.175585093835344 -0.0312076525270728
0.630000000000000 0.967653333346049 -0.174930092472352 -0.0308357845343375
0.640000000000000 0.967749999761581 -0.174387519925182 -0.0291192343976965
0.650000000000000 0.967886667251587 -0.173620644511959 -0.0285421873746685
0.660000000000000 0.967986666758855 -0.173059682888543 -0.0285225129376410
0.670000000000000 0.968120000362396 -0.172311939786930 -0.0267974070448110
0.680000000000000 0.968226666450501 -0.171713923202809 -0.0274131745724031
0.690000000000000 0.968336667617162 -0.171097370069903 -0.0267161701869239
0.700000000000000 0.968463333050410 -0.170387617041473 -0.0258419432819456
0.710000000000000 0.968573333422343 -0.169771420474682 -0.0258780128939212
0.720000000000000 0.968689999580383 -0.169118062356982 -0.0272440635226749
0.730000000000000 0.968783333698909 -0.168595501500778 -0.0253793840193742
0.740000000000000 0.968916666905085 -0.167849196856469 -0.0264425615317059
0.750000000000000 0.969016666809718 -0.167289625665833 -0.0244389879012050
0.760000000000001 0.969113333225250 -0.166748835804261 -0.0231584760478411
0.770000000000001 0.969256667693456 -0.165947198113151 -0.0226372159513464
0.780000000000001 0.969343333641688 -0.165462628897229 -0.0234939984434984
0.790000000000001 0.969470000267029 -0.164754588351801 -0.0222578608226590
0.800000000000001 0.969576666355133 -0.164158513908713 -0.0236720328297027
0.810000000000001 0.969686666329702 -0.163543968928945 -0.0237222206510110
0.820000000000001 0.969803333282471 -0.162892354435203 -0.0224004650836929
0.830000000000001 0.969893333117167 -0.162389807235336 -0.0229423136115953
0.840000000000001 0.970006666978200 -0.161757120283625 -0.0222135542939929
0.850000000000001 0.970126667022705 -0.161087406763220 -0.0196712365532339
0.860000000000001 0.970219999949137 -0.160566654131466 -0.0208444427607440
0.870000000000001 0.970350000063578 -0.159841510390568 -0.0204578825040124
0.880000000000001 0.970456666549047 -0.159246690825963 -0.0204792691967014
0.890000000000001 0.970543332497279 -0.158763514967417 -0.0210974633596056
0.900000000000001 0.970680000384649 -0.158001774299614 -0.0199519210110641
0.910000000000001 0.970739998817444 -0.157667441957929 -0.0186650262520735
0.920000000000001 0.970853333473206 -0.157036032333120 -0.0203374868130427
0.930000000000001 0.970970000028610 -0.156386238713585 -0.0181172809133346
0.940000000000001 0.971066666841507 -0.155847974178378 -0.0169719709803755
0.950000000000001 0.971189999580383 -0.155161407639427 -0.0173532514359965
0.960000000000001 0.971290000677109 -0.154604871681127 -0.0180488018864929
0.970000000000001 0.971386667092641 -0.154067020459030 -0.0162163311161226
0.980000000000001 0.971503334045410 -0.153418051556590 -0.0173059903417249
0.990000000000001 0.971593333482742 -0.152917546109150 -0.0184208892285034
1.00000000000000 0.971710000038147 -0.152268899101354 -0.0170676501959011
1.01000000000000 0.971816666523615 -0.151676008619299 -0.0166603744366234
1.02000000000000 0.971893333196640 -0.151249960854031 -0.0166160245944316
1.03000000000000 0.972013333241145 -0.150583259389362 -0.0168957538325589
1.04000000000000 0.972106666167577 -0.150064847876745 -0.0156172175962589
1.05000000000000 0.972200000286102 -0.149546544835947 -0.0164289790207038
1.06000000000000 0.972293333212535 -0.149028363438895 -0.0124780536604394
1.07000000000000 0.972416667540868 -0.148343791536867 -0.0156635767193904
1.08000000000000 0.972486666043600 -0.147955351407384 -0.0156777104654171
1.09000000000000 0.972583332856496 -0.147419027968815 -0.0115545728170080
1.10000000000000 0.972703333298365 -0.146753416936832 -0.0135089570168357
1.11000000000000 0.972770000696182 -0.146383712245781 -0.0139171974378706
1.12000000000000 0.972890000343323 -0.145718400396012 -0.0123677751928180
1.13000000000000 0.972993333339691 -0.145145644857007 -0.0139569902739622
1.14000000000000 0.973073333899180 -0.144702313019006 -0.0141943330078513
1.15000000000000 0.973186666965485 -0.144074409306987 -0.0134662011722303
1.16000000000000 0.973289999961853 -0.143502056278774 -0.0117485777997626
1.17000000000000 0.973360000054041 -0.143114411045784 -0.0128830006598376
1.18000000000000 0.973466666539510 -0.142523838823460 -0.0134831178344199
1.19000000000000 0.973553333282471 -0.142044107399573 -0.0131770224150591
1.20000000000000 0.973626666863759 -0.141638256602230 -0.0113454096282658
1.21000000000000 0.973736667235692 -0.141029612343732 -0.0119302482516657
1.22000000000000 0.973826666673024 -0.140531753167651 -0.0103566043799177
1.23000000000000 0.973903333743413 -0.140107729521413 -0.0103308521496187
1.24000000000000 0.974006667137146 -0.139536343542061 -0.0107882714921145
1.25000000000000 0.974090000391007 -0.139075650643072 -0.0109397122041476
1.26000000000000 0.974159998893738 -0.138688746536607 -0.0107228623140689
1.27000000000000 0.974263333479563 -0.138117700027004 -0.00990603193088691
1.28000000000000 0.974366667270660 -0.137546797074590 -0.00938155311232515
1.29000000000000 0.974436666568120 -0.137160140979443 -0.00888102709894390
1.30000000000000 0.974533332983653 -0.136626288218709 -0.00854232956056897
1.31000000000000 0.974633332888285 -0.136074153771862 -0.00832410978762717
1.32000000000000 0.974706666469574 -0.135669336065565 -0.00812692033021610
1.33000000000000 0.974786666234334 -0.135227799251810 -0.0105097329350413
1.34000000000000 0.974886666933696 -0.134675989657087 -0.00904439075924608
1.35000000000000 0.974969999790192 -0.134216253343974 -0.00983657760143915
1.36000000000000 0.975033333301544 -0.133866911028101 -0.00738664047619175
1.37000000000000 0.975126667022705 -0.133352184898144 -0.00842367234478137
1.38000000000000 0.975206666787466 -0.132911084075087 -0.00886986413280930
1.39000000000000 0.975273334185282 -0.132543558283832 -0.00866589172874738
1.40000000000000 0.975376667579015 -0.131974012957439 -0.00750438723484105
1.41000000000000 0.975456666549047 -0.131533175481924 -0.00879428215972221
1.42000000000000 0.975539999008179 -0.131074056710130 -0.00610070230975531
1.43000000000000 0.975593333641688 -0.130780257570378 -0.00624834869039909
1.44000000000000 0.975686666965485 -0.130266210111124 -0.00723096282337601
1.45000000000000 0.975770000219345 -0.129807334634805 -0.00829505475730286
1.46000000000000 0.975833334128062 -0.129458645731541 -0.00756171198412006
1.47000000000000 0.975899999141693 -0.129091673131676 -0.00422094164255660
1.48000000000000 0.975976667006810 -0.128669708450559 -0.00439203336395603
1.49000000000000 0.976066666841507 -0.128174463951086 -0.00567856775016018
1.50000000000000 0.976123333374659 -0.127862697050313 -0.00679508718595573
1.51000000000000 0.976206665833791 -0.127404295173509 -0.00606474724543268
1.52000000000000 0.976286667188009 -0.126964301415781 -0.00591084743659025
1.53000000000000 0.976373333136241 -0.126487746458794 -0.00515028595828926
1.54000000000000 0.976420000394185 -0.126231174577858 -0.00580364021825536
1.55000000000000 0.976506667137146 -0.125754763834189 -0.00399862953750100
1.56000000000000 0.976590000391007 -0.125296768436358 -0.00553045896313559
1.57000000000000 0.976653332710266 -0.124948756822278 -0.00525656545380120
1.58000000000000 0.976700000365575 -0.124692350624149 -0.00647749227391488
1.59000000000000 0.976790000200272 -0.124197943259200 -0.00561358559725699
1.60000000000000 0.976853334108988 -0.123850085447757 -0.00474168051791277
1.61000000000000 0.976913332939148 -0.123520592798238 -0.00422623112262671
1.62000000000000 0.976973333756129 -0.123191135376305 -0.00415277659066092
1.63000000000000 0.977050000429154 -0.122770234815717 -0.00463853748062707
1.64000000000000 0.977129999796550 -0.122331117983482 -0.00409135493502994
1.65000000000000 0.977176666657130 -0.122075001237547 -0.00440044737324113
1.66000000000000 0.977239999771118 -0.121727461439988 -0.00300569597944612
1.67000000000000 0.977296666701635 -0.121416545739723 -0.00316428837175479
1.68000000000000 0.977370000282923 -0.121014245698521 -0.00316819237219542
1.69000000000000 0.977439999977748 -0.120630299103985 -0.00333913222417426
1.70000000000000 0.977500000000000 -0.120301250283446 -0.00460603563632659
1.71000000000000 0.977553333441416 -0.120008800548805 -0.00286257019926090
1.72000000000000 0.977610000371933 -0.119698111670606 -0.00331784950939558
1.73000000000000 0.977679999272029 -0.119314383909412 -0.00272281543881660
1.74000000000000 0.977743332783381 -0.118967249068857 -0.00271987920981313
1.75000000000000 0.977786667346954 -0.118729759148057 -0.00291984239228051
1.76000000000000 0.977849999666214 -0.118382716954719 -0.00265887138358447
1.77000000000000 0.977900000015895 -0.118108766071159 -0.00304781865782646
1.78000000000000 0.977970000505447 -0.117725288324857 -0.00148861976742845
1.79000000000000 0.978019999663035 -0.117451420372089 -0.00414695289290331
1.80000000000000 0.978063333431880 -0.117214087498257 -0.00220443687694125
1.81000000000000 0.978119999567668 -0.116903771198761 -0.00244294833954917
1.82000000000000 0.978183333476385 -0.116556989029199 -0.00345659633596527
1.83000000000000 0.978249999682109 -0.116192016097293 -0.00379151467155537
1.84000000000000 0.978293333450953 -0.115954809956241 -0.00196670082839388
1.85000000000000 0.978330000638962 -0.115754114865117 -0.00343401219441312
1.86000000000000 0.978363333543142 -0.115571684543762 -0.00216514673934279
1.87000000000000 0.978426667054494 -0.115225100366517 -0.00420038864217331
1.88000000000000 0.978480000098546 -0.114933281902525 -0.00545496776253220
1.89000000000000 0.978540000518163 -0.114605025197891 -0.00257702464752724
1.90000000000000 0.978580000003179 -0.114386217112756 -0.00331731833707236
1.91000000000000 0.978616666396459 -0.114185659772170 -0.00366187336732322
1.92000000000000 0.978650000492732 -0.114003344176691 -0.00281248763212036
1.93000000000000 0.978706666231155 -0.113693452156162 -0.00116353042921872
1.94000000000000 0.978759999275208 -0.113401823051015 -0.00259436610191504
1.95000000000000 0.978813333511353 -0.113110223458788 -0.00136052060962499
1.96000000000000 0.978836666742961 -0.112982662679755 -0.00327923147466441
1.97000000000000 0.978883333603541 -0.112727559627789 -0.00205097254612820
1.98000000000000 0.978926666577657 -0.112490705851604 -0.00230172887355756
1.99000000000000 0.978969999551773 -0.112253875835701 -0.00210729800719165
2.00000000000000 0.979000000556310 -0.112089923660731 -0.00198181923896830
2.01000000000000 0.979033333460490 -0.111907776372595 -0.00249441638465463
2.02000000000000 0.979093333482742 -0.111579942315192 -0.00268167784802261
2.03000000000000 0.979123332897822 -0.111416045608207 -0.00196089962633099
2.04000000000000 0.979156666199366 -0.111233948118706 -0.00256024410494408
2.05000000000000 0.979183333317439 -0.111088277630700 -0.00151708933711475
2.06000000000000 0.979223333597183 -0.110869790913191 -0.000923168357227713
2.07000000000000 0.979253333806992 -0.110705939136850 -0.00299400499707772
2.08000000000000 0.979293333689372 -0.110487489950008 -0.00160234033408639
2.09000000000000 0.979319999615351 -0.110341871997018 -0.00176486855759767
2.10000000000000 0.979366666873296 -0.110087051869202 -0.00276634433341012
2.11000000000000 0.979386667013168 -0.109977852275790 -0.00395794073457375
2.12000000000000 0.979413333336512 -0.109832263560869 -0.00260090109512852
2.13000000000000 0.979450000524521 -0.109632088301100 -0.00230463167411342
2.14000000000000 0.979479999939601 -0.109468326676600 -0.00257592899462379
2.15000000000000 0.979503333568573 -0.109340960272890 -0.00100693017391792
2.16000000000000 0.979539999961853 -0.109140830962900 0
2.17000000000000 0.979563333590825 -0.109013482207766 -0.00231125194412904
2.18000000000000 0.979586666822433 -0.108886142482770 -0.00178229371672884
2.19000000000000 0.979620000123978 -0.108704239870753 -0.00255076939499388
2.20000000000000 0.979636666774750 -0.108613293814128 -0.000800200785157157
2.21000000000000 0.979660000801086 -0.108485971310552 -0.000316767290521802
2.22000000000000 0.979683332840602 -0.108358666504859 -0.00268006280942534
2.23000000000000 0.979709999561310 -0.108213175330761 -0.00203133868584265
2.24000000000000 0.979729999303818 -0.108104064451914 -0.00179167301339058
2.25000000000000 0.979743333260218 -0.108031322328111 -0.00116367640768096
2.26000000000000 0.979763333797455 -0.107922215506472 -0.00156989833625272
2.27000000000000 0.979779999653498 -0.107831303865221 -0.00365339419267337
2.28000000000000 0.979806667168935 -0.107685840805742 -0.00300195350119255
2.29000000000000 0.979830000400543 -0.107558572574959 -0.00323184272468884
2.30000000000000 0.979840000073115 -0.107504032692458 -0.00385283493548682
2.30999999999999 0.979853333234787 -0.107431313361154 -0.00231056792597243
2.31999999999999 0.979869999488195 -0.107340418425346 -0.00299487470305127
2.32999999999999 0.979886666138967 -0.107249524816260 -0.00212322679533941
2.33999999999999 0.979889999628067 -0.107231345646874 -0.00132322561968842
2.34999999999999 0.979920000632604 -0.107067741577775 -0.00443631902316722
2.35999999999999 0.979920000235240 -0.107067743744641 -0.00386215857562893
2.36999999999999 0.979926667213440 -0.107031388340310 -0.000483282900847752
2.37999999999999 0.979943333466848 -0.106940508774776 -0.00187664765755308
2.38999999999999 0.979959999720256 -0.106849632701372 -0.00233234564040181
2.39999999999999 0.979959999720256 -0.106849632701372 -0.00304278863589198
2.40999999999999 0.979966666301092 -0.106813282816397 -0.00187935668663900
2.41999999999999 0.979966666698456 -0.106813280649765 -0.00281146242896666
2.42999999999999 0.979986666043600 -0.106704236513409 -0.00159156917397298
2.43999999999999 0.979986666043599 -0.106704236513409 -0.00309777741903642
2.44999999999999 0.979996666510900 -0.106649711997507 -0.00203900509764005
2.45999999999999 0.979996666312218 -0.106649713080748 -0.00408489412568898
2.46999999999999 0.980006666580836 -0.106595190904958 -0.00278381246945792
2.47999999999999 0.979993332823118 -0.106667887779729 -0.00195502847452159
2.48999999999999 0.980009999871254 -0.106577017847792 -0.00317893233181643
2.49999999999999 0.980009999871254 -0.106577017847792 -0.00349145617646086
2.50999999999999 0.979996666312218 -0.106649713080748 -0.00456538891362015
2.51999999999999 0.980003333091736 -0.106613365184982 -0.00355205766559430
2.52999999999999 0.980013333161672 -0.106558844930255 -0.00402700105724367
2.53999999999999 0.980003333290418 -0.106613364101758 -0.00414957433208478
2.54999999999999 0.979989999532700 -0.106686061535112 -0.00433136644381113
2.55999999999999 0.979996666510900 -0.106649711997507 -0.00434235118370288
2.56999999999999 0.979986666440964 -0.106704234346875 -0.00503767446651542
2.57999999999999 0.979983332951864 -0.106722409464822 -0.00485320112882950
2.58999999999999 0.979979999462764 -0.106740584722440 -0.00551132775232146
2.59999999999999 0.979960000117620 -0.106849630534705 -0.00544259878187995
2.60999999999999 0.979963332811991 -0.106831458772374 -0.00652889340628113
2.61999999999999 0.979946666558584 -0.106922334147430 -0.00512049086528040
2.62999999999999 0.979943333466848 -0.106940508774776 -0.00446788097646257
2.63999999999999 0.979926666418711 -0.107031392673975 -0.00550887395682280
2.64999999999999 0.979913333654404 -0.107104097540977 -0.00578570436040206
2.65999999999999 0.979910000562668 -0.107122273565258 -0.00790339269069499
2.66999999999999 0.979896666606267 -0.107194987727357 -0.00566738792194890
2.67999999999999 0.979883332649867 -0.107267704125400 -0.00789672304202340
2.68999999999999 0.979879999160767 -0.107285883574300 -0.00702927783211347
2.69999999999999 0.979856667121252 -0.107413130626981 -0.00667694024627001
2.70999999999999 0.979840000073115 -0.107504032692458 -0.00668806982554102
2.71999999999999 0.979820000727971 -0.107613113715511 -0.00945740192394345
2.72999999999999 0.979806666771571 -0.107685842973174 -0.00812179898087077
2.73999999999999 0.979789999723435 -0.107776755523851 -0.00917126175905406
2.74999999999999 0.979766666889191 -0.107904033332083 -0.00972369676888354
2.75999999999999 0.979743333260218 -0.108031322328111 -0.00978176787343009
2.76999999999999 0.979739999771118 -0.108049507649231 -0.0106328714583969
2.77999999999998 0.979706666469574 -0.108231359882885 -0.0113300882239846
2.78999999999998 0.979693333307902 -0.108304103826230 -0.00936222048583495
2.79999999999998 0.979660000403722 -0.108485973478719 -0.0117506887026474
2.80999999999998 0.979639999866486 -0.108595106323666 -0.0119864429172659
2.81999999999998 0.979606666564941 -0.108777000536710 -0.0116921036422925
2.82999999999998 0.979589999914169 -0.108867952892690 -0.0123121088826255
,
这个可能需要企业版才能计算吧。
这个是否有可能 求解x的解析解? ,这样就可以直接带入p方程拟合
Parameter fac(1:7);
Variable t,lamb,pa,p;
ParVariable lambv;
Constant A=0.02,w=2*pi*0.1;
ConstStr lambdif=A*w*cos(w*t),
lambvdif=((1/3/fac7)*(fac1*((lamb/lambv)^fac2-(lambv/lamb)^(0.5*fac2))+fac3*((lamb/lambv)^fac4
-(lambv/lamb)^(0.5*fac4))+fac5*((lamb/lambv)^fac6-(lambv/lamb)^(0.5*fac6))));
//InitialODEValue t=0,p=-0.060966222;
OdeFunction p'=pa+fac1*((fac2-1)*lamb^(fac2-2)*lambv^(-fac2)*lambdif-fac2*lamb^(fac2-1)*lambv^(-fac2-1)*lambvdif
+(0.5*fac2+1)*lamb^(-0.5*fac2-2)*lambv^(0.5*fac2)*lambdif-0.5*fac2*lamb^(-0.5*fac2-1)*lambv^(0.5*fac2-1)*lambvdif)
+fac3*((fac4-1)*lamb^(fac4-2)*lambv^(-fac4)*lambdif-fac4*lamb^(fac4-1)*lambv^(-fac4-1)*lambvdif+(0.5*fac4+1)*lamb^(-0.5*fac4-2)*lambv^(0.5*fac4)*lambdif
-0.5*fac4*lamb^(-0.5*fac4-1)*lambv^(0.5*fac4-1)*lambvdif)+fac5*((fac6-1)*lamb^(fac6-2)*lambv^(-fac6)*lambdif
-fac6*lamb^(fac6-1)*lambv^(-fac6-1)*lambvdif+(0.5*fac6+1)*lamb^(-0.5*fac6-2)*lambv^(0.5*fac6)*lambdif
-0.5*fac6*lamb^(-0.5*fac6-1)*lambv^(0.5*fac6-1)*lambvdif);
Data;
0 0.959926667 -0.218715994 -0.060966222
0.25 0.963063333 -0.200840559 -0.046836278
0.5 0.96612 -0.183553472 -0.035042256
0.75 0.969016667 -0.167289626 -0.024438988
1 0.97171 -0.152268899 -0.01706765
1.25 0.97409 -0.139075651 -0.010939712
1.5 0.976123333 -0.127862697 -0.006795087
1.75 0.977786667 -0.118729759 -0.002919842
2 0.979000001 -0.112089924 -0.001981819
2.25 0.979743333 -0.108031322 -0.001163676
2.5 0.98001 -0.106577018 -0.003491456
2.75 0.979766667 -0.107904033 -0.009723697
我用matlab求解了一下,这个应该是没有解析解。还是谢谢您
可以参考一下这个结果。 数据点太多了,数据趋势明显,可以抽取部分数据拟合。
均方差(RMSE): 8.9424225760802E-18
残差平方和(SSR): 1.91920611670053E-33
相关系数(R): 0.458333333333333
相关系数之平方(R^2): 0.210069444444444
修正R平方(Adj. R^2): 0.261904761904762
确定系数(DC): 0.458333333333333
F统计(F-Statistic): -5.22814936168938E29
参数 最佳估算
-------------------- -------------
fac1 3.03402198409604
fac2 0.426767353785268
fac3 -0.162134252603988
fac4 0
fac5 0
fac6 2.21639117580836
fac7 0.00666909053919589
lambv0 -0.0642609952712269
lambv1 -0.122299617461866
lambv2 -0.179059212190809
lambv3 -0.221947016217867
lambv4 -0.260568155058273
lambv5 -0.288634667671384
lambv6 -0.316783379508389
lambv7 -0.323931620009045
lambv8 -0.33038253736283
lambv9 -0.311755103592339
lambv10 -0.262350065039908
lambv11 0
====== 结果输出 ======
文件: 数据文件-1
No t 目标 p 计算 p 目标 lambv 计算 lambv
1 0.25 -0.046836278 -0.046836278 0 0
2 0.5 -0.035042256 -0.035042256 0 0
3 0.75 -0.024438988 -0.024438988 0 0
4 1 -0.01706765 -0.01706765 0 0
5 1.25 -0.010939712 -0.010939712 0 0
6 1.5 -0.006795087 -0.00679508699999998 0 0
7 1.75 -0.002919842 -0.002919842 0 0
8 2 -0.001981819 -0.00198181899999999 0 0
9 2.25 -0.001163676 -0.001163676 0 0
10 2.5 -0.003491456 -0.00349145600000001 0 0
11 2.75 -0.009723697 -0.00972369699999999 0 0
尝试用OpenLu(可从www.forcal.net下载)求解,与大家探讨。
使用 1楼 给出的第一种公式。未知中间变量lambv用解方程法求解,但不知这种方法有没有问题?
仍类似于 4楼 使用部分数据拟合,以减少运行时间。
Lu脚本代码:
!!!using["luopt","math"]; //使用命名空间
g(lambv :: fac1,fac2,fac3,fac4,fac5,fac6,fac7,lamb)= ((1.0/3/fac7)*(fac1*((lamb/lambv)^fac2-(lambv/lamb)^(0.5*fac2))+fac3*((lamb/lambv)^fac4-(lambv/lamb)^(0.5*fac4))+fac5*((lamb/lambv)^fac6-(lambv/lamb)^(0.5*fac6))))-lambv;
f(t,_lamb,lambv,pp : x : fac1,fac2,fac3,fac4,fac5,fac6,fac7,lamb) =
lamb=_lamb, x=lamb,
if{pqrt[@g,&x,1e-6]<=0, return(1)}, //连分式法解方程,返回迭代次数,迭代次数<=0,求解失败
lambv=x,
0; //成功返回0
pp(pa,p,lamb,lambv :: fac1,fac2,fac3,fac4,fac5,fac6,fac7) =
(pa+fac1*((lamb/lambv)^fac2/lamb-(lambv/lamb)^(fac2*0.5)/lamb)+fac3*((lamb/lambv)^fac4/lamb-(lambv/lamb)^(fac4*0.5)/lamb)+fac5*((lamb/lambv)^fac6/lamb-(lambv/lamb)^(fac6*0.5)/lamb)) - p;
目标函数(_fac1,_fac2,_fac3,_fac4,_fac5,_fac6,_fac7 : i,s,tf : t_A, t_lamb, t_pa, t_p, max, fac1,fac2,fac3,fac4,fac5,fac6,fac7,la)=
{
fac1=_fac1, fac2=_fac2, fac3=_fac3, fac4=_fac4, fac5=_fac5, fac6=_fac6, fac7=_fac7, //传递优化变量
la[0]=t_lamb[0,0],
//最后一个参数50表示gsl_ode函数在计算时,最多循环计算50次,这样可以提高速度
tf=gsl_ode[@f, nil, 0.0, t_A, la, 1e-6, 1e-6, gsl_rkf45, 1e-6,50],
i=-1, s=0, while{++i<max,
s=s+pp[t_pa(i,0),t_p(i,0),t_lamb(i,0),tf(i,1)]^2.0
},
s
};
main(: tArray : t_A, t_lamb, t_pa, t_p, max, la)=
{
tArray=matrix{ //存放实验数据//t,lamb,pa,p
"0 0.959926667 -0.218715994 -0.060966222
0.25 0.963063333 -0.200840559 -0.046836278
0.5 0.96612 -0.183553472 -0.035042256
0.75 0.969016667 -0.167289626 -0.024438988
1 0.97171 -0.152268899 -0.01706765
1.25 0.97409 -0.139075651 -0.010939712
1.5 0.976123333 -0.127862697 -0.006795087
1.75 0.977786667 -0.118729759 -0.002919842
2 0.979000001 -0.112089924 -0.001981819
2.25 0.979743333 -0.108031322 -0.001163676
2.5 0.98001 -0.106577018 -0.003491456
2.75 0.979766667 -0.107904033 -0.009723697"
},
len[tArray,0,&max], t_A=tArray(all:0), t_lamb=tArray(all:1), t_pa=tArray(all:2), t_p=tArray(all:3), //用len函数取矩阵的行数,t_A等取矩阵的列
la=ra1[0], //预先申请数组
Opt1[@目标函数, optwaysimdeep, optwayconfra] //Opt1函数全局优化
};
微分方程+解方程,耗时长,未多次求解,故结果不是最优的:
1.953313036693719 -2.867510001653266e-002 -0.2767401112856916 -3.629687916321768 -0.2763230915848823 7.260677042953397 -0.3201568717886613 2.502852593689372e-002
Lu 脚本 绘图代码,但不知道如何贴图?可以看到,第一个点没有拟合好。
!!!using["luopt","math","win"]; //使用命名空间
g(lambv :: fac1,fac2,fac3,fac4,fac5,fac6,fac7,lamb)= ((1.0/3/fac7)*(fac1*((lamb/lambv)^fac2-(lambv/lamb)^(0.5*fac2))+fac3*((lamb/lambv)^fac4-(lambv/lamb)^(0.5*fac4))+fac5*((lamb/lambv)^fac6-(lambv/lamb)^(0.5*fac6))))-lambv;
f(t,_lamb,lambv,pp : x : fac1,fac2,fac3,fac4,fac5,fac6,fac7,lamb) =
lamb=_lamb, x=lamb,
if{pqrt[@g,&x,1e-6]<=0, return(1)}, //连分式法解方程,返回迭代次数,迭代次数<=0,求解失败
lambv=x,
0; //成功返回0
pp(pa,lamb,lambv :: fac1,fac2,fac3,fac4,fac5,fac6,fac7) =
(pa+fac1*((lamb/lambv)^fac2/lamb-(lambv/lamb)^(fac2*0.5)/lamb)+fac3*((lamb/lambv)^fac4/lamb-(lambv/lamb)^(fac4*0.5)/lamb)+fac5*((lamb/lambv)^fac6/lamb-(lambv/lamb)^(fac6*0.5)/lamb));
set(_fac1,_fac2,_fac3,_fac4,_fac5,_fac6,_fac7 :: fac1,fac2,fac3,fac4,fac5,fac6,fac7)=
{
fac1=_fac1, fac2=_fac2, fac3=_fac3, fac4=_fac4, fac5=_fac5, fac6=_fac6, fac7=_fac7 //传递优化变量
};
init(main : tArray, tf, i, k, t_pp,t_lambv : t_A, t_lamb, t_pa, t_p, max)=
{
tArray=matrix{ //存放实验数据//t,lamb,pa,p
"0 0.959926667 -0.218715994 -0.060966222
0.25 0.963063333 -0.200840559 -0.046836278
0.5 0.96612 -0.183553472 -0.035042256
0.75 0.969016667 -0.167289626 -0.024438988
1 0.97171 -0.152268899 -0.01706765
1.25 0.97409 -0.139075651 -0.010939712
1.5 0.976123333 -0.127862697 -0.006795087
1.75 0.977786667 -0.118729759 -0.002919842
2 0.979000001 -0.112089924 -0.001981819
2.25 0.979743333 -0.108031322 -0.001163676
2.5 0.98001 -0.106577018 -0.003491456
2.75 0.979766667 -0.107904033 -0.009723697"
},
len[tArray,0,&max], t_A=tArray(all:0), t_lamb=tArray(all:1), t_pa=tArray(all:2), t_p=tArray(all:3), //用len函数取矩阵的行数,t_A等取矩阵的列
set[1.953313036693719 , -2.867510001653266e-002 , -0.2767401112856916 , -3.629687916321768 , -0.2763230915848823 , 7.260677042953397 , -0.3201568717886613 ],
t_pp=new[real_s,max], t_lambv=new[real_s,max],
//最后一个参数50表示gsl_ode函数在计算时,最多循环计算50次,这样可以提高速度
tf=gsl_ode[@f, nil, 0.0, t_A, ra1(t_lamb[0,0]), 1e-6, 1e-6, gsl_rkf45, 1e-6,50],
i=-1, while{++i<max, t_pp=pp[t_pa(i,0),t_lamb(i,0),tf(i,1)], t_lambv=tf(i,1)},
t_A=reshape(t_A),
o[t_lambv, t_pp],
cwAttach[typeSplit], cwResizePlots(1,2,2), //左二右二分裂
k=cwAddCurve{t_A, t_p.reshape(), max, 0}, //给0子图添加曲线
cwSetScatter(k,0), //设置绘制点
cwSetDataLineSize(5, k, 0), //设置点的大小
cwAddCurve{t_A, t_pp, max, 0}, //给0子图添加曲线
cwAddCurve{t_A, t_lamb.reshape(), max, 1}, //给1子图添加曲线
cwAddCurve{t_A, t_pa.reshape(), max, 2}, //给2子图添加曲线
cwAddCurve{t_A, t_lambv, max, 3} //给3子图添加曲线
};
ChartWnd[@init];