我认为你不需要二项式展开。Horner's method用于计算多项式意味着多项式的因子形式比展开形式更好。在
一般来说,非线性方程的求解可以从符号微分中获益,这对于你的方程来说并不难。为导数提供一个解析表达式,使解算器不必对导数进行数值估计。您可以编写两个函数:一个返回函数的值,另一个返回导数(即这个简单的一维函数的函数的Jacobian),如the docs for scipy.optimize.fsolve()所述。采用这种方法的一些代码:import timeit
import numpy as np
from scipy.optimize import fsolve
def the_function(x, y):
return y * (1 + x)**(4.8) / x**(4.5) - 1
def the_derivative(x, y):
l_dh = x**(4.5) * (4.8 * y * (1 + x)**(3.8))
h_dl = y * (1 + x)**(4.8) * 4.5 * x**3.5
square_of_whats_below = x**9
return (l_dh - h_dl)/square_of_whats_below
print fsolve(the_function, x0=1, args=(0.1,))
print '\n\n'
print fsolve(the_function, x0=1, args=(0.1,), fprime=the_derivative)
%timeit fsolve(the_function, x0=1, args=(0.1,))