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

如何在Matplotlib绘制的二次函数图中添加最小值点?

找到二次函数最小值点并在图中标记的解决方法

错误原因分析

你尝试的代码里,x[np.argmin(x)]是错误的——它取的是x数组自身的最小值(也就是-5),而非y取最小值时对应的x值。正确逻辑应该是先找到y最小值对应的索引,再用该索引获取对应的x坐标。

两种可行解决方案

方案1:基于采样数组查找最小值点

利用np.argmin(y)定位y数组最小值的索引,再通过索引获取对应的x、y值,最后用散点图标记:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = x*x - 2*x + 23

# 绘制二次函数曲线
plt.plot(x, y)

# 修正标题(原标题函数式与实际计算不一致,已统一)
plt.title("\nQuadratic Function: y=x² - 2x + 23\n", fontsize=16, weight="bold", color = "red")

# 设置坐标轴标签
plt.xlabel("X", fontsize = 10, weight="bold", color="red")
plt.ylabel("Y", fontsize = 10, weight="bold", color="red")

# 查找并标记最小值点
min_index = np.argmin(y)
xmin = x[min_index]
ymin = y[min_index]
plt.scatter(xmin, ymin, color="lightgreen", s=100, label=f"Min Point ({xmin:.2f}, {ymin:.2f})")
plt.legend()  # 显示最小值点标注

# 添加网格
plt.grid()

# 展示图像
plt.show()

# 打印最小值点坐标
print(f"最小值点坐标:({xmin:.2f}, {ymin:.2f})")

方案2:用二次函数解析公式计算(更准确)

对于标准二次函数y=ax²+bx+c,最小值点的x坐标为x = -b/(2a),代入函数即可得到y值。这种方法不受采样点数量影响,结果更精准:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
a, b, c = 1, -2, 23
y = a*x**2 + b*x + c

# 绘制二次函数曲线
plt.plot(x, y)

# 设置标题
plt.title("\nQuadratic Function: y=x² - 2x + 23\n", fontsize=16, weight="bold", color = "red")

# 设置坐标轴标签
plt.xlabel("X", fontsize = 10, weight="bold", color="red")
plt.ylabel("Y", fontsize = 10, weight="bold", color="red")

# 用公式计算最小值点
xmin = -b/(2*a)
ymin = a*xmin**2 + b*xmin + c
plt.scatter(xmin, ymin, color="lightgreen", s=100, label=f"Min Point ({xmin:.2f}, {ymin:.2f})")
plt.legend()

# 添加网格
plt.grid()

# 展示图像
plt.show()

# 打印最小值点坐标
print(f"最小值点坐标:({xmin:.2f}, {ymin:.2f})")

额外提示

  • 注意统一标题里的函数表达式与实际计算的式子,避免混淆;
  • 调整plt.scatter的s参数可以改变标记点的大小,label配合plt.legend()能清晰展示最小值点的坐标信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:42