所以我有一个牛顿优化问题,我必须找到f'的值(x)和f“(x)其中x = 2.5且f = 2 * sin(x)─((x)**2/10)进行计算,但我尝试使用sympy和np.diff进行一阶和二阶导数,但没有线索,导致它不断出错,所以我返回使用手动导数,有任何线索如何派生函数f的帮助下,其他库,这里的代码
def Newton(x0):
x = x0
f = lambda x : 2 * np.sin (x) - ((x)**2/10)
f_x0 = f(x0)
#First Derivative
f1 = lambda x : 2 * np.cos (x) - ((x)/5)
f_x1 = f1(x0)
#Second Derivative
f2 = lambda x : -2 * np.sin (x) - (1/5)
f_x2 = f2(x0)
x1 = x0 - (f_x1/f_x2)
x0 = x1
return x,f_x0,f_x1,f_x2,x0
无需人工求一阶导数和二阶导数。
1条答案
按热度按时间gev0vcfq1#
在您的情况下,可以使用scipy库计算导数,如下所示:
这里计算函数在x = 2.5处的一阶和二阶导数。
同样的方法也可以用sympy库来完成,有些人可能会发现这比上面的方法更容易。