MATLAB中Cayley-Hamilton定理的实现
在线性代数中,有一个被称为Cayley-Hamilton定理的基本定理,用于建立方阵与其特征方程之间的关系。阅读本文以了解Cayley-Hamilton定理在MATLAB编程中的实现。让我们从Cayley-Hamilton定理的概述开始。
什么是Cayley-Hamilton定理?
在线性代数中,Cayley-Hamilton定理是一个基本定理,用于建立方阵与其特征方程之间的关系。换句话说,根据Cayley-Hamilton定理,方阵必须满足其自身的特征方程。
解释
考虑一个n阶方阵A。如果p(λ)是矩阵A的特征多项式,则由下式给出:
$$\mathrm{p(\lambda) \: = \: \lvert \lambda I \: − \: A \rvert}$$
其中:
“I”是n阶单位矩阵。
“λ”是一个实常数。
这个多项式p(λ)的根称为方阵A的“特征值”。
根据Cayley-Hamilton定理,如果多项式p(λ)是方阵A的特征多项式。那么,如果我们将λ = A代入p(λ),它将得到一个零矩阵,即:
$$\mathrm{p(A) \: = \: 0}$$
因此,如果我们对方阵A的特征多项式在矩阵A本身处求值,则结果为零矩阵。因此,Cayley-Hamilton定理满足其自身的特征多项式。
Cayley-Hamilton定理在控制理论、物理学、信号处理等各个工程领域发挥着至关重要的作用。这就是关于Cayley-Hamilton定理基础知识的全部内容。现在让我们学习它在MATLAB中的实现。
MATLAB中Cayley-Hamilton定理的实现
我们可以在MATLAB中实现Cayley-Hamilton定理。下面解释了实现Cayley-Hamilton定理的两种最简单的方法。
方法(1) – 通过定义函数实现Cayley-Hamilton定理
function CH(A) % Check whether the input matrix is a square matrix [m, n] = size(A); if m ~= n error('Input matrix is not a square matrix.'); end % Defining characteristic polynomial of input square matrix p = poly(A); % Cayley-Hamilton theorem calculation r = polyvalm(p, A); % Display the result disp('Cayley-Hamilton Theorem:'); disp(r); % Verify the Cayley-Hamilton Theorem if isequal(round(r), zeros(size(A))) disp('Cayley-Hamilton theorem is verified.'); else disp('Cayley-Hamilton theorem verification failed.'); end end
将此函数保存在MATLAB环境中当前的工作区中。然后,打开MATLAB命令窗口,并调用“CH”函数来计算Cayley-Hamilton定理。
示例1
% Create a square matrix A = [10, 20; 30, 40]; % Calculate Cayley-Hamilton’s theorem CH(A);
输出
它将产生以下输出:
Cayley-Hamilton Theorem: 0 0 0 0 Cayley-Hamilton theorem is verified.
示例2
% Create a square matrix A = [10, 20 30; 30, 40, 50]; % Calculate Cayley-Hamilton’s theorem CH(A);
输出
它将产生以下输出:
Error using CH Input matrix is not a square matrix.
现在让我们讨论另一种在MATLAB中实现Cayley-Hamilton定理的方法。
方法(2) – 使用“for”循环计算Cayley-Hamilton定理
以下示例程序演示了在MATLAB中实现Cayley-Hamilton定理。
示例3
% MATLAB program to Implement Cayley-Hamilton’s theorem % Input a square matrix A = [10, 20; 30, 40]; % Check if the input matrix is a square matrix [m, n] = size(A); if m ~= n error('Input matrix is not a square matrix.'); end % Store the size of the input matrix in a variable mat_size = size(A); % Characteristic polynomial calculation p = poly(A); % Create a zero matrix of the same size as A r = zeros(mat_size); % Calculate Cayley-Hamilton theorem using a loop for i = 1 : (mat_size(1) + 1) r = r + p(i) * (A^(mat_size(1)+1 - i)); end % Display the result disp("Cayley-Hamilton’s Theorem:"); disp(round(r)); % Verify Cayley-Hamilton theorem if isequal(round(r), zeros(mat_size)) disp("Cayley-Hamilton theorem is verified.") else disp("Cayley-Hamilton theorem verification is failed.") end
输出
它将产生以下输出:
Cayley-Hamilton’s Theorem: 0 0 0 0 Cayley-Hamilton theorem is verified.
如果我们将输入矩阵“A”替换为以下非方阵:
A = [10, 20, 30; 30, 40, 50];
则输出将为:
Input matrix is not a square matrix.
结论
总之,Cayley-Hamilton定理是线性代数中的一个强大结果,它给出了方阵与其特征方程或多项式之间的关系。我们可以在MATLAB中实现Cayley-Hamilton定理。在本文中,我通过示例解释了在MATLAB中实现Cayley-Hamilton定理的两种最简单的方法。您可以使用不同的方阵尝试这些MATLAB代码,以查看结果。