Matlab matrx函数的行列式
我有两个Matlab matrx函数的行列式,matlab,linear-algebra,Matlab,Linear Algebra,我有两个K-by-K矩阵,A和B,B是对角的。我想找到方程的根: det(Ax+B) = 0 在MATLAB中x与A逐元素相乘。我知道det(Ax+B)是x的K阶多项式 我怎样才能找到这个多项式的系数?如果我找到这些系数,我可以在MATLAB中通过roots()找到上述方程的根。如果没有,我应该使用fzero 最好的 M.R.您可以使用符号工具箱。以下说明了如何执行此操作: >> A = magic(4) %// example matrix A = 16 2
K
-by-K
矩阵,A
和B
,B
是对角的。我想找到方程的根:
det(Ax+B) = 0
在MATLAB
中x
与A
逐元素相乘。我知道det(Ax+B)
是x
的K阶多项式
我怎样才能找到这个多项式的系数?如果我找到这些系数,我可以在MATLAB中通过roots()
找到上述方程的根。如果没有,我应该使用fzero
最好的
M.R.您可以使用符号工具箱。以下说明了如何执行此操作:
>> A = magic(4) %// example matrix
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B = diag([4 2 6 5]) %// example matrix
B =
4 0 0 0
0 2 0 0
0 0 6 0
0 0 0 5
>> syms x
>> det(A*x+B)
ans =
- 11016*x^3 + 1342*x^2 + 2568*x + 240
在我看来,根应该是
eig(B,A)
如果你想使用根,这个函数会很有用。如果你想让一切都保持符号化,那就简化(solve(det(A*x+B)=0,x))
。注意,这个解决方案只适用于小尺寸K。对于大于5阶的多项式的根,没有符号解决方案。高阶多项式的求根在进行数值计算时往往是不稳定的。