matlab與numpy求解特徵值與特徵向量

2021-10-09 09:14:59 字數 2289 閱讀 3436

對比一下numpy與matlab求解的特徵值與特徵向量

特徵值 λ1=λ2=1 λ3=2

特徵值 λ1=-1 λ2=λ3=2

如何求解特徵向量

1.這裡列舉第乙個中λ=1時對應的特徵向量。

(a-λ*e)*x = 0

得(a-e)*x = 0

對a-e進行 行變換 得

[[-2,1,0],[1,0,1],[0,0,0]]

-2*x1+x2 = 0

x1+x3=0

有3-2=1個自由變數,令x1為自由變數

x = [x1 x2 x3]t = [x1 2*x1 -x1]t = x1*[1 2 -1]t

2.這裡列舉第二個中λ=2時對應的特徵向量。

(a-2e)*x = 0

[[-4,1,1],[0,0,0],[0,0,0]]

-4*x1+x2+x3 = 0

有3-1=2個自由變數,令x2 x3為自由變數

x = [x1 x2 x3]t = [(x2+x3)/4,x2,x3]t = x2*[1/4 1 0]t + x3*[1/4 0 1]t

或者是 令x1 x3為自由變數

x = [x1 x2 x3]t = [x1,4x1-x3,x3]t = x1*[1 4 0]t + x3*[0 -1 1]t

import numpy as np

a1 = np.array([[-1,1,0],[-4,3,0],[1,0,2]])

eig_val1,eig_vec1 = np.linalg.eig(a1)

print(eig_val1,'\n',eig_vec1)

a2 = np.array([[-2,1,1],[0,2,0],[-4,1,3]])

eig_val2,eig_vec2 = np.linalg.eig(a2)

print(eig_val2,'\n',eig_vec2)

輸出:

[2. 1. 1.]

[[ 0.          0.40824829  0.40824829]

[ 0.          0.81649658  0.81649658]

[ 1.         -0.40824829 -0.40824829]]

[-1.  2.  2.]

[[-0.70710678 -0.24253563  0.30151134]

[ 0.          0.          0.90453403]

[-0.70710678 -0.9701425   0.30151134]]

a1 = [-1,1,0;-4,3,0;1,0,2];

a2 = [-2,1,1;0,2,0;-4,1,3];

[eig_val1, eig_vec1] = eig(a1);

[eig_val2, eig_vec2] = eig(a2);

輸出:

0    0.4082    0.4082

0    0.8165    0.8165

1.0000   -0.4082   -0.4082

2     0     0

0     1     0

0     0     1

-0.7071   -0.2425    0.3015

0         0            0.9045

-0.7071   -0.9701    0.3015

-1     0     0

0     2     0

0     0     2

對比兩者計算結果一樣,只不過matlab的特徵值是用乙個對角矩陣表示

另外我說一下numpy的精確性,我使用matlab與numpy計算了關於實矩陣的複數特徵值問題,計算結果特徵值是一樣的,但是特徵向量大小不一樣,兩者呈乙個比例,其實也是一樣的,特徵向量又沒規定必須是多少。所以我想說的就是,不用懷疑numpy精度比matlab低。

我給matlab**轉化為python**,發現計算出來的結果兩者不一樣,我本來準備去github上給numpy發issue的,但是仔細又看了一遍自己的**,發現原來是自己有個地方轉化錯了,而不是人家numpy精度低。

MATLAB與數學實驗 MATLAB 求解方程

一.常用函式 matlab裡solve fzero fsolve root等函式用於求解方程 組 1.solve函式 主要用於求解代數方程和非線性方程 x1,solve f var f表示方程,var表示求解變數。x1表示求解結果。求解單個方程 syms x a b c ff a x 2 b x c...

python中numpy與matlab的對應關係

通用函式等價表 matlab numpy說明 help func info func or help func orfunc?在ipython環境下 檢視關於func的幫助文件 type func source func orfunc?在ipython環境下 當func不是內建函式時,查詢它的 a ...

Matlab 數值微積分與方程求解

專題六 數值微積分與方程求解 目錄 一 數值微分與數值積分 1.數值微分 2.數值積分 二 線性方程組求解 先說差分。差分可以分為向前差分,向後差分和中心差分。三者分別如下表述 matlab提供了求向前差分的函式diff,其呼叫格式有3種 舉個例子 求向量 1,34,54,32,56,78 的一階向...