neey 发表于 2007-12-5 00:28

非线性方程组的初值选取问题

我是一名初学者,需要解下面这个非线性方程组,但是不知道初值,无法用fsolve,在matlab里该怎么解决。其中除了x,y,z都是已知量

f=((x2-x)*v1+(y2-y)*v2+(z2-z)*v3)/r2-((x1-x)*v4+(y1-y)*v5+(z1-z)*v6)/r1
r2=sqrt((x2-x)^2+(y2-y)^2+(z2-z)^2)
r1=sqrt((x1-x)^2+(y1-y)^2+(z1-z)^2)
r2-r1=c
r=sqrt(x^2+y^2+z^2)
我已经看了论坛里有关非线性方程组的帖子,还是没有找到思路,自己也想了很久,已经
花了好久时间了,恳请各位高手指点

[ 本帖最后由 eight 于 2007-12-5 10:40 编辑 ]

VibrationMaster 发表于 2007-12-5 07:44

取一些特殊情况, 比如v1=0,v2=1等,自己找一下感觉。 通常说来,非线性的东西没有一统江湖的办法。

dingd 发表于 2007-12-5 08:53

试一下1stOpt,不需猜初值。
如:
Constant x1=1,x2=2,y1=3,y2=4,z1=5,z2=6,c=1,r=9,v1=0.2,v2=3,v3=4,v4=2,v5=7,v6=10;
ConstStr r2=sqrt((x2-x)^2+(y2-y)^2+(z2-z)^2),
             r1=sqrt((x1-x)^2+(y1-y)^2+(z1-z)^2);
Function ((x2-x)*v1+(y2-y)*v2+(z2-z)*v3)/r2-((x1-x)*v4+(y1-y)*v5+(z1-z)*v6)/r1;
             r2-r1=c;
             r=sqrt(x^2+y^2+z^2);

结果:
x: -5.96181549118209
y: 2.73752292347617
z: 6.16138980203674

neey 发表于 2007-12-6 18:50

谢谢大家的帮助,开始研究这个东西了
页: [1]
查看完整版本: 非线性方程组的初值选取问题