数值软件的思维果然和mma那种软件很不一样呢,记录一下。
from numpy import diff,sign,argwhere,linspace
x=linspace(-10,10,200)
f=27*x+130
g=-12-58*x+x**2+x**3
idz=argwhere(diff(sign(g))).flatten()
idi=argwhere(diff(sign(f-g))).flatten()
idm=argwhere(diff(sign(diff(g)))).flatten()
plt.figure(figsize=(12*50./127,8*50./127))
plt.plot(x,f)
plt.plot(x,g)
plt.plot(x[idz],g[idz],"o",label="零点")
plt.plot(x[idi],g[idi],"o",label="交点")
plt.plot(x[idm],g[idm],"o",label="极值点")
plt.legend(prop={'family':'SimSun'})
不过这个毕竟是根据数据得出的,不够精确,交点就明显歪了,想要精确的就用scipy.optimize
解吧。