forcal 发表于 2011-1-15 17:04

求方程组全部解

Forcal优化库FcOpt中新增函数fcopt::solve,试图求解方程的全部解。正在测试修改,请大家多提意见。
参考:http://www.forcal.net/sysm/forcal9/fchtm/fcopt.htm

例子1:解方程组:
(x-y)^2-3*(x-y) = 10
x^2+2*x*y+y^2 = 9
代码:
f(x,y,y1,y2)=
{
  y1=(x-y)^2-3*(x-y)-10,
  y2=x^2+2*x*y+y^2-9
};
fcopt::solve;
结果:
0.5                       2.5                       0.
-2.5                      -0.5                      0.
1.000000000225044         -4.00000000022569         2.231017652693784e-009
4.000000000395746         -1.00000000039106         3.894538219597456e-009
4.

例子2:解方程组:
2*x1-x2^2-exp(-x1) = 0
-(x1^3)+x1*x2-exp(-x2) = 0
代码:
f(x1,x2,y1,y2)=
{
  y1=2*x1-x2^2-exp(-x1),
  y2=-(x1^3)+x1*x2-exp(-x2)
};
fcopt::solve;
结果:
0.7914550065632104        1.062885264188035         0.
0.9977869653328695        1.275491849454102         3.925231146709438e-017
2.

例子3:解方程组:t取-7~7
-b*sin(a+6*t)+n-40.4945=0
-b*sin(a+7*t)+n-40.5696=0
-b*sin(a+8*t)+n-41.0443=0
-b*sin(a+9*t)+n-41.4190=0
代码:
!using["fcopt"];
f(a,b,n,t,y1,y2,y3,y4)=
{
  y1=-b*sin(a+6*t)+n-40.4945,
  y2=-b*sin(a+7*t)+n-40.5696,
  y3=-b*sin(a+8*t)+n-41.0443,
  y4=-b*sin(a+9*t)+n-41.4190
};
solve;
一种可能的结果(该方程组有无穷解):
-2.140093203561007        -0.4915300827061839       40.94928398718974         1.077226214994063         3.552713678800501e-015
-11.56487116433041        0.491530082706186         40.94928398718974         1.077226214994066         5.024295867788081e-015
-8.423278510740103        -0.4915300827061995       40.94928398718977         1.077226214993991         8.702335715267317e-015
2555.116326818533         -0.4915300827062283       40.94928398718988         1.07722621499373          4.819135301037582e-014
1.001499450023601         0.4915300827059401        40.94928398718962         -5.205959092184797        1.64387405750109e-013
-17.84805647151125        0.4915300827056817        40.9492839871897          1.077226214994272         3.642354617502926e-013
3146.874339449554         -0.4915300825865869       40.94928398712157         -1.077226215397079        1.198690006101687e-010
4.14309210834897          -0.4915300817987574       40.94928398665894         -5.205959092793353        8.618584276014861e-010
5628.732535974947         -0.491530080064976        40.9492839770687          -1.077226245248003        7.394104227928194e-009
1934.219575147075         -0.4915300766540718       40.94928398081019         -1.077226212465366        8.617217026839414e-009
10.

forcal 发表于 2011-1-15 17:29

例子4:解如下含积分的方程组

Forcal代码:
!using["fcopt","IMSL"];
pp(x::p)=exp{-[(x/p)^2]};
f(pp,q,y1,y2::p)=
{
    p=pp,
    y1=q*QDAGS-1.99,
    y2=q*QDAGS-2.87
};
solve;

结果:
3.20186397420115          1.074732389098163         0.
-3.20186397420115         -1.074732389098163        0.

fif1fds00712 发表于 2011-1-15 19:00

来看看啊!

李——建辉 发表于 2012-1-21 20:17

我基本上是采用看英语文章的办法,先泛读,再精读,再一句一句看,最后再提纲挈领,总算是明白一点了,当然,也可能还是领悟错了。最后要说的一句话是:楼主,你很牛叉,希望你不是真的有病。103780

zqyzixin 发表于 2012-8-31 15:55

謝謝,希望以後多些
页: [1]
查看完整版本: 求方程组全部解