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.912100

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 11:03:36
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.912100

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.912100
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.9121007466868839994332124068306
1.7935708873534503034812688410043
0.14716418297983284854275937608259 - 0.13665257739147456814271491974369*i
0.13665257739147456814271491974369*i + 0.14716418297983284854275937608259
ans =
0.072336908607656010994857462812632
0.27877348117407719078152757225564
1.694128828621399950833152826674*i + 1.8244448051091333991118074824659
1.8244448051091333991118074824659 - 1.694128828621399950833152826674*i
ans =
2.9844376552945400104280698696432
-1.9276556314724725057372035867401
1.5574762512299253826904379069303*i - 2.0283910119110337523454331414516
- 1.5574762512299253826904379069303*i - 2.0283910119110337523454331414516
为什么不能直接得到X Y Z的值呢?怎么会是那么一长串的结果?
能不能直接的得到XYZ的值呢?比如X=0.123之类的

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.912100
是这样的.
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会将解以结构体的形式返回.

因为solve解决时符号计算的方程,把每个数字、字母都当成符号,结果也是一串符号,所以解出的解是精确解,你可以用double()将符号转化为数值。

你可以把输出结果的格式调整一下,例如:用vpa(S.x,5)试试
ans =
.1508-.135*i
.1508+.135*i
1.7928
6.9142

第一组ans代表x的四种可能解x1,x2,x3,x4,第二组为y的,第三组为z。
即该方程有四组可能的解.