from scipy.optimize import fsolve
def func(x,a,b,c,n):
return a*x**n + b*x - c
a,b,c = 11.,23.,31.
n = 77./27.
guess = [4.0,]
print fsolve(func,guess,args=(a,b,c,n)) # 0.94312258329
当然,这给了你a根,不一定全部根。
编辑:使用brentq,速度快得多
from timeit import timeit
sp = """
from scipy.optimize import fsolve
from scipy.optimize import brentq
from numpy.random import uniform
from numpy import zeros
m = 10**3
z = zeros((m,4))
z[:,:3] = uniform(1,50,size=(m,3))
z[:,3] = uniform(1,10,m)
def func(x,a,b,c,n):
return a*x**n + b*x - c
"""
s = "[fsolve(func,1.0,args=tuple(i)) for i in z]"
t = "[brentq(func,0.,10.,args=tuple(i)) for i in z]"
runs = 10**2
print 'fsolve\t', timeit(s,sp,number=runs)
print 'brentq\t', timeit(t,sp,number=runs)
我认为你的野兽选择是^{} :
印刷品
我会用scipy的
fsolve
当然,这给了你a根,不一定全部根。
编辑:使用
brentq
,速度快得多给我
看here和here。
我为自己感到骄傲,我仍然记得细节(没有读链接!):)
如果你不明白,那就看here。
相关问题 更多 >
编程相关推荐