- 程序
- 总结
程序
代码如下(示例):
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]



