中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python+NumPy繪制常見曲線

發布時間:2022-06-13 11:50:07 來源:億速云 閱讀:247 作者:iii 欄目:開發技術

這篇“怎么使用Python+NumPy繪制常見曲線”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用Python+NumPy繪制常見曲線”文章吧。

在NumPy中,所有的標準三角函數如sin、cos、tan等均有對應的通用函數。

一、利薩茹曲線

(Lissajous curve)利薩茹曲線是一種很有趣的使用三角函數的方式(示波器上顯示出利薩茹曲線)。利薩茹曲線由以下參數方程定義:

x = A sin(at + n/2)

y = B sin(bt)

利薩茹曲線的參數包括 A 、 B 、 a 和 b 。為簡單起見,我們令 A 和 B 均為1,設置的參數為 a=9 , b=8

import numpy as np
import matplotlib.pyplot as plt

A=B=1
a=9
b=8

t = np.linspace(-np.pi, np.pi, 201)  #使用linspace函數初始化變量t
x = np.sin(a * t + np.pi/2)  # sin 函數和NumPy常量 pi 計算變量 x 
y = np.sin(b * t)  # sin函數計算變量y
plt.plot(x, y)
plt.show()

運行結果:

怎么使用Python+NumPy繪制常見曲線

二、計算斐波那契數列

斐波那契數列的遞推關系可以用矩陣來表示。斐波那契數列的計算等價于矩陣的連乘。可用兩種方法計算了斐波那契數列

1)黃金比例計算方法,使用 rint 函數對浮點數取整但不改變浮點數類型

1,1,2,3,5,8,13,21,34,55,89,……

#   斐波那契數,用黃金分割公式或通常所說的比奈公式,加上取整函數
n = np.arange(1, 9)
sqrt5 = np.sqrt(5)
phi = (1 + sqrt5)/2 #利用根號5計算黃金比例,或者直接用phi=1+0.618 
print("比例:",phi)
print('\n')
fibonacci = np.rint((phi**n - (-1/phi)**n)/sqrt5)  #用rint()函數對浮點數取整但不改變浮點數類型
print("Fibonacci", fibonacci)

2)利用矩陣進行計算:用 matrix 函數創建矩陣

# 斐波那契數,用矩陣來表示斐波那契數列的遞推關系
F = np.matrix([[1, 1], [1, 0]])
print ("8th Fibonacci:", (F ** 10)[0, 0])

運行結果:

比例: 1.618033988749895

Fibonacci [ 1.  1.  2.  3.  5.  8. 13. 21.]
8th Fibonacci: 89

三、方波

方波可以近似表示為多個正弦波的疊加。任意一個方波信號都可以用無窮傅里葉級數來表示。

需要累加很多項級數,且級數越多結果越精確,這里取 k=99(可以分別設置為9,50,1000等進行測試觀察生成效果) 以保證足夠的精度。繪制方波的步驟如下。

1) 初始化 t 和 k 開始,并將函數值初始化為

m = np.linspace(-np.pi, np.pi, 201) #從 -pi 到 pi 上均勻分布的 201 個點
k = np.arange(1,99)   # k=99 以保證足夠的精度,如圖中的9 20 99顯示的波形
k = 2 * k - 1
f = np.zeros_like(m)

2)使用 sin()求正弦函數,用sum()數計算各項級數:

for i in range(len(m)):  #使用 sin 和 sum 函數進行計算
    f[i] = np.sum(np.sin(k * m[i])/k)
f = (4 / np.pi) * f

3)繪制波形

plt.plot(t, f)
plt.show()

怎么使用Python+NumPy繪制常見曲線

四、鋸齒波和三角波

鋸齒波和三角波也是常見的波形。和方波類似,也可以將它們表示成無窮傅里葉級數。對鋸齒波取絕對值即可得到三角波。鋸齒波的無窮級數表達式如下:

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-np.pi, np.pi, 201)
k = np.arange(1, 99)
f = np.zeros_like(t)
for i in range(len(t)):
    f[i] = np.sum(np.sin(2 * np.pi * k * t[i])/k)

f = (-2 / np.pi) * f
plt.plot(t, f, lw=1.0)
plt.plot(t, np.abs(f), lw=2.0)
plt.show()

運行結果:

怎么使用Python+NumPy繪制常見曲線

以上就是關于“怎么使用Python+NumPy繪制常見曲線”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凉山| 府谷县| 卢湾区| 安顺市| 菏泽市| 梓潼县| 东港市| 九龙县| 铁力市| 苗栗县| 天长市| 铜川市| 裕民县| 宁德市| 方城县| 青神县| 赤城县| 建阳市| 社旗县| 岳阳市| 井研县| 沂南县| 祁东县| 金寨县| 牙克石市| 临汾市| 淮安市| 灌云县| 莱芜市| 平原县| 安泽县| 沧源| 溆浦县| 历史| 成都市| 乐安县| 林周县| 稷山县| 南华县| 桦川县| 邵阳县|