python和数学牛顿法的程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python和数学牛顿法的程序相关的知识,希望对你有一定的参考价值。
这个程序运行之后是无限循环的,可不可以告诉我为什么会造成这个结果呢x^3 - 3x^2 + x + 3 = 0 用数学牛顿法来解决这个问题
这个是牛顿法的公式。 能不能具体说明一下上面的程序为什么会出现无限循环呢,最初的x的值是1和2的情况下都会出现无限循环。
能不能具体讲解一下为什么会出现无限循环,怎样才会避免这个无限循环呢。 跪求。。。
答非所问
追答x(n+1)=xn+Δx=xn+(0-f(xn))/f’(xn)
是你没理解Δx的变形应用,很多求跟都是应用导数数值分析法进行精度逼近
赋值错误,涉及精度,开始应该是x=1.0000而不是x=1,跟踪程序看数据精度造成x一直是整数
追问赋值1.0000之后还是会出现无限循环的情况。。
追答开debug程序跟踪变量看看
追问抱歉 真的答非所问。我只想知道为什么会出现无限循环还有就是如何避免。
但谢谢你的回答
拟牛顿法之BFGS
参考技术A 考虑无约束最优化问题假设 有二阶连续偏导,且 表示第 次迭代的值。可以将 在 附近做二阶泰勒展开
其中, 是 的梯度在点 的值, 是 的海塞矩阵
在点 的值。
每次迭代从 开始,求目标函数的极小点。假设 满足
由泰勒展开,有
即
因此有
或者以 定义搜索方向,即有
以式 迭代就是牛顿法
在牛顿法的迭代中,需要计算海塞矩阵的逆矩阵 ,这一计算比较复杂,考虑用一个 阶矩阵 代替 。就是拟牛顿法的基本想法。
由梯度的基本定义,可知 满足以下关系
令 ,则 ,称为拟牛顿条件。如果 正定,则可以保证搜索方向式下降的。
这是由于搜索方向是 ,根据牛顿法的迭代规则,有
所以在前述的泰勒展开中, 可以改写为
由于 正定, 。故当 充分小时,总有
拟牛顿法同样满足这个条件,以一正定矩阵 代替 ,同时令其满足拟牛顿条件,即 按照拟牛顿法,在每次迭代中可以选择更新矩阵 。
DFP方法选择正定矩阵逼近的是海塞矩阵的逆矩阵,仍未达到最优化。故BFGS方法用正定矩阵 逼近海塞矩阵 本身。此时相应的拟牛顿条件为 。
假设每次迭代中,
考虑使 和 满足
得到BFGS迭代公式
输入:目标函数 ,梯度函数 ,精度要求
输出: 的极小点
(1)选定初始点 ,取 为正定对称矩阵,置
(2)计算 ,如果 ,停止迭代,找到最优点,否则继续迭代
(3)由 求出
(4)求 使得
(5)更新
(6)计算 ,比较误差,如果不符合停止条件,计算 ,进行下一次迭代
(7)
以上是关于python和数学牛顿法的程序的主要内容,如果未能解决你的问题,请参考以下文章