python3 繪製蓋爾圓

2021-10-10 07:54:42 字數 2721 閱讀 5198

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)

print

(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(

)

輸入test:

輸出:

紅點為特徵值點,淺綠色是列蓋爾圓,淺紫色是行蓋爾圓,藍點為圓心。

畫圓部分,matplotlib 中沒有直接根據圓心和半徑畫圓的方法,所以用取樣(微分)的方法來繪製

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)

對 list 中元素型別進行統一轉換,可一句搞定

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...