MATLAB的计算结果怎么这么复杂呀? S=solve('2*x*y=1,x+2=y*y+z*z,x

发布时间:2021-02-26 01:55:00

MATLAB的计算结果怎么这么复杂呀? S=solve('2*x*y=1,x+2=y*y+z*z,x+y-z=4','x,y,z'); %前面的参数是方程组列表,后面是未知变量列表S.x %输出未知数x的值S.y %输出未知数y的值S.z %输出未知数z的值ans =6.91210074668688399943321240683061.7935708873534503034812688410043

网友回答

是这样的.S=solve('2*x*y=1,x+2=y*y+z*z,x+y-z=4','x,y,z')
你这个是三元多次方程组,
你求出来的解,代表它有四个解.
每一个ans的对应行是一个解.
即x= 6.9121007466868839994332124068306
y= 0.072336908607656010994857462812632
z= 2.9844376552945400104280698696432
是一个解.它这么长只是因为数位比较长.你如果想以精简的方式输出,可以控制输出的位数.用vpa(表达式,位数)来控制.
你的solve返回值只有一个S
MATLAB会将解以结构体的形式返回.
======以下答案可供参考======
供参考答案1:
因为solve解决时符号计算的方程,把每个数字、字母都当成符号,结果也是一串符号,所以解出的解是精确解,你可以用double()将符号转化为数值。
供参考答案2:
你可以把输出结果的格式调整一下,例如:用vpa(S.x,5)试试
ans =.1508-.135*i
.1508+.135*i
1.7928
6.9142
供参考答案3:
第一组ans代表x的四种可能解x1,x2,x3,x4,第二组为y的,第三组为z。
即该方程有四组可能的解.
以上问题属网友观点,不代表本站立场,仅供参考!