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代码,以查看结果。

更新于:2023年10月25日

260 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告