声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1938|回复: 7

[编程技巧] 请大家看看这个方程组用solve为什么解不出来啊

[复制链接]
发表于 2009-2-27 00:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用solve函数,6个方程,6个未知数,为什么解不出来呢。请大家指点一下吧。我还试过fsolve,也不行。是不是需要数值方法呢?菜鸟一只,请多包涵。谢谢!
syms A b1 b2 g1 g2 R0
S1=g1*(log((R0+A)*exp(b1*16000)-A)-log(R0))/(b1*(R0+A))-1000;
S2=g2*(log((R0+A)*exp(b2*44)-A)-log(R0))/(b2*(R0+A))-1000;
S3=g2*(log((R0+A)*exp(b2*22)-A)-log(R0))/(b2*(R0+A))+g1*(log((R0+A)*exp(b2*22+b1*3781)-A)-log((R0+A)*exp(b2*22)-A))/(b1*(R0+A))-1000;
S4=g1*(log((R0+A)*exp(b1*50)-A)-log(R0))/(b1*(R0+A))+g2*(log((R0+A)*exp(b1*50+b2*86)-A)-log((R0+A)*exp(b1*50)-A))/(b2*(R0+A))-1000;
S5=g1*(log((R0+A)*exp(b1*150)-A)-log(R0))/(b1*(R0+A))+g2*(log((R0+A)*exp(b1*150+b2*84)-A)-log((R0+A)*exp(b1*84)-A))/(b2*(R0+A))-1000;
S6=g1*(log((R0+A)*exp(b1*200)-A)-log(R0))/(b1*(R0+A))+g2*(log((R0+A)*exp(b1*200+b2*116)-A)-log((R0+A)*exp(b1*116)-A))/(b2*(R0+A))-1000;
result=solve(S1,S2, S3, S4, S5, S6,'A,b1,b2,g1,g2,R0');

[ 本帖最后由 ChaChing 于 2009-2-27 10:07 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-2-27 10:13 | 显示全部楼层
用fsolve可以解,但和初值的选择有很大关系,楼主如果知道各个参量的大致范围就容易解了。
发表于 2009-2-27 10:24 | 显示全部楼层

回复 楼主 chinapenguin 的帖子

我怎可跑出答案? v5.3版本
?syms A b1 b2 g1 g2 R0
...
result=solve(S1,S2, S3, S4, S5, S6,'A,b1,b2,g1,g2,R0');
?aa=double(cell2mat(struct2cell(result)))

aa =
-4.7699e+000
  8.0748e+000
-4.8742e+000
-4.6475e+000
  3.0600e+004
  2.9177e+004
发表于 2009-2-27 11:13 | 显示全部楼层
A=-4.7699e+000
b1= 8.0748e+000
b2=-4.8742e+000
g1=-4.6475e+000
g2= 3.0600e+004
  R0=2.9177e+004
是这样对应吗
发表于 2009-2-27 14:08 | 显示全部楼层
用1stOpt试了一下,似乎不止一组解:

a: -0.554726189316617
b1: -2.2189975646296
b2: -96.0866384279688
g1: 3317.94513551457
g2: 143673.070958611
r0: 3.15284091657357

评分

1

查看全部评分

发表于 2009-2-27 14:57 | 显示全部楼层

回复 5楼 dingd 的帖子

看来1stOpt在这方面挺有优势的,有楼上的初值x0=[-0.5;-2.2;-96.0;3317.9;143673.0;3.15];用fsolve进行求解,过程如下:


                                         Norm of      First-order   Trust-region
Iteration  Func-count     f(x)          step         optimality    radius
     0          7         12127.6                     1.99e+005               1
     1         14         38.2904      0.0535667      9.29e+003               1
     2         21         7.73775     0.00300126      1.26e+003               1
     3         28         1.23234     0.00491511      1.69e+003               1
     4         35        0.191946    0.000555869            198               1
     5         42       0.0281542    0.000784561            257               1
     6         49      0.00411379   8.45516e-005           28.9               1
     7         56     0.000595228    0.000115097           37.4               1
     8         63    8.60752e-005    1.2306e-005           4.18               1
     9         70    1.24293e-005   1.66539e-005            5.4               1
    10         77    1.79464e-006   1.77852e-006          0.604               1
    11         84    2.59071e-007   2.40483e-006           0.78               1
    12         91    3.73986e-008   2.56776e-007         0.0871               1
    13         98    5.39854e-009   3.47157e-007          0.113               1
    14        105    7.79287e-010   3.70668e-008         0.0126               1
    15        112     1.1249e-010   5.01127e-008         0.0163               1
    16        119     1.6238e-011   5.35062e-009        0.00182               1
    17        126    2.34396e-012    7.2338e-009        0.00235               1
    18        133    3.38349e-013   7.72363e-010       0.000262               1
    19        140    4.88419e-014   1.04419e-009       0.000339               1
Optimization terminated: relative function value changing by less
than max(options.TolFun^2,eps) and sum-of-squares of function
values is less than sqrt(options.TolFun).
>> vpa(res,10)

ans =

-.5522800582
-2.216976596
-96.00038563
  3317.899989
  143673.0000
  3.165194150
我采用solve求解,一直busy。即使求解出,可能也需要好长时间。

评分

1

查看全部评分

 楼主| 发表于 2009-3-3 12:04 | 显示全部楼层
真的非常谢谢大家的帮助啊!!我用了1st Opt, 得到了很多组解。并且在1st Opt里面用了约束条件,效果也不错。呵呵,以后就用1st Opt偷懒了。但是有一点遗憾的是:用1st Opt求的解,总有一个方程error比较大,其中大概是第三个方程,总是误差在10%的样子,其他方程就基本没有误差。

[ 本帖最后由 chinapenguin 于 2009-3-3 12:07 编辑 ]
发表于 2012-5-28 11:49 | 显示全部楼层
书到用时方恨少啊。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 22:00 , Processed in 0.061779 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表