日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

利用Python?NumPy庫及Matplotlib庫繪制數學函數圖像_python

作者:manchan4869 ? 更新時間: 2022-06-14 編程語言

前言

最近開始學習數學了,有一些題目的函數圖像非常有特點,有一些函數圖像手繪比較麻煩,那么有沒有什么辦法做出又標準又好看的數學函數圖像呢?

答案是有很多的,有很多不錯的軟件都能畫出函數圖像,但是,我想到了Python的數據可視化。Python在近些年非?;馃幔跀祿治鲆约吧疃葘W習等方面得到廣泛地運用,其豐富的庫使其功能愈加強大。

這里我們使用Python的NumPy庫以及Matplotlib庫進行繪圖。

NumPy與Matplotlib

NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。

Matplotlib 是 Python 的繪圖庫。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。

函數繪圖

所需庫函數語法

import 語句

想使用 Python 源文件,只需在另一個源文件里執行 import 語句,語法如下:

import module1[, module2[,... moduleN]

from … import 語句

Python 的 from 語句讓你從模塊中導入一個指定的部分到當前命名空間中,語法如下:

from modname import name1[, name2[, ... nameN]]

numpy.arange

numpy 包中的使用 arange 函數創建數值范圍并返回 ndarray 對象,函數格式如下:

numpy.arange(start, stop, step, dtype)

根據 start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray。

參數說明:

參數 描述
start 起始值,默認為0
stop 終止值(不包含)
step 步長,默認為1
dtype 返回ndarray的數據類型,如果沒有提供,則會使用輸入數據的類型。

numpy.linspace

numpy.linspace 函數用于創建一個一維數組,數組是一個等差數列構成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

參數說明:

參數 描述
start 序列的起始值
stop 序列的終止值,如果endpoint為true,該值包含于數列中
num 要生成的等步長的樣本數量,默認為50
endpoint 該值為 true 時,數列中包含stop值,反之不包含,默認是True。
retstep 如果為 True 時,生成的數組中會顯示間距,反之不顯示。
dtype ndarray 的數據類型

導入所需模塊

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False #用來正常顯示負號

一元一次函數

# 一元一次函數圖像
x = np.arange(-10, 10, 0.1)#生成等差數組
y = 2 * x
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元一次函數")
plt.plot(x, y)
plt.show()

一元二次函數

# 一元二次函數圖像
x = np.arange(-10, 10, 0.1)
y = x * x
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元二次函數")
plt.plot(x, y)
plt.show()

指數函數

# 指數函數
x = np.arange(-10, 10, 0.1)
y = np.power(2, x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("指數函數")
plt.plot(x, y)
plt.show()

正弦函數

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.sin(x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("正弦函數")
plt.plot(x, y)
plt.show()

余弦函數

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.cos(x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("余弦函數")
plt.plot(x, y)
plt.show()

高級玩法

from pylab import *
import numpy
figure(figsize=(12,8), dpi=72)

# 創建一個新的 1 * 1 的子圖,接下來的圖樣繪制在其中的第 1 塊(也是唯一的一塊)
subplot(1,1,1)

X = np.linspace(-np.pi*2, np.pi*2, 2048,endpoint=True)
C,S = np.cos(X), np.sin(X)

# 繪制余弦曲線,使用藍色的、連續的、寬度為 1 (像素)的線條
plot(X, C,linewidth=1.5, linestyle="-",label="正弦")

# 繪制正弦曲線,使用綠色的、連續的、寬度為 1 (像素)的線條
plot(X, S,linewidth=1.5, linestyle="-",label="余弦")
legend(loc='upper left')
# 設置橫軸的上下限
xlim(-4.5,4.5)

# 設置橫軸記號
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])

# 設置縱軸的上下限
ylim(-1.5,1.5)

# 設置縱軸記號
yticks(np.linspace(-1,1,5,endpoint=True))
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

# savefig("sincosin.png",dpi=72) #以72dpi保存圖像

# 在屏幕上顯示
show()

fig = plt.figure(figsize=(12,8), dpi=72)
x = np.arange(-10, 10, 0.01)
arsinh = np.log(x+np.sqrt(x**2+1))
sinh=0.5*(e**x-e**(-x))
cosh=0.5*(e**x+e**(-x))

plt.plot(x, sinh,label="雙曲正弦")
plt.plot(x, arsinh,label="反雙曲正弦")
plt.plot(x, cosh,label="雙曲余弦")

plt.legend(loc='upper left')

ylim(-10,10)

ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

plt.show()

總結?

原文鏈接:https://blog.csdn.net/manchan4869/article/details/117295396

欄目分類
最近更新