輸入test:import numpy as np
import matplotlib.pyplot as plt
row_num =
int(
input
("input nums of row:"))
# 用0初始化矩陣
mat =[[
0]* row_num]
* row_num
# 字串分割成數字並轉為複數型別
for i in
range
(row_num)
: mat[i]
=input()
.split(
) mat[i]=[
complex
(j)for j in mat[i]
]mat = np.array(mat)
(mat)
# 畫圓取樣
sample = np.linspace(
-np.pi, np.pi,
100)
# 保持x,y軸刻度比例相同
plt.axis(
'equal'
)for i in
range
(row_num)
:# 行蓋爾圓半徑
r1 =
sum(
abs(mat[i,:]
))-abs
(mat[i]
[i])
# 列蓋爾圓半徑
r2 =
sum(
abs(mat[
:, i]))
-abs
(mat[i]
[i])
# 蓋爾圓圓心
point_x = mat[i]
[i].real
point_y = mat[i]
[i].imag
# 繪製圓心
plt.plot(point_x, point_y,
'.b'
)# 繪製圓(填充)
plt.fill(r1 * np.sin(sample)
+ point_x,
r1 * np.cos(sample)
+ point_y,
'b',
alpha=
0.2)
plt.fill(r2 * np.sin(sample)
+ point_x,
r2 * np.cos(sample)
+ point_y,
'g',
alpha=
0.2)
# 標註
plt.text(point_x,
point_y,
"g"+
str(i +1)
, fontdict=
)# 繪製特徵值點
[e, _]
= np.linalg.eig(mat)
for i in e:
plt.plot(i.real, i.imag,
'ro'
)ax = plt.gca(
)# 去掉預設邊框刻度
ax.spines[
'right'
].set_color(
'none'
)ax.spines[
'top'
].set_color(
'none'
)# 設定x與y軸的位置
ax.spines[
'bottom'
].set_position(
('data',0
))ax.spines[
'left'
].set_position(
('data',0
))# 指定x與y軸刻度數字位置
ax.xaxis.set_ticks_position(
'bottom'
)ax.yaxis.set_ticks_position(
'left'
)plt.show(
)
輸出:
紅點為特徵值點,淺綠色是列蓋爾圓,淺紫色是行蓋爾圓,藍點為圓心。
畫圓部分,matplotlib 中沒有直接根據圓心和半徑畫圓的方法,所以用取樣(微分)的方法來繪製
對 list 中元素型別進行統一轉換,可一句搞定import numpy as np
import matplotlib.pyplot as plt
sample = np.linspace(
-np.pi, np.pi,
100)
# 半徑為 r,圓心為(point_x, point_y)
plt.fill(r * np.sin(sample)
+ point_x, r * np.cos(sample)
+ point_y)
l =
["12"
,"2.333",23
]l1 =
[float
(i)for i in l]
python pillow繪製矩陣蓋爾圓簡單例項
本文主要研究的是使用python pillow繪製矩陣蓋爾圓的乙個例項,具體如下。eqiybisbxe 蓋爾圓是矩陣特徵值估計時常用的方法之一,其定程式設計客棧義為 與eqiybisbxe蓋爾圓有關的兩個定理為 定理1 矩陣a的所有特徵值均落在它的所有蓋爾圓的並集之中。定理2 將矩陣a的全體蓋爾圓的...
python3 切片 python3 切片
取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...
Python3 隨機漫步生成資料並繪製
python隨機漫步生成資料並繪製 random walk.py from random import choice 生成隨機漫步的資料類 class randomwalk def init self,num points 5000 初始化隨機漫步的屬性 self.numpoints num poi...