酷代码 AI
菜单
服务商

使用matplotlib绘制x^2+y^2+z^2=1的曲面

要使用`matplotlib`显示方程 \(x^2 + y^2 + z^2 = 1\) 的曲面,可以将方程变形为 \(z = \pm\sqrt{1 - x^2 - y^2}\) ,然后在给定的 \(x\) 和 \(y\) 取值范围(-6 到 6)内生成网格点,计算对应的 \(z\) 值,最后使用 `matplotlib` 的 `plot_surface` 函数绘制曲面。 以下是实现该功能的Python代码: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建一个图形窗口 fig = plt.figure() # 添加一个3D子图 ax = fig.add_subplot(111, projection='3d') # 定义x和y的取值范围 x = np.linspace(-6, 6, 100) y = np.linspace(-6, 6, 100) # 创建网格点 X, Y = np.meshgrid(x, y) # 计算z的值,根据方程x^2 + y^2 + z^2 = 1,变形得到z = ±sqrt(1 - x^2 - y^2) Z1 = np.sqrt(1 - X**2 - Y**2) Z2 = -np.sqrt(1 - X**2 - Y**2) # 过滤掉虚数部分,只保留实数部分 Z1 = np.where(np.isreal(Z1), Z1.real, np.nan) Z2 = np.where(np.isreal(Z2), Z2.real, np.nan) # 绘制上半部分球面 ax.plot_surface(X, Y, Z1, color='b', alpha=0.5) # 绘制下半部分球面 ax.plot_surface(X, Y, Z2, color='b', alpha=0.5) # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') # 设置图形 ax.set_title('Surface of x^2 + y^2 + z^2 = 1') # 显示图形 plt.show() ``` 上述代码中,首先导入了必要的库,然后创建了一个3D图形窗口和子图。接着,定义了 \(x\) 和 \(y\) 的取值范围,并使用 `np.meshgrid` 创建了网格点。根据方程计算了 \(z\) 的值,并过滤掉虚数部分。使用 `plot_surface` 函数绘制了上半部分和下半部分的球面,并设置了坐标轴标签和图形,最后显示图形。 ######[AI问答 | 633点数解答 | 2026-02-15 14:08:03]

相关提问
发财导航,免费问AI
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]