roots 与solve 求(x-2)^4的根结果不一致

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:41:07
A =

2 1 0 -1
0 2 0 0
0 0 2 1
0 0 0 2

>> poly(A)

ans =

1 -8 24 -32 16

>> roots(poly(A))

ans =

4433/2216
2 + 23/50967i
2 - 23/50967i
4431/2216

polyval(poly(A),2)

ans =

0

>> expand((x-2)^4)

ans =

x^4-8*x^3+24*x^2-32*x+16

solve('x^4-8*x^3+24*x^2-32*x+16')

ans =

[ 2]
[ 2]
[ 2]
[ 2]

我觉得你可以看一下是不是一开始那里产生了微小的误差。
我把四个解重新组成了多项式,结果如下:
x^4-8x^3+306146216054703151x^2/12756092335608384-102048738684969007x/3189023083902096+9718927493816255/607432968362304
实际上,后边那三个数(符号忽略)分别等于
(二次项)24.0000000000079910835794
(一次项)32.0000000000319643343175
(常数项)16.0000000000319228639372
在小数点后第10位开始产生了误差。至于原因,我就不知道了。

关键是两个算法不一样,一个是从矩阵开始算的,另一个是直接从多项式开始的。可能matlab计算矩阵的方法有点不一样?