求方程组全部解
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.
例子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.
来看看啊! 我基本上是采用看英语文章的办法,先泛读,再精读,再一句一句看,最后再提纲挈领,总算是明白一点了,当然,也可能还是领悟错了。最后要说的一句话是:楼主,你很牛叉,希望你不是真的有病。103780 謝謝,希望以後多些
页:
[1]