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