输入为标量(Scalar)
f(xk+δ) ≈ f(xk)+f′(xk)δ+f′′(xk)δ22 δ+xk∈U˚(xk)f(xk+δ) ≈ f(xk)+f′(xk)δ+f″(xk)δ22 δ+xk∈U˚(xk)
对于极值点xkxk(极大值点和极小值点)表示在∀x∈U(xk)∀x∈U(xk),都有f(x)≤f(xk) (f(x)≥f(xk))f(x)≤f(xk) (f(x)≥f(xk))
我们只看泰勒级数的前两项,即f(xk+δ) ≈ f(xk)+f′(xk)δf(xk+δ) ≈ f(xk)+f′(xk)δ,可以看出如果xkxk为极大(小)值点,那么恒有f(xk)≥f(xk+δ) (f(xk)≤f(xk+δ))f(xk)≥f(xk+δ) (f(xk)≤f(xk+δ)),所以当δ+xk∈U˚(xk)δ+xk∈U˚(xk)时,必有f′(xk)≡0f′(xk)≡0
如果现在满足f(xk)=0f(xk)=0,且
- f′′(xk)>0f″(xk)>0,则xkxk为严格的局部极小值点(反之为局部极大值点)
- f′′(xk)=0f″(xk)=0,则有可能是一个鞍点(Saddle Point)
输入为矢量(Vector)
补充,由上式
Newton’s Method
它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程根的方法,它表达的意思就是,对于方程f(x)=0f(x)=0,欲求其解x∗x∗,使得f(x∗)=0f(x∗)=0,那么可以任意初始化一个值x0x0作为f(x)f(x)的解,接着判断x0x0是否为f(x)f(x)的解(第一种,f(x0)f(x0)是否为0,第二种,xixi与xi+1xi+1是否无限接近(当然此时f(xi+1)f(xi+1)的绝对值也必然无限接近于于0)),如果不是,我们求出f(x)f(x)在点xixi处切线与x轴的交点作为f(x)f(x)的下一个解xi+1xi+1,然后继续判断xi+1xi+1是否为f(x)f(x)的解,直到找到解为止(必定在方程f(x)f(x)的解处收敛)。f(x)f(x)在xixi处的切线方程为,
非线性方程转为线性方程可利用Taylor’s formula
def calc_solution(n): # x*x = n
if n < 0: # enable to calculate complex
print('error')
xi = 1
xi1 = 10
while abs(xi-xi1) > 0.0001:
t = xi1
xi1 = xi - (xi**2-n)/(2*xi)
xi = t
return xi1