Python运行二分求根绘图代码报only length-1 arrays错误如何修复
错误原因
- 代码中使用的
math.exp()仅支持接收单个标量数值作为输入,无法处理np.linspace()生成的numpy数组,执行y1 = func1(x1)时触发类型错误。 - 二分法求解
opt.bisect调用func1时传入的是单值参数,所以这一步不会报错,问题出在绘图前批量计算y值的步骤。
修复方法
将func1中的math.exp替换为支持数组广播计算的np.exp即可。
修复后完整代码
import numpy as np import matplotlib.pyplot as plt from scipy import optimize as opt def func1(x): f1 = np.exp(x-2) + x**3 - x return f1 solv1_bisect = opt.bisect(func1, -1.5, 1.5) x1 = np.linspace(-1.5,1.5) y1 = func1(x1) plt.plot(x1,y1,'r-') plt.grid() print('solv1_bisect = ', solv1_bisect)
内容的提问来源于stack exchange,提问作者Y Yen
相关产品推荐
相关产品推荐

