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

如何用Matplotlib绘制隐函数max{abs(x1),abs(x2)} ≤1的图像?

用Matplotlib绘制满足max(|x₁|, |x₂|) ≤1的图像

你要绘制的是一个以原点为中心、边长为2的正方形区域(边界及内部),以下是几种简单直接的实现方法:

方法1:直接绘制边界+填充区域

这种方式直观易懂,适合快速实现:

import matplotlib.pyplot as plt

# 设置坐标轴范围,留出一点边距
plt.xlim(-1.5, 1.5)
plt.ylim(-1.5, 1.5)

# 绘制正方形四条边界
plt.plot([1, 1], [-1, 1], 'k-')   # 右侧边 x=1
plt.plot([-1, -1], [-1, 1], 'k-') # 左侧边 x=-1
plt.plot([-1, 1], [1, 1], 'k-')   # 顶部边 y=1
plt.plot([-1, 1], [-1, -1], 'k-') # 底部边 y=-1

# 填充内部区域(可选)
plt.fill_between([-1, 1], -1, 1, color='lightblue', alpha=0.3)

# 配置图表细节
plt.xlabel('x₁')
plt.ylabel('x₂')
plt.title('max(|x₁|, |x₂|) ≤ 1')
plt.gca().set_aspect('equal', adjustable='box') # 保证正方形比例不失真
plt.grid(True)

plt.show()

方法2:用等高线函数绘制区域

适合扩展到更复杂的隐函数场景:

import matplotlib.pyplot as plt
import numpy as np

# 生成网格数据
x = np.linspace(-1.5, 1.5, 100)
y = np.linspace(-1.5, 1.5, 100)
X, Y = np.meshgrid(x, y)

# 定义函数:max(|x|, |y|)
Z = np.maximum(np.abs(X), np.abs(Y))

plt.figure()
# 填充Z≤1的区域
plt.contourf(X, Y, Z, levels=[0, 1], colors='lightblue', alpha=0.3)
# 绘制边界线
plt.contour(X, Y, Z, levels=[1], colors='black')

# 配置图表
plt.xlabel('x₁')
plt.ylabel('x₂')
plt.title('max(|x₁|, |x₂|) ≤ 1')
plt.gca().set_aspect('equal', adjustable='box')
plt.grid(True)

plt.show()

方法3:用几何补丁快速绘制

利用Matplotlib的补丁模块直接创建正方形:

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

fig, ax = plt.subplots()

# 创建正方形:左下角坐标(-1,-1),宽度2,高度2
square = Rectangle((-1, -1), 2, 2, edgecolor='black', facecolor='lightblue', alpha=0.3)
ax.add_patch(square)

# 配置坐标轴
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.set_aspect('equal', adjustable='box')

ax.set_xlabel('x₁')
ax.set_ylabel('x₂')
ax.set_title('max(|x₁|, |x₂|) ≤ 1')
ax.grid(True)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:09:26