请大家看看这个方程组用solve为什么解不出来啊
我用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 编辑 ] 用fsolve可以解,但和初值的选择有很大关系,楼主如果知道各个参量的大致范围就容易解了。
回复 楼主 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 A=-4.7699e+000
b1= 8.0748e+000
b2=-4.8742e+000
g1=-4.6475e+000
g2= 3.0600e+004
R0=2.9177e+004
是这样对应吗 用1stOpt试了一下,似乎不止一组解:
a: -0.554726189316617
b1: -2.2189975646296
b2: -96.0866384279688
g1: 3317.94513551457
g2: 143673.070958611
r0: 3.15284091657357
回复 5楼 dingd 的帖子
看来1stOpt在这方面挺有优势的,有楼上的初值x0=[-0.5;-2.2;-96.0;3317.9;143673.0;3.15];用fsolve进行求解,过程如下:Norm of First-order Trust-region
IterationFunc-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。即使求解出,可能也需要好长时间。 真的非常谢谢大家的帮助啊!!我用了1st Opt, 得到了很多组解。并且在1st Opt里面用了约束条件,效果也不错。呵呵,以后就用1st Opt偷懒了。但是有一点遗憾的是:用1st Opt求的解,总有一个方程error比较大,其中大概是第三个方程,总是误差在10%的样子,其他方程就基本没有误差。
[ 本帖最后由 chinapenguin 于 2009-3-3 12:07 编辑 ] 书到用时方恨少啊。{:{19}:}
页:
[1]