作业帮 > 综合 > 作业

非线性方程解析解-x0*cos(b)*cos(c)-y0*(-sin(a)*cos(b)*cos(c)-cos(a)*s

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 15:18:44
非线性方程解析解
-x0*cos(b)*cos(c)-y0*(-sin(a)*cos(b)*cos(c)-cos(a)*sin(c))-z0*(-cos(a)*cos(b)*cos(c)+sin(a)*sin(c))=0
-x0*cos(b)*sin(c)-y0*(-sin(a)*cos(b)*sin(c)+cos(a)*cos(c))-z0*(-cos(a)*cos(b)*sin(c)-sin(a)*cos(c))=0
-x0*cos(b)-y0*sin(a)*cos(b)-z0*cos(a)*cos(b)=sqrt(x0^2+y0^2+z0^2)
其中x0,y0,z0已知,但不是某个具体的常数.想解出这个方程的“解析解”,a,b,c用x0,y0,z0的反三角函表示.用matlab或mathmatics具体如何编程,希望给出可以运行的源代码.
-x0*Cos[b]*Cos[c] - y0*(-Sin[a]*Cos[b]*Cos[c] - Cos[a]*Sin[c]) - z0*(-Cos[a]*Cos[b]*Cos[c] + Sin[a]*Sin[c]) == 0,(1)
-x0*Cos[b]*Sin[c] - y0*(-Sin[a]*Cos[b]*Sin[c] + Cos[a]*Cos[c]) - z0*(-Cos[a]*Cos[b]*Sin[c] - Sin[a]*Cos[c]) == 0,(2)
-x0*Cos[b] - y0*Sin[a]*Cos[b] - z0*Cos[a]*Cos[b] == Sqrt[x0^2 + y0^2 + z0^2] (3)
用mathematica直接解是不行的.下面是不借助软件的解答.可以借助软件做一些化简变形工作
分三种情况
记r==Sqrt[x0^2 + y0^2 + z0^2]
第一种情况:cos[c]==0时,sin[c]==1,原方程等价于下面的方程组:
y0* Cos[a] - z0* Sin[a]== 0,
-x0*Cos[b] + y0*Sin[a]*Cos[b] + z0*Cos[a]*Cos[b] == 0,
-x0*Cos[b] - y0*Sin[a]*Cos[b] - z0*Cos[a]*Cos[b] == Sqrt[x0^2 + y0^2 + z0^2]
由第一个方程可得 Tan[a]==y0/z0(假设z0不等于0)
第二个方程加到第三个方程上可得
- 2*x0*Cos[b] == r,容易得到Cos[b] == -r/(2*x0).(假设x0不等于0)
第二种情况:sin[c]==0时,cos[c]==1,原方程等价于下面的方程组:
- x0*Cos[b] + y0*Sin[a]*Cos[b] + z0*Cos[a]*Cos[b] == 0,
- y0*Cos[a] + z0*Sin[a] == 0,
- x0*Cos[b] - y0*Sin[a]*Cos[b] - z0*Cos[a]*Cos[b] == r.
第一个方程加到第三个方程上可得
- 2*x0*Cos[b] == r,容易得到Cos[b] == -r/(2*x0).(假设x0不等于0)
由第二个方程可得 Tan[a]==y0/z0(假设z0不等于0)
第三种情况:sin[c]和cos[c]都不等于0时
我们把原方程组的三个式子分别记为(1),(2),(3)
考虑(1)-(3)*cos[c],(2)-(3)*sin[c],再加上(3),则原方程组等价于
-2*x0*Cos[b]*Cos[c] + y0*Cos[a]*Sin[c] - z0*Sin[a]*Sin[c] == r*Cos[c],(4)
-2*x0*Cos[b]*Sin[c] - y0*Cos[a]*Cos[c] + z0*Sin[a]*Cos[c] == r*Sin[c],(5)
-x0*Cos[b] - y0*Sin[a]*Cos[b] - z0*Cos[a]*Cos[b] == r.
前两个方程分别记为(4),(5).则由(4)^2+(5)^2,(4)*Cos[c]+(5)*Sin[c]可得
(2*x0*Cos[b])^2+(y0*Cos[a]- z0*Sin[a])^2==r^2,(6)
-2*x0*Cos[b]==r (7)
上两式分别记为(6),(7).
(7)代入(6)可得(8)式即y0*Cos[a]- z0*Sin[a]==0,(8)
进而Tan[a]==y0/z0(假设z0不等于0).
由(7)可以直接得到Cos[b] == -r/(2*x0)
把(7)(8)代入(4)(5)(3)可得原方程组进一步等价于r*Cos[c]==r*Cos[c],r*Sin[c]==r*Sin[c],恒成立,即c可取任意值.
把Cos[b] == -r/(2*x0)代入(3)得 y0*Sin[a]+ z0*Sin[a]==x0,记为(9)
(9)^2+(8)^2可得y0^2+z0^2==x0^2
综上,原方程组的解为:
z0==0,y0==0,x0==0时,a,b,c任意
z0==0,y0==0,x0≠0时,a,c任意,Cos[b] == -Sqrt[x0^2 + y0^2 + z0^2]/(2*x0)
z0==0,y0≠0时,无解
z0≠0,y0^2+z0^2==x0^2时,Tan[a]==y0/z0,Cos[b] == -Sqrt[x0^2 + y0^2 + z0^2]/(2*x0),c任意,此时Cos[b]可进一步简化为±Sqrt[2]/2,Cos[b]符号与x0相反
z0≠0,y0^2+z0^2≠x0^2时,无解