You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib 3D图中绘制xy平面约束等高线及对应f(x,y)点

拉格朗日乘数法可视化优化

要实现只保留xy平面内的约束等高线,并标记约束线上方的曲面点,可按以下方式修改代码:

修改后的代码

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
X = np.arange(-5,5,0.5)
Y = X
X, Y = np.meshgrid(X, Y)
Z = 50 - X**2 - Y**2
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, alpha=0.7)
ax.set_zlim(0, 50)

# 定义约束条件g(x,y)=c,这里取c=16作为示例
c = 16
g = X**2 + Y**2
# 绘制xy平面(z=0)上的单一约束等高线
ax.contour(X, Y, g, levels=[c], colors='k', zdir='z', offset=0)

# 提取约束线上的点并计算对应Z值
mask = np.isclose(g, c, atol=0.1)  # 允许微小误差匹配约束条件
x_constraint = X[mask]
y_constraint = Y[mask]
z_constraint = Z[mask]
# 标记约束线上方的曲面点
ax.plot3D(x_constraint, y_constraint, z_constraint, 'ro', markersize=4)

plt.show()

关键修改说明

  • 单一约束等高线:通过levels=[c]指定只绘制约束值为c的等高线,zdir='z'和offset=0确保等高线落在xy平面(z=0)上,colors='k'设置为黑色便于区分。
  • 标记曲面对应点:用np.isclose筛选出近似满足约束条件的点,计算这些点在曲面Z=f(x,y)上的对应值,再用plot3D以红色圆点标记。

内容的提问来源于stack exchange,提问作者abstract_je

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:45:49