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 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.