from scipy import optimize
from timeit import timeit
def g(x):
return x**3-2
def h1(x):
root2, results2 = optimize.bisect(g, -1, 2, full_output=True)
def h2(x):
root2, results2 = optimize.brentq(g, -1, 2, full_output=True)
def h3(x):
root2, results2 = optimize.brenth(g, -1, 2, full_output=True)
def h4(x):
root2, results2 = optimize.toms748(g, -1, 2, full_output=True)
def h5(x):
root2, results2 = optimize.ridder(g, -1, 2, full_output=True)
def h6(x):
root2, results2 = optimize.newton(g, 1, full_output=True)
print(timeit('h1(1)', 'from __main__ import h1',number=10000))
print(timeit('h2(1)', 'from __main__ import h2',number=10000))
print(timeit('h3(1)', 'from __main__ import h3',number=10000))
print(timeit('h4(1)', 'from __main__ import h4',number=10000))
print(timeit('h5(1)', 'from __main__ import h5',number=10000))
print(timeit('h6(1)', 'from __main__ import h6',number=10000))
0.13619833000120707
0.06716860800224822
0.07249497801240068
8.234591193002416
0.08220803098811302
0.934443823993206
输出结果看,brentq还是比较适合的。对于一些自定义函数,效果也可以。