零基礎學程式設計042:畫函式影象
孩子馬上就要參加高考了,我以前還能幫著輔導一下數學功課,現在就不行了,一來她很忙,晚上很晚才到家,二來高中的數學題太變態,琢磨一個小時可能也解不出一道。
前幾天她讓我幫著列印幾張函式及導函式的影象,我發現這些影象都是用一款軟體製作的,例如第一幅影象是這樣的:
我以前用Python畫過複利曲線圖,這種影象只不過稍微複雜了一點,應該難不倒我,下面就跟著我來一步一步把這個圖做出來。
第一步:畫出f(x)=x*ln(x)
複習一下以前學過的內容,換一下函式,馬上就完成了這一步。
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-2, 6, 200) y = x * np.log(x) plt.plot(x, y) plt.show()
需要說明一下linspace(-2, 6, 200)相當於在x軸從-2到6之間取樣200個點,形成一個數組。np.log()就是自然對數函式。
第二步:再加上導數影象 f'(x) = 1 + ln(x)
在plot()函式之前加上兩條語句就可以了。
dy = 1 + np.log(x)
plt.plot(x, dy)
可以看到多了一條曲線,而且自動用了不同的顏色。
第三步:把第二條曲線用紅虛線表示
把這一行:
plt.plot(x, dy)
換成:
plt.plot(x, dy, 'r--')
這裡的 r 表示紅色red,-- 表示虛線,r-- 就是紅虛線。
第四步:在函式曲線旁邊標上函式名稱
在plt.show()函式之前加上兩條語句:
plt.text(2.5, 6, r'$f(x) = x * ln(x)$')
plt.text(4, 1.8, r"$f'(x) = 1 + ln(x)$")
解釋一下:
r'$f(x) = x * ln(x)$'
這個也是字串,r 的意思是raw,原始的、未經過加工的,因為'n','\'等這類特殊字元需要進行轉義處理,而用上這個r字母開頭之後,裡面的反斜槓就不當轉義符處理了,關於字串以後還得專門細說一下。
在《零基礎學程式設計021:獲取股票實時行情資料》這一課裡我們見過以字母b開頭的字串,表示二進位制串,例如:b'hq="xb9xc8xb8xe8
至於r'......'裡面的兩個$符號,則與latex有關,專門用來表示數學公式的,你可以把兩個$符號去掉,看一看文字樣式有何區別。
第五步:加上網格線和座標軸
把圖的x座標範圍設定為[-2, 6]:
plt.xlim(-2, 6)
加上網格線:
plt.grid(True)
加上水平座標軸和垂直座標軸:
plt.axhline(color='black')
plt.axvline(color='black')
上面這些語句都放在plt.show()之前,最後的效果是這樣的:
作業:
試著畫出下圖中的兩個函式影象。
--- END ---