学习笔记|牛顿法
牛顿法全称牛顿迭代法,是牛顿在17世纪提出的一种近似求解方程的方法。尽管已是老古董,却仍然非常有用,AI数学基础之凸优化——华为AI学习笔记、学习笔记|最大熵模型学习的IIS法都曾提到过它。
1. 牛顿迭代公式
则L与x轴的交点的横坐标
称为r的二次近似值。重复以上过程,得r的近似值序列,其中
称为r的第n+1次近似值。上述计算公式称为牛顿迭代公式。
2. 牛顿法的python实现
首先实现求导
def df(x):
return (f(x+0.0001)-f(x))/0.0001
然后实现牛顿迭代法
def newtonmethod(n, iv, e=0.000001):
cn = 1
v = iv - f(iv) / df(iv)
while cn < n and f(v) > e:
cn += 1
iv = v
v = iv - f(iv) / df(iv)
print(cn, v)
return v
参数中,n为最大迭代次数,e为精度。
函数待定
def f(x):
pass
假如函数为
函数如下:
def f(x):
return x ** 2 - 1
运行如下:
print(newtonmethod(100, 0))
结果如下:
2 5000.000012747098
3 2500.0001279396756
4 1250.000290803936
5 625.0005699662601
6 312.50110995499887
7 156.2521799242592
8 78.12931492206836
9 39.07108210456928
10 19.548363224606707
11 9.799784135797545
12 4.950938339426849
13 2.5764841063628636
14 1.4823261954684746
15 1.0784843928845107
16 1.0028592729199908
17 1.0000042184119506
18 1.0000000002198062
1.0000000002198062
3. 未完问题
从AI数学基础之凸优化——华为AI学习笔记可以看到,牛顿法的计算是比较复杂的,但上述的实现却一点也不复杂,那么问题在哪?
参考文献
https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95/10887580?fromtitle=%E7%89%9B%E9%A1%BF%E6%B3%95&fromid=1384129&fr=aladdin
- 点赞
- 收藏
- 关注作者
评论(0)