python 阻尼牛顿法

python 阻尼牛顿法,第1张

python 阻尼牛顿法

阻尼牛顿法
  • 程序
  • 总结


程序

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context# 创作者:眰恦
# 地  点:桂林
# 时  间:2021/11/2  22:32

import numpy as np
import matplotlib.pyplot as plt

fun = lambda x:100*(x[0]**2 - x[1])**2 +(x[0] - 1)**2

def gfun(x):
    return np.array([400*x[0]*(x[0]**2-x[1])+2*(x[0]-1),-200*(x[0]**2-x[1])])

def hess(x):
    return np.array([[1200*x[0]**2-400*x[1]+2,-400*x[0]],[-400*x[0],200]])

X0 = np.arange(-1.5,1.5-0.05,0.05)
X1 = np.arange(-3.5,2+0.05,0.05)
[x0,x1] = np.meshgrid(X0,X1)
f=100*(x1-x0**2)**2+(1-x0)**2; # 给定的函数
plt.contour(x0,x1,f,20)

def newton(x0):
    print('起始点:')
    print(x0,'n')
    W = np.zeros((2,10**3))
    i = 0
    rho = 0.55  # [0,1]
    sigma = 0.4  # [0,0.5]
    imax = 1000
    W[:,0] = x0
    epsilon = 1e-5
    # alpha = 1

    while i 

总结 迭代次数跟书中差不多,略少于。课本中迭代20次。

起始点:
[-1  1] 

第 0 次迭代结果:
[-1  1] 

第 1 次迭代结果:
[-0.8169875  0.633975 ] 

第 2 次迭代结果:
[-0.58097571  0.28183121] 

第 3 次迭代结果:
[-0.45075043  0.18621732] 

第 4 次迭代结果:
[-0.26906493  0.03175494] 

第 5 次迭代结果:
[-0.13003808 -0.00241856] 

第 6 次迭代结果:
[-0.00230274 -0.02500882] 

第 7 次迭代结果:
[ 0.1646691  -0.00076368] 

第 8 次迭代结果:
[0.29169786 0.06895134] 

第 9 次迭代结果:
[0.45925365 0.18283897] 

第 10 次迭代结果:
[0.54099927 0.28599787] 

第 11 次迭代结果:
[0.64904708 0.40658073] 

第 12 次迭代结果:
[0.73820568 0.53699836] 

第 13 次迭代结果:
[0.83929039 0.69419023] 

第 14 次迭代结果:
[0.89209245 0.79304088] 

第 15 次迭代结果:
[0.96137002 0.91943294] 

第 16 次迭代结果:
[0.98108044 0.96213032] 

第 17 次迭代结果:
[0.99863594 0.99696554] 

第 18 次迭代结果:
[0.9999208  0.99983996] 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5156918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存