📜  在 MATLAB 中使用 Cayley Hamilton Theorem 求方阵的逆

📅  最后修改于: 2022-05-13 01:55:07.427000             🧑  作者: Mango

在 MATLAB 中使用 Cayley Hamilton Theorem 求方阵的逆

矩阵是按行和列排列的一组数字,以形成一个矩形数组。在这里,这些数字称为该矩阵的条目或元素。以“m”个水平线(行)和“n”个垂直线(称为列)的形式的 (m*n) 个数字的矩形数组称为 m × n 阶矩阵,写为 m × n矩阵。

注意:如果 m=n,即行数 = 矩阵“A”中的列数,则称“A”是“n”阶方阵。

方阵的逆:

如果'A'是'n'阶的非奇异(|A|≠0)方阵,则存在nxn矩阵A -1 ,称为'A'的逆矩阵,满足如下性质:

AA-1 = A-1A = In, where In is  the Identity matrix of order n

我们可以使用各种方法找到方阵的逆:

  • 凯莱-汉密尔顿法
  • 高斯消除
  • 牛顿法
  • 特征分解法

凯莱-汉密尔顿定理:

在线性代数域中,根据 Cayley-Hamilton 定理,每个 'n' 阶的方阵 'A' 满足其自身的特征方程,由下式给出:

|A-λIn| = 0 
Here 'In' is the Identity Matrix  
of Order 'n' (same as that of A's Order)
and 'λ' is some Real Constant.

展开上述'A'的特征方程,我们得到:

λn + C1λn-1 + C2λn-2 + . . . + CnIn = 0, 
where C1, C2, . . . , Cn are Real Constants.

根据 Cayley-Hamilton 定理, 'A' 的上述特征方程是自满足的,因此我们有:

An + C1An-1 + C2An-2 + . . . + CnIn = 0 , 
where C1, C2, . . . , Cn are Real Constants.

使用 Cayley Hamilton 定理求方阵逆的步骤:

第 1 步:对于给定的 n 阶非奇异方阵 'A',求其特征方程 |A-λI n | = 0。

展开行列式,使其按以下格式减少:

λn + C1λn-1 + C2λn-2 + . . . + CnIn = 0,
where C1, C2, . . . , Cn are Real Constants.

步骤 2:根据 Cayley-Hamilton 定理,“A”的上述特征方程本身满足,因此:

An + C1An-1 + C2An-2 + . . . + CnIn = 0

第 3 步:在上述等式两边同时乘以 A -1可简化为:

An-1 + C1An-2 + C2An-3 + . . . Cn-1In + CnA-1 = 0

第四步:通过对上式的各项进行化简和重排,求出A -1 ,则A -1为:

A-1 = (-1/Cn)[ An-1 + C1An-2 + C2An-3 + . . . Cn-1In ]

以下代码中使用的 MATLAB 函数是:

  • disp(“txt”):此方法向用户显示消息-'txt'。
  • input(“txt”):此方法显示消息-'txt',并等待用户输入值并按回车键。
  • poly(A):此方法返回“n”阶矩阵“A”的特征多项式的 n+1 个系数。
  • length(X):此方法返回向量“X”的元素数。
  • round(x):此方法将“x”四舍五入到最接近的整数。

例子:

Matlab
% MATLAB Implementation to find Inverse
% of a Square Matrix using Cayley Hamilton theorem:
clear all 
clc       
disp("Finding Inverse of a Square Matrix  using
Cayley  Hamilton theorem in MATLAB | GeeksforGeeks")
A=input('Enter the Matrix A: ');
 
% To find Coefficients of Characteristic Equation of Matrix 'A'
cf=poly(A); 
 
% To find the Number of Coefficients in
% the Characteristic Equation of Matrix 'A'
n=length(cf);
 
% To find the Inverse of A
inverse = cf(1)*A^(n-2);
for i=2:n-1
inverse=inverse+cf(i)*A^(n-i-1);
end
 
% Checking whether |A|=0 or not
if  round(cf(n))==0  
    disp('Inverse of A does not exist as it is a singular matrix..')
else
   inverse=inverse/(-cf(n));
   disp('Inverse of A: ')
   disp(inverse)
end


输出:

输入矩阵:

A = \begin{bmatrix} -5 &  4&  2\\ 4& -5&  2\\ 2 &  2&  -8\\ \end{bmatrix}

输入矩阵:

A = \begin{bmatrix} 1 &  2&  3\\ 4&  -55&  6\\ -9&  0&  4\\ \end{bmatrix}

输入矩阵:

A = \begin{bmatrix} 1 &  2&  3& 4\\ 5&  -9&  0& 8\\ 3&  4&  5& 6\\ 33& 0& -9& -6\\ \end{bmatrix}