在 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
输出:
输入矩阵:
输入矩阵:
输入矩阵: