猿问

如何使用 python 绘制二次函数虚数输入的 4 维图

我是一名高中生,没有编码经验,但我尝试编写一个 matplotlib 3d 图形,并以颜色渐变作为第四维来绘制函数图:

f(x) = x^2 + 1

对于x的所有实数和复数值 (a + b i ) ,这需要我有四个维度:x的 (x + bi) 的实部 x [现在称为 X]  ( x + bi) [现在称为W],(y + bi) 的实部y [现在称为Y],以及(y + bi) 的虚部bi [现在称为Z]。

基本上,输入将为x,格式为(X + W),输出将为f(x),格式为(Y + Z)。我希望图表具有 X、Y 和 Z 轴,W 表示为图表表面上的颜色渐变。Z 和 W 是虚数 b*cmath.sqrt(-1)。我想要所有参数的范围为 (-20, 20)。

我的笔记本电脑上有 python 和 anaconda,请帮忙。<3


三国纷争
浏览 124回答 1
1回答

守着星空守着你

这是我的解决方案:# Import packagesimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D&nbsp; &nbsp;# Needed to create 3D plotsimport matplotlibimport matplotlib.pyplot as plt#%matplotlib notebook&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Uncomment this if using Jupyter# Define functiondef fun(x):&nbsp; &nbsp; # Note: x is a complex() object, and * and + are defined for complex numbers&nbsp; &nbsp; return x*x + 1# Create 1x1 figure with 3 axesfig = plt.figure()ax = fig.add_subplot(111, projection='3d')# Define grid of x and w using a step of 0.05X = W = np.arange(-20.0, 20.0, 0.05)X, W = np.meshgrid(X,W)complexVals = X + 1j*W&nbsp; &nbsp; &nbsp; # Convert X/W grid into complex numbers# Call the function on the complex numbers and extract the real/imag partsY_Z = fun(complexVals)Y = Y_Z.realZ = Y_Z.imag# Create colormap for Wcolor_dimension = Wminn, maxx = color_dimension.min(), color_dimension.max()norm = matplotlib.colors.Normalize(minn, maxx)m = plt.cm.ScalarMappable(norm=norm, cmap='jet')m.set_array([])fcolors = m.to_rgba(color_dimension)# Create surfaceax.plot_surface(X, Y, Z, facecolors=fcolors, vmin=minn, vmax=maxx, shade=False,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linewidth=0, antialiased=False)# Set axis labelsax.set_xlabel('X (Re)')ax.set_ylabel('Y (Re)')ax.set_zlabel('Z = f(x) (Im)')# Create colorbar and set titlecbr = plt.colorbar(m)cbr.ax.set_title('W')# Show plot with colorbarplt.show()这是输出:但是,如果您使用 Anaconda,我强烈建议将此代码添加到 Jupyter Notebook 中。这就是你可以获得交互式情节的原因。它已经随 Anaconda 一起安装,您可以通过jupyter notebook在 Anaconda 提示符中输入来启动它。
随时随地看视频慕课网APP

相关分类

Python
我要回答