【高数:1 映射与函数】
- 例2.1 绝对值函数
- 例2.2 符号函数
- 例2.3 反函数表示
- 例2.4 双曲正弦sinh,双曲余弦cosh,双曲正切tanh
参考书籍:毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京:清华大学出版社,2022.
例2.1 绝对值函数
#导入pyplot子模块并将其重命名为plt
import matplotlib.pyplot as plt
#新建两个空列表,用于存放x坐标与y坐标
x=[]
y=[]
for i in range(100):
element=-1+0.02*i
x.append(element) #生成x坐标列
y.append(element if element>=0 else -element) #生成y坐标列
plt.plot(x,y) #绘制折线图
plt.title('y=|x|') #设置标题
plt.show() #显示图形
定义函数
import numpy as np
#定义绝对值函数
def f(x):
return np.abs(x)
x=np.linspace(-1,1,100)
plt.plot(x,f(x),'r',linewidth=2) #折线颜色为红色,线宽为2
plt.title('y=|x|') #设置标题
plt.show()
例2.2 符号函数
#自定义符号函数
def sgn(x):
if x>0:
return 1
elif x<0:
return -1
else:
return 0
x=np.linspace(-2,2,51)
y=[]
for i in range(len(x)):
y.append(sgn(x[i]))
plt.plot(x,y,'g',linewidth=3) #线条颜色为绿色
plt.xlabel('x') #设置x轴标签
plt.ylabel('y') #设置y轴标签
plt.title('y=sgn(x)') #设置标题
plt.show()
散点绘制
x=np.linspace(-2,2,201)
plt.scatter(x,np.sign(x),c='g',s=10) #点的大小为10
plt.xlabel('x')
plt.ylabel('y')
plt.title('y=sgn(x)')
plt.show()
一图多线
x=np.linspace(0,3,100)
fig,ax=plt.subplots()
ax.plot(x,x,label='y=x')
ax.plot(x,x**2,label='y=x^2')
ax.plot(x,x**3,label='y=x^3')
ax.set_title('Multi Curves') #设置标题
ax.legend() #显示图例
plt.show()
多幅子图
x=np.linspace(-1.9,1.9,100)
fig,(ax1,ax2,ax3)=plt.subplots(1,3,figsize=(10,6))
ax1.scatter(x,np.floor(x),s=5) #向下整数:floor(1.9)=1
ax2.scatter(x,np.round(x,0),s=5,c='r') #四舍五入取整
ax3.scatter(x,np.ceil(x),s=5,c='g') #向上取整:ceil(2.01)=3
plt.show()
例2.3 反函数表示
y = x 3 , y = x 3 y =x^3,y =\sqrt[3]{x} y=x3,y=3x关于 y = x y=x y=x对称。
def f(x):
return np.power(x,3)
x=np.linspace(-1,1) #等同于x=np.linspace(-1,1,50)
fig,ax=plt.subplots()
plt.axis('equal') #设置等比例缩放
ax.plot(x,f(x),label='y=x**3')
ax.plot(f(x),x,label='y=x**(1/3)')
ax.plot(x,x,label='y=x')
ax.legend()
plt.show()
例2.4 双曲正弦sinh,双曲余弦cosh,双曲正切tanh
Hyperbolic sine sinh, hyperbolic cosine cosh, hyperbolic tangent tanh
x=np.linspace(-2,2)
fig,ax=plt.subplots()
ax.plot(x,np.sinh(x),label='y=shx') #双曲正弦
ax.plot(x,np.cosh(x),label='y=chx') #双曲余弦
ax.plot(x,np.tanh(x),label='y=thx') #双曲正切
ax.legend()
plt.show()