目录

一,牛顿法

二,牛顿法的局限性

三,牛顿下山法

四,割线法

五,抛物线法


一,牛顿法

牛顿法,也叫牛顿迭代法、切线法,是一种迭代求解函数零点的方法。

原理:

令f(x)=0则

,在一定的范围(x的足够小的邻域)内,x1比x0更接近所求的零点x

根据这个原理,不断的迭代,即可越来越接近x值。

double f(double x)
{return x * x + x * 5 - 8;
}
double df(double x)
{double eps = 0.001;return (f(x + eps) - f(x)) / eps;
}
double newton(double x)
{double eps = 0.000001;int times = 100;while (times--) {double x2 = x - f(x) / df(x);cout << x2 << "  ";if (abs(x - x2) < eps)return x2;x = x2;}return 0;
}int main()
{double ans = newton(0);cout << endl << ans << "  " << f(ans);return 0;
}

输出:

1.59968  1.28782  1.27494  1.27492  1.27492
1.27492  3.2081e-12

可以看出收敛很快。

牛顿法开方:

double Sqrt(double x)
{double t = x / 2;x = 1;for (int i = 0; i < 100; i++)x = x / 2 + t / x;return x;
}int main()
{cout << Sqrt(1000000);return 0;
}

输出1000

二,牛顿法的局限性

1,牛顿法对于初始值有要求,而且没有很简单的方法去判断一个邻域是否已经足够小。

2,序列{x0,x1,x2...}越来越接近x,单调有界必要极限,但是这个极限值是否一定是x,我个人不太确定,但是找到了一个课件中给出了答案:

牛顿法及其收敛性课件

结论是对于单根,|xi - x|平方收敛,但对于有重根的情况只是线性收敛。

如果知道是m重根,则可以改进公式为:

三,牛顿下山法

每取一个新值之前学习率设为1,每次取到新值之后,判断新的函数值是否更接近0,如果不是则降低学习率直到新的函数值更接近0。

在一定程度上降低对于初始值的范围要求。

double newton(double x)
{double eps = 0.000001;int times = 100;double learningRate = 1;while (times--) {double x2 = x - f(x) / df(x)*learningRate;cout << x2 << "  ";if (abs(x - x2) < eps)return x2;if (abs(f(x2)) < abs(f(x))) {x = x2, learningRate = 1;} else {learningRate /= 2;}}return 0;
}

四,割线法

在曲线上取AB两点,求切线AB和x轴的交点C,让BC取代AB进入下一轮迭代,直到两点间距达到精度要求。

收敛定理:

五,抛物线法

切线法(牛顿法)、割线法、抛物线法相关推荐

  1. matlab 求极小值 一维优化,MATLABoptimization

    MATLABoptimization 所属分类:matlab例程 开发工具:matlab 文件大小:38KB 下载次数:4146 上传日期:2010-01-06 22:50:12 上 传 者:百位过 ...

  2. 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法

    感谢于建民的投稿,转载请注明出处:数盟社区 机器学习的一个重要组成部分是如何寻找最优参数解.本文就常见寻优方法进行总结,并给出简单python2.7实现,可能文章有点长,大家耐心些. 寻找最优参数解, ...

  3. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码

    牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...

  4. 求解非线性方程f (x)= 0的MATLAB数值法指令介绍(solve、fzero的方法与实例)

    一.符号方程求解 在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:        solve(s)(求解符号表达式s的代数方程,求解变量为默认变量,当方程右端为0 ...

  5. matlab解决无约束优化问题

    无约束优化问题 要用到的数学知识: 1.向量范数与矩阵范数 2.多元函数梯度与Hessian阵 3.凸集与凸函数 特别要提示的是:如果该函数为凸函数,那么它有且仅有一个最优点,如果它的值不在无穷处,我 ...

  6. 《高等数学》 第七版 同济大学

    <高等数学> 第七版 同济大学 上册 第一章 函数与极限 第一节 映射与函数 一 映射 映射概念 法则 像 原像 定义域 值域 构成映射的三要素 满射[映射] 单射 双射[一一映射] 逆映 ...

  7. MATLAB求解非线性方程组的五种方法

    MATLAB求解非线性方程组的五种方法 求解线性方程分为两种方法–二分法和迭代法 常见的方法一共有5种 二分法 迭代法 牛顿法 割线法 拟牛顿法 Halley法 使用条件 二分法需要知道两个自变量,分 ...

  8. 参数寻优问题详细解析

    参数寻优 参数寻优背景 参数寻优问题随处可见,举几个例子.  1. 小明假期结束回校,可以坐火车,可以坐汽车,可以坐飞机,还可以走着,小明从哪条路去学校更好呢?  2. 简单的数学,一元二次方程求根. ...

  9. matlab实现二分法、牛顿法与割线法

    matlab实现二分法.牛顿法与割线法求方程的解 准备工作 二分法 二分法的matlab代码 二分法运行结果 牛顿法 牛顿法的matlab代码 牛顿法结果 割线法 割线法的matlab代码 割线法结果 ...

  10. 用matlab求不动点迭代,matlab实现不动点迭代、牛顿法、割线法

    不动点迭代 function xc = fpi( g, x0, tol ) x(1) = x0; i = 1; while 1 x(i + 1) = g(x(i)); if(abs(x(i+1) - ...

最新文章

  1. 如何运营一个合法的经营性网站?办理经营性ICP证!
  2. 一友人昨夜接到电话,发生何事
  3. postgis数据库优化_PostgreSQL批量导入性能优化
  4. 一定要多角度看事物 | 今日最佳
  5. 第二章 Qt Widgets项目的创建、运行和发布的过程
  6. 轻拢慢捻,微服务熔断大总管
  7. ZZULIOJ 1107: 回文数猜想(函数专题)
  8. RecognizerIntent(语音识别)
  9. 身份证过期了银行卡还能用吗?
  10. pytorch.max()的详细解释
  11. CURL命令模拟Http Get/Post以及带cookies调用接口
  12. css绘制卡券优惠券_如何使用css创建一个优惠券
  13. 高效工作节省时间的一些小技巧
  14. MODELSIM报错合集
  15. 序列化(serialization)。
  16. 什么是白箱测试、黑箱测试、回归测试?
  17. 【WAF技巧拓展】————4、web应用防火墙逃逸技术(一)
  18. 第1章 Kotlin是什么
  19. 【Java泛型】泛型方法
  20. 学习Python的建议

热门文章

  1. win10环境搭建vue开发环境
  2. html是什么意思?
  3. oracle收款凭证做错月份,上个月的银行凭证做错了怎么办
  4. matlab将水印图像嵌入图像,改进的图像自嵌入水印算法及其MATLAB实现
  5. AtCoder Beginner Contest 248 E - K-colinear Line「计算几何判三点共线」
  6. 什么是测试场景标准库?
  7. lowB三人组---冒泡排序原理和实现
  8. 输入平方尺转换为平方米 计算机,如何用电脑打出平方?平方米符号输入步骤教程...
  9. MEION:QA-MSK调制问题
  10. 大数据--论文读后感