学习笔记|牛顿法

举报
darkpard 发表于 2022/01/14 18:29:11 2022/01/14
【摘要】 牛顿法全称牛顿迭代法,是牛顿在17世纪提出的一种近似求解方程的方法。尽管已是老古董,却仍然非常有用,AI数学基础之凸优化——华为AI学习笔记、学习笔记|最大熵模型学习的IIS法都曾提到过它。1. 牛顿迭代公式则L与x轴的交点的横坐标称为r的二次近似值。重复以上过程,得r的近似值序列,其中称为r的第n+1次近似值。上述计算公式称为牛顿迭代公式。2. 牛顿法的python实现首先实现求导def ...

牛顿法全称牛顿迭代法,是牛顿在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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。