skdyyf 发表于 2010-8-17 10:19:19

利用MATLAB求解非线性方程组问题

各位学友好,我在利用牛顿迭代法回归公式参数时遇到一些麻烦,请帮忙调试一下吧。谢谢了!下面是三个非线性方程,求解k,a,b.
F1=
- (47/5)^a*(886/25)^b*((47/5)^a*(886/25)^b*k - 79/12500) - (47/5)^a*(4903/100)^b*((47/5)^a*(4903/100)^b*k - 47/12500) - (28/5)^a*(182/5)^b*((28/5)^a*(182/5)^b*k - 129/25000) - (58/5)^a*(559/25)^b*((58/5)^a*(559/25)^b*k - 333/25000) - (47/5)^a*(1393/50)^b*((47/5)^a*(1393/50)^b*k - 241/25000) - (64/5)^a*(2731/100)^b*((64/5)^a*(2731/100)^b*k - 301/25000) - (28/5)^a*(4317/100)^b*((28/5)^a*(4317/100)^b*k - 87/25000) - (28/5)^a*(461/10)^b*((28/5)^a*(461/10)^b*k - 209/50000) - (28/5)^a*(1803/100)^b*((28/5)^a*(1803/100)^b*k - 793/50000) - (28/5)^a*(2973/100)^b*((28/5)^a*(2973/100)^b*k - 291/50000) - (58/5)^a*(5099/100)^b*((58/5)^a*(5099/100)^b*k - 193/50000) - (28/5)^a*(559/25)^b*((28/5)^a*(559/25)^b*k - 1067/100000) - (58/5)^a*(883/20)^b*((58/5)^a*(883/20)^b*k - 479/100000) - (58/5)^a*(934/25)^b*((58/5)^a*(934/25)^b*k - 549/100000) - (28/5)^a*(627/25)^b*((28/5)^a*(627/25)^b*k - 1237/100000) - (28/5)^a*(781/50)^b*((28/5)^a*(781/50)^b*k - 1431/100000) - (47/5)^a*(2059/100)^b*((47/5)^a*(2059/100)^b*k - 1433/100000) - (58/5)^a*(2973/100)^b*((58/5)^a*(2973/100)^b*k - 911/100000) - (28/5)^a*(3257/100)^b*((28/5)^a*(3257/100)^b*k - 663/100000) - (28/5)^a*(3929/100)^b*((28/5)^a*(3929/100)^b*k - 601/100000)=0;

F2=
- 5045629660834333/2251799813685248*(47/5)^a*(886/25)^b*((47/5)^a*(886/25)^b*k - 79/12500) - 5045629660834333/2251799813685248*(47/5)^a*(4903/100)^b*((47/5)^a*(4903/100)^b*k - 47/12500) - 7758651007633171/4503599627370496*(28/5)^a*(182/5)^b*((28/5)^a*(182/5)^b*k - 129/25000) - 5519172823270913/2251799813685248*(58/5)^a*(559/25)^b*((58/5)^a*(559/25)^b*k - 333/25000) - 5045629660834333/2251799813685248*(47/5)^a*(1393/50)^b*((47/5)^a*(1393/50)^b*k - 241/25000) - 5740840160890957/2251799813685248*(64/5)^a*(2731/100)^b*((64/5)^a*(2731/100)^b*k - 301/25000) - 7758651007633171/4503599627370496*(28/5)^a*(4317/100)^b*((28/5)^a*(4317/100)^b*k - 87/25000) - 7758651007633171/4503599627370496*(28/5)^a*(461/10)^b*((28/5)^a*(461/10)^b*k - 209/50000) - 7758651007633171/4503599627370496*(28/5)^a*(1803/100)^b*((28/5)^a*(1803/100)^b*k - 793/50000) - 7758651007633171/4503599627370496*(28/5)^a*(2973/100)^b*((28/5)^a*(2973/100)^b*k - 291/50000) - 5519172823270913/2251799813685248*(58/5)^a*(5099/100)^b*((58/5)^a*(5099/100)^b*k - 193/50000) - 7758651007633171/4503599627370496*(28/5)^a*(559/25)^b*((28/5)^a*(559/25)^b*k - 1067/100000) - 5519172823270913/2251799813685248*(58/5)^a*(883/20)^b*((58/5)^a*(883/20)^b*k - 479/100000) - 5519172823270913/2251799813685248*(58/5)^a*(934/25)^b*((58/5)^a*(934/25)^b*k - 549/100000) - 7758651007633171/4503599627370496*(28/5)^a*(627/25)^b*((28/5)^a*(627/25)^b*k - 1237/100000) - 7758651007633171/4503599627370496*(28/5)^a*(781/50)^b*((28/5)^a*(781/50)^b*k - 1431/100000) - 5045629660834333/2251799813685248*(47/5)^a*(2059/100)^b*((47/5)^a*(2059/100)^b*k - 1433/100000) - 5519172823270913/2251799813685248*(58/5)^a*(2973/100)^b*((58/5)^a*(2973/100)^b*k - 911/100000) - 7758651007633171/4503599627370496*(28/5)^a*(3257/100)^b*((28/5)^a*(3257/100)^b*k - 663/100000) - 7758651007633171/4503599627370496*(28/5)^a*(3929/100)^b*((28/5)^a*(3929/100)^b*k - 601/100000)=0;

F3=
- 1004257997774109/281474976710656*(47/5)^a*(886/25)^b*((47/5)^a*(886/25)^b*k - 79/12500) - 4382489226632347/1125899906842624*(47/5)^a*(4903/100)^b*((47/5)^a*(4903/100)^b*k - 47/12500) - 8094249297019231/2251799813685248*(28/5)^a*(182/5)^b*((28/5)^a*(182/5)^b*k - 129/25000) - 6996958222281519/2251799813685248*(58/5)^a*(559/25)^b*((58/5)^a*(559/25)^b*k - 333/25000) - 7492170254429321/2251799813685248*(47/5)^a*(1393/50)^b*((47/5)^a*(1393/50)^b*k - 241/25000) - 3723635771968247/1125899906842624*(64/5)^a*(2731/100)^b*((64/5)^a*(2731/100)^b*k - 301/25000) - 264948582265051/70368744177664*(28/5)^a*(4317/100)^b*((28/5)^a*(4317/100)^b*k - 87/25000) - 539138992942431/140737488355328*(28/5)^a*(461/10)^b*((28/5)^a*(461/10)^b*k - 209/50000) - 3256144230786041/1125899906842624*(28/5)^a*(1803/100)^b*((28/5)^a*(1803/100)^b*k - 793/50000) - 3819228841605155/1125899906842624*(28/5)^a*(2973/100)^b*((28/5)^a*(2973/100)^b*k - 291/50000) - 4426621327271717/1125899906842624*(58/5)^a*(5099/100)^b*((58/5)^a*(5099/100)^b*k - 193/50000) - 6996958222281519/2251799813685248*(28/5)^a*(559/25)^b*((28/5)^a*(559/25)^b*k - 1067/100000) - 8528901047446683/2251799813685248*(58/5)^a*(883/20)^b*((58/5)^a*(883/20)^b*k - 479/100000) - 2038216946648547/562949953421312*(58/5)^a*(934/25)^b*((58/5)^a*(934/25)^b*k - 549/100000) - 3627729118719845/1125899906842624*(28/5)^a*(627/25)^b*((28/5)^a*(627/25)^b*k - 1237/100000) - 3094594603345047/1125899906842624*(28/5)^a*(781/50)^b*((28/5)^a*(781/50)^b*k - 1431/100000) - 3405628254355651/1125899906842624*(47/5)^a*(2059/100)^b*((47/5)^a*(2059/100)^b*k - 1433/100000) - 3819228841605155/1125899906842624*(58/5)^a*(2973/100)^b*((58/5)^a*(2973/100)^b*k - 911/100000) - 7843900599305793/2251799813685248*(28/5)^a*(3257/100)^b*((28/5)^a*(3257/100)^b*k - 663/100000) - 2066572409409471/562949953421312*(28/5)^a*(3929/100)^b*((28/5)^a*(3929/100)^b*k - 601/100000)=0;

lin2009 发表于 2010-8-18 09:43:31

用fsolve,改变不同的初值试试。
方程组有多种解,下面仅列出几组。
a: -313.969738632585
b: -513.945049352261
k: 106.784472855263

a: -253.578505369882
b: -258.123935262689
k: 1.24698219392663

a: -215.109660986157
b: -258.234964089201
k: 20.1788162240007

a: -211.882879500072
b: -258.961773292828
k: 24.1287795725219


a: -206.284866731229
b: -257.463918841601
k: 2.07006085296422

a: -205.829597278142
b: -256.849486473143
k: 32.6418564749706

a: -203.606627948683
b: -258.674385351111
k: 4.43786886839912

a: -202.990753825663
b: -258.650399830472
k: 23.3637426947741

a: -186.101474150954
b: -257.184739144989
k: 25.2264870804092
...

wanglu 发表于 2010-8-18 16:37:41

由于公式中存在大指数运算,上面的解似乎是有问题的。
例如将任一组解带入公式中的指数部分,都为0.

wanglu 发表于 2010-8-23 17:51:36

大家看看这组解是正解吗?
k=0.36154220483986632, a=0.32752676871140951, b=-1.3185681472581878

lin2009 发表于 2010-8-23 18:27:29

3# wanglu
由于公式中存在大指数运算,上面的解似乎是有问题的。
例如将任一组解带入公式中的指数部分,都为0.
wanglu 发表于 2010-8-18 16:37 http://forum.simwe.com/images/common/back.gif

没看明白,F1、F2、F3表达式中的指数不是a就是b.

wanglu 发表于 2010-8-23 18:55:15


没看明白,F1、F2、F3表达式中的指数不是a就是b.
lin2009 发表于 2010-8-23 18:27 http://forum.simwe.com/images/common/back.gif
怪我说的不明确,呵呵。

例如:(47/5)^a*(886/25)^b*((47/5)^a*(886/25)^b*k - 79/12500)

当a和b为-200左右时,该式为0.

即:(47/5)^a*(886/25)^b*((47/5)^a*(886/25)^b*k - 79/12500) =0×(0- 79/12500) =0

F1、F2、F3表达式基本上是类似的计算部分组成的。
页: [1]
查看完整版本: 利用MATLAB求解非线性方程组问题