Python绘制3D曲面图:基于je与be值笛卡尔乘积的实现问题
解答
1. 可用的笛卡尔乘积内置工具
- Python标准库
itertools模块下的product函数:可以直接生成多个可迭代对象的笛卡尔乘积,适合循环遍历所有参数组合 - Numpy提供的
np.meshgrid函数:专门生成网格坐标矩阵,输出结果直接适配Matplotlib 3D曲面的输入格式,绘图时更方便
2. 代码调整实现3D曲面绘制
你现有代码的问题是jevals和bevals同步赋值,仅覆盖了两个参数线性相关的对角线组合,因此只能输出单条曲线。调整逻辑如下:
- 独立定义
je和be的取值范围,互不绑定 - 生成两个参数的网格矩阵,遍历所有两两组合计算对应的
re/rp/rs值 - 把输出结果存储为二维矩阵,适配曲面绘图接口
修改后的完整可运行代码如下:
import matplotlib.pyplot as plt import numpy as np from scipy.optimize import fsolve # 初始化固定参数 jvals = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]] bvals = [0.1, 0.0, 0.0] def Neuro(xyz, bvals, jvals): re = xyz[0] rp = xyz[1] rs = xyz[2] b1 = bvals[0] b2 = bvals[1] b3 = bvals[2] Jee = jvals[0][0] Jep = jvals[0][1] Jes = jvals[0][2] Jpe = jvals[1][0] Jpp = jvals[1][1] Jps = jvals[1][2] Jse = jvals[2][0] Jsp = jvals[2][1] Jss = jvals[2][2] u_e = (((Jee)*re)-((Jep)*rp)-((Jes)*rs)+b1) u_p = (((Jpe)*re)-((Jpp)*rp)-((Jps)*rs)+b2) u_s = (Jse)*re + Jsp+ Jss + b3 f_e = -re + (u_e) f_p = -rp + (u_p) f_s = -rs + (u_s) return f_e, f_p, f_s # 定义参数取值范围,可根据需求调整步长和上下限 num_steps = 50 # 步长过大的话计算和渲染速度会变慢 je_range = np.linspace(0, 0.99, num_steps) be_range = np.linspace(0, 0.99, num_steps) # 生成网格矩阵,适配曲面绘图 JE, BE = np.meshgrid(je_range, be_range) RE = np.zeros_like(JE) RP = np.zeros_like(JE) RS = np.zeros_like(JE) # 遍历所有笛卡尔乘积组合计算结果 for i in range(num_steps): for j in range(num_steps): current_je = JE[i,j] current_be = BE[i,j] jvals[0][0] = current_je bvals[0] = current_be xyz0 = np.array([1.0,1,1]) xyz = fsolve(Neuro, xyz0, args=(bvals, jvals)) RE[i,j] = xyz[0] RP[i,j] = xyz[1] RS[i,j] = xyz[2] # 绘制3D曲面 fig = plt.figure(figsize=(10,7)) ax = fig.add_subplot(projection='3d') ax.set_xlabel("Jee Values") ax.set_ylabel("Be Values") ax.set_zlabel("Root Values") ax.set_title("3D Surface Plot of re") # 绘制re的曲面,可替换为RP/RS画另外两个参数的曲面 surf = ax.plot_surface(JE, BE, RE, cmap='Reds', edgecolor='none') fig.colorbar(surf, shrink=0.5, aspect=5) # 加颜色条对应值的大小 plt.show()
如果需要绘制rp或rs的曲面,只需将plot_surface中的RE替换为RP或RS,调整对应的标题和colormap即可。
内容的提问来源于stack exchange,提问作者Robert Csete
相关产品推荐
相关产品推荐

