我想知道是否可以在 scilab 中将多项式计算为矩阵。 例如 :
A = floor(10*rand(3,3)); P = poly(A,"x"); horner(P,A)
应该返回空矩阵,但它会计算 A 的每个系数中的 P...
我尝试了 horner(P,A) 和 P(A) 但不起作用。
我想您想从 Scilab 中检查凯利-汉密尔顿定理(请参阅 https://en.wikipedia.org/wiki/Cayley%E2%80%93Hamilton_theorem)。使用
horner()
无法做到这一点,因为该函数计算标量变量的多项式的值。如果 A 是矩阵 horner(p,A)
按数组计算值,而不是矩阵意义上的。然而,定义一个在矩阵意义上计算多项式的函数很容易:
function r = hornerm(p,A)
r = zeros(A);
for k = degree(p) : -1: 0
c = coeff(p, k);
r = r * A + c * eye();
end
endfunction
那么你就有了
A = [1 2;3 4]
p = poly(A,"x")
hornerm(p,A)
--> A = [1 2;3 4]
A = [2x2 double]
1. 2.
3. 4.
--> p = poly(A,"x")
p = [polynomial] of x
-2 -5x +x^2
--> hornerm(p,A)
ans = [2x2 double]
2.220D-16 0.
0. 2.220D-16