使用python绘制基本初等函数
基 本 初 等 函 数 { 幂 函 数 : x a , 指 数 函 数 : a x ( a > 0 , a ≠ 1 ) 对 数 函 数 : log a x ( a > 0 , a ≠ 1 ) 三 角 函 数 : sin x , cos x , tan x , cot x , sec x , csc x 反 三 角 函 数 : arcsin x , arccos x , arctan x , arccot x 基本初等函数\left\{\begin{array}{l}幂函数:x^{a}, \\指数函数:a^{x}(a>0, a \neq 1) \\对数函数:\log _{a} x(a>0, a \neq 1) \\三角函数:\sin x, \cos x, \tan x, \cot x, \sec x, \csc x \\反三角函数:\arcsin x, \arccos x, \arctan x, \operatorname{arccot} x\end{array}\right. 基本初等函数⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧幂函数:xa,指数函数:ax(a>0,a=1)对数函数:logax(a>0,a=1)三角函数:sinx,cosx,tanx,cotx,secx,cscx反三角函数:arcsinx,arccosx,arctanx,arccotx
幂函数
y
=
x
a
,
a
为
常
数
y=x^a,a为常数
y=xa,a为常数
幂函数的图像和性质随着
a
a
a的不同而不同
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x11 = np.arange(-4, -0.1, 0.01)
x12 = np.arange(0.1, 4, 0.01)
x2 = np.arange(0, 4, 0.01)
x3 = np.arange(-4, 4, 0.01)
x4 = np.arange(-3, 3, 0.01)
x5 = np.arange(-3, 3, 0.01)
f11 = [1 / i for i in x11]
f12 = [1 / i for i in x12]
f2 = [np.sqrt(i) for i in x2]
f3 = x3
f4 = [np.power(i, 2) for i in x4]
f5 = [np.power(i, 3) for i in x5]
plt.plot(x11, f11, 'k', label='$y=x^{-1}$')
plt.plot(x12, f12, 'k')
plt.plot(x2, f2, label='$y=x^{1/2}$')
plt.plot(x3, f3, label='$y=x$')
plt.plot(x4, f4, label='$y=x^2$')
plt.plot(x5, f5, label='$y=x^3$')
# 移动坐标轴及边框设置:https://www.jb51.net/article/172275.htm
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.legend(loc='upper left')
plt.show()
指数函数
y = a x y=a^x y=ax
其中 a a a是常数,且 a > 0 , a ≠ 1 a>0,a\not=1 a>0,a=1当 a > 1 a>1 a>1时,指数函数为单调增加函数;当 0 < a < 1 0<a<1 0<a<1时,指数函数为单调减少函数。但无论自变量 x x x取何值,指数函数的图像总是位于 x x x轴上方,并且一定会通过点 ( 0 , 1 ) (0,1) (0,1),即当 x = 0 x=0 x=0时, y = 1 y=1 y=1。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(-4, 4, 0.01)
f11 = [2**i for i in x]
f12 = [4**i for i in x]
plt.plot(x, f11, label='$y=2^x,(a>1)$')
plt.plot(x, f12, label='$y=4^x,(a>1)$')
f21 = [0.5**i for i in x]
f22 = [0.25**i for i in x]
plt.plot(x, f21, label=r'$y=(\frac{1}{2})^x,(0<a<1)$')
plt.plot(x, f22, label=r'$y=(\frac{1}{4})^x,(0<a<1)$')
# 移动坐标轴及边框设置:https://www.jb51.net/article/172275.htm
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.legend(loc='best')
plt.show()
对数函数
y
=
l
o
g
a
x
y=log_ax
y=logax
其中
a
a
a为常数,且
a
>
0
,
a
≠
1
a>0,a\not=1
a>0,a=1。该函数的定义域为正的实数,故它的图像位于
y
y
y轴的右方,并通过点
(
1
,
0
)
(1,0)
(1,0)。当
a
>
1
a>1
a>1时,对数函数为单调增加函数;当
0
<
a
<
1
0<a<1
0<a<1时,对数函数为单调减少函数。
下面代码使用到的性质: log a b = log c b log c a \log _{a} b=\frac{\log _{c} b}{\log _{c} a} logab=logcalogcb
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(0.01, 4, 0.01)
f11 = [np.log2(i) for i in x]
f12 = [np.log2(i)/np.log2(4) for i in x]
plt.plot(x, f11, label='$y=log_2^x,(a>1)$')
plt.plot(x, f12, label='$y=log_4^x,(a>1)$')
f21 = [np.log2(i)/np.log2(1/2) for i in x]
f22 = [np.log2(i)/np.log2(1/4) for i in x]
plt.plot(x, f21, label=r'$y=log_\frac{1}{2}^x,(0<a<1)$')
plt.plot(x, f22, label=r'$y=log_\frac{1}{4}^x,(0<a<1)$')
# 移动坐标轴及边框设置:https://www.jb51.net/article/172275.htm
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.legend(loc='best')
plt.show()
对数函数与指数函数互为反函数,所以两者图像关于直线 y = x y=x y=x对称
三角函数
函数 | 表达式 | 是否有界 | 定义域 | 值域 |
---|---|---|---|---|
正弦函数 | y = sin x y=\sin x y=sinx | 是 | x ∈ ( − ∞ , + ∞ ) x \in(-\infty,+\infty) x∈(−∞,+∞) | y ∈ [ − 1 , + 1 ] y \in[-1,+1] y∈[−1,+1] |
余弦函数 | y = cos x y=\cos x y=cosx | 是 | x ∈ ( − ∞ , + ∞ ) x \in(-\infty,+\infty) x∈(−∞,+∞) | y ∈ [ − 1 , + 1 ] y \in[-1,+1] y∈[−1,+1] |
正切函数 | y = tan x y=\tan x y=tanx | 否 | { x ∣ x ≠ k π + π 2 , k ∈ Z } \left\{x \mid x \neq k \pi+\frac{\pi}{2}, k \in \mathbf{Z}\right\} {x∣x=kπ+2π,k∈Z} | y ∈ ( − ∞ , + ∞ ) y \in(-\infty,+\infty) y∈(−∞,+∞) |
余切函数 | y = cot x y=\cot x y=cotx | 否 | { x ∣ x ≠ k π , k ∈ Z } \{x \mid x \neq k \pi, k \in \mathbf{Z}\} {x∣x=kπ,k∈Z} | y ∈ ( − ∞ , + ∞ ) y \in(-\infty,+\infty) y∈(−∞,+∞) |
正割函数 | y = sec x = 1 cos x y=\sec x=\frac{1}{\cos x} y=secx=cosx1 | 否 | { x ∣ x ≠ k π + π 2 , k ∈ Z } \left\{x \mid x \neq k \pi+\frac{\pi}{2}, k \in \mathbf{Z}\right\} {x∣x=kπ+2π,k∈Z} | ∣ y ∣ ⩾ 1 \lvert y \rvert \geqslant 1 ∣y∣⩾1 |
余割函数 | y = csc x = 1 sin x y=\csc x=\frac{1}{\sin x} y=cscx=sinx1 | 否 | { x ∣ x ≠ k π , k ∈ Z } \{x \mid x \neq k \pi, k \in \mathbf{Z}\} {x∣x=kπ,k∈Z} | ∣ y ∣ ⩾ 1 \lvert y \rvert \geqslant 1 ∣y∣⩾1 |
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-2 * np.pi, 2 * np.pi, 200)
f1 = np.sin(x)
f2 = np.cos(x)
f3 = np.tan(x)
f4 = 1 / f3
f5=1/f2
f6=1/f1
plt.plot(x, f1, label=r'$y=sin(x)$')
plt.plot(x, f2, label=r'$y=cos(x)$')
plt.plot(x, f3, label=r'$y=tan(x)$')
plt.plot(x, f4, label=r'$y=cot(x)$')
plt.plot(x, f5, label=r'$y=sec(x)$', )
plt.plot(x, f6, label=r'$y=csc(x)$', )
# 移动坐标轴及边框设置:https://www.jb51.net/article/172275.htm
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.xlim(x.min() * 1.1, x.max() * 1.1) # limit x range
plt.ylim(-4, 4) # limit y range
plt.xticks([-2 * np.pi, -3 * np.pi / 2, -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],
[r'$-2\pi$', r'$-3\pi/2$', r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'$2\pi$'])
plt.legend(loc='best')
plt.show()
反三角函数
函数 | 表达式 | 是否有界 | 定义域 | 值域 |
---|---|---|---|---|
反正弦函数 | y = arcsin x y=\arcsin x y=arcsinx | 是 | x ∈ [ − 1 , + 1 ] x \in[-1,+1] x∈[−1,+1] | y ∈ [ − π 2 , π 2 ] y \in\left[-\frac{\pi}{2}, \frac{\pi}{2}\right] y∈[−2π,2π] |
反余弦函数 | y = arccos x y=\arccos x y=arccosx | 是 | x ∈ [ − 1 , + 1 ] x \in[-1,+1] x∈[−1,+1] | y ∈ [ 0 , π ] y \in[0, \pi] y∈[0,π] |
反正切函数 | y = arctan x y=\arctan x y=arctanx | 是 | x ∈ ( − ∞ , + ∞ ) x\in (-\infty,+\infty) x∈(−∞,+∞) | y ∈ ( − π 2 , π 2 ) y \in\left(-\frac{\pi}{2}, \frac{\pi}{2}\right) y∈(−2π,2π) |
反余切函数 | y = a r c c o t x y=arccot x y=arccotx | 是 | x ∈ ( − ∞ , + ∞ ) x\in (-\infty,+\infty) x∈(−∞,+∞)$ | y ∈ ( 0 , π ) ) y \in(0, \pi)) y∈(0,π)) |
下面代码使用到的性质:
arccot
(
x
)
=
π
2
−
arctan
(
x
)
\operatorname{arccot}(x)=\frac{\pi}{2}-\arctan (x)
arccot(x)=2π−arctan(x)
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x1 = np.linspace(-1, 1, 200)
x2 = np.linspace(-10, 10, 200)
f1 = np.arcsin(x1)
f2 = np.arccos(x1)
f3 = np.arctan(x2)
f4 = np.pi / 2 - np.arctan(x2)
plt.plot(x1, f1, label=r'$y=arcsin(x)$')
plt.plot(x1, f2, label=r'$y=arccos(x)$')
plt.plot(x2, f3, label=r'$y=arctan(x)$')
plt.plot(x2, f4, label=r'$y=arccot(x)$')
# 移动坐标轴及边框设置:https://www.jb51.net/article/172275.htm
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.yticks([-np.pi, -np.pi / 2, np.pi / 2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$\pi/2$', r'$\pi$', ])
plt.legend(loc='best')
plt.show()