1. 程式人生 > 其它 >零基礎學程式設計042:畫函式影象

零基礎學程式設計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

,824.16.....";n'

至於r'......'裡面的兩個$符號,則與latex有關,專門用來表示數學公式的,你可以把兩個$符號去掉,看一看文字樣式有何區別。

第五步:加上網格線和座標軸

把圖的x座標範圍設定為[-2, 6]:

plt.xlim(-2, 6)

加上網格線:

plt.grid(True)

加上水平座標軸和垂直座標軸:

plt.axhline(color='black')
plt.axvline(color='black')

上面這些語句都放在plt.show()之前,最後的效果是這樣的:

作業:

試著畫出下圖中的兩個函式影象。

--- END ---