【发布时间】:2021-07-18 03:22:40
【问题描述】:
我有以下负二次方程
-0.03402645959398278x^{2}+156.003469x-178794.025
我想知道当导数的斜率为零(最大值)时是否有直接的方法(使用 numpy/scipy 库或任何其他方法)来获取 x 的值。我知道我可以:
- 更改等式的符号并应用 scipy.optimize.minima 方法或
- 使用方程的导数,这样我就可以得到斜率为零时的值
例如:
from scipy.optimize import minimize
quad_eq = np.poly1d([-0.03402645959398278, 156.003469, -178794.025])
############SCIPY####################
neg_quad_eq = np.poly1d(np.negative(quad_eq))
fit = minimize(neg_quad_eq, x0=15)
slope_zero_neg = fit.x[0]
maxima = np.polyval(quad_eq, slope_zero_neg)
print(maxima)
##################numpy######################
import numpy as np
first_dev = np.polyder(quad_eq)
slope_zero = first_dev.r
maxima = np.polyval(quad_eq, slope_zero)
print(maxima)
有没有直接的方法可以得到相同的结果? 打印(最大值)
【问题讨论】:
-
quad_eq(quad_eq.deriv().roots)不够直?
标签: python numpy scipy scipy-optimize