使用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]
- Flask代理FastGPT API代码分析:问题剖析与全面改进建议 (DeepSeek | 713点数解答 | 2025-06-18 16:00:34)200
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)318
- Python与HTML+JavaScript实现3D粒子爱心动画:代码剖析与开发要点(字节豆包 | 1487点数解答 | 2025-08-07 11:24:56)145
- Python 用 Matplotlib 和 NumPy 绘制 3D 爱心动画:开发要点与注意事项(DeepSeek | 130点数解答 | 2025-08-29 21:24:33)140
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)419
- Winform开发:含验证与清空功能的注册页面实现(GPT | 5266点数解答 | 2024-06-14 16:04:40)468
- jQuery 实现姓名、邮箱、电话表单验证:成功显示消息,失败提示错误(百度文心 | 858点数解答 | 2024-10-26 23:36:38)413
- jQuery实现表单验证:姓名、邮箱、电话一个都不能少!(阿里通义 | 629点数解答 | 2024-10-29 09:16:19)329
- Go语言实现:动态用户Websocket服务端,生产者消息精准转发多消费者架构设计(字节豆包 | 559点数解答 | 2025-02-25 09:20:32)234
- Go语言实现Windows环境下高性能WebSocket服务端:生产者-消费者架构设计与代码解析(阿里通义 | 600点数解答 | 2025-02-25 09:21:10)211
- MySQL 数据库操作:用德鲁伊连接池和 Spring JDBC 实现 MVC 架构下 Student 表操作及事务测试全解析(字节豆包 | 1115点数解答 | 2025-03-19 11:17:31)275
- Spring JDBC+德鲁伊连接池:MVC架构下MySQL学生表查询、事务验证及代码实现全解析(DeepSeek | 1275点数解答 | 2025-03-19 11:21:32)258