前言
简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释
工具与来源: 一下代码与结果都可在JupyterLab上实现,更多情况可看Github
使用 NumPy 可视化数学函数
1.可视化 f=x1*e(-x12-x22)
import numpy as np
import matplotlib.pyplot as pltx1_array=np.linspace(-3,3,121)#其中生成从-3,到 3 的121个数据的数组x2_array=np.linspace(-3,3,121)xx1,xx2=np.meshgrid(x1_array,x2_array)#利用meshgrid函数生成网格化数据(二维数组,前后分别表示x,y轴;xx1,xx2都是二维数组)ff=xx1*np.exp(-xx1**2-xx2**2)#得出函数值,也是一个二维数组,表示的是对用点的数值fig=plt.figure()
#创建一个图形对象
ax=fig.add_subplot(projection='3d')
#使用add_subplot()方法添加一个三维轴对象ax.plot_wireframe(xx1,xx2,ff,rstride=1,cstride=100,color='grey')
ax.scatter(xx1,xx2,ff,c=ff,cmap='RdYlBu_r')#在三维轴上绘制散点图ax.set_proj_type('ortho')
#角度
plt.show()
结果图片:
2.可视化 f(x)=e^( -(x-2)^2 /2)
import numpy as np
import plotly.express as px
import matplotlib.pyplot as pltx_array=np.linspace(-10,10,121)
y_array=np.exp(-((x_array-2)**2/2))#同上fig,ax=plt.subplots(figsize=(8,6))#同时给出图像,坐标轴对象,其中“窗口”宽8,高6.(英寸)ax.plot(x_array,y_array,label='f(x)',color='r',linewidth=2)#直接用plot方法绘画ax.set_xlabel('x')
ax.set_ylabel('y')#添加标签ax.legend()#添加图像解释ax.set_xlim(0,4)
ax.set_ylim(-1,3)#设置取值范围ax.set_aspect('equal')
#表示相等
plt.grid()#添加网格plt.show()
3.可视化
其中 μx=0,μy=0,δx=1,δy=1,ρx,y=0.6
import numpy as np
import matplotlib.pyplot as pltsigma_X = 1
sigma_Y = 1
rho_XY = 0.6
mu_X = 0
mu_Y = 0def f_XY_PDF(xx1, xx2, sigma_X, sigma_Y, rho_XY, mu_X, mu_Y):coeff = 2 * np.pi * sigma_X * sigma_Y * np.sqrt(1 - rho_XY**2)coeff = 1/coeffxx1_ = (xx1 - mu_X)/sigma_Xxx2_ = (xx2 - mu_Y)/sigma_Yellipse = 1/(1 - rho_XY**2) * (xx1_**2 - 2*rho_XY*xx1_*xx2_ + xx2_**2)PDF = coeff * np.exp(-1/2 * ellipse)return PDFx1_array = np.linspace(-3, 3, 301)
x2_array = np.linspace(-3, 3, 301)
xx1, xx2 = np.meshgrid(x1_array, x2_array)
PDF_ff = f_XY_PDF(xx1, xx2, sigma_X, sigma_Y, rho_XY, mu_X, mu_Y)fig, ax = plt.subplots(figsize=(4, 4))
ax.contourf(xx1, xx2, PDF_ff)ax.set_xlim(-3, 3)
ax.set_ylim(-3, 3)
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.grid()
ax.set_aspect('equal', adjustable='box')
结果: