切线法(牛顿法)、割线法、抛物线法
目录
一,牛顿法
二,牛顿法的局限性
三,牛顿下山法
四,割线法
五,抛物线法
一,牛顿法
牛顿法,也叫牛顿迭代法、切线法,是一种迭代求解函数零点的方法。
原理:
令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进入下一轮迭代,直到两点间距达到精度要求。
收敛定理:
五,抛物线法
切线法(牛顿法)、割线法、抛物线法相关推荐
- matlab 求极小值 一维优化,MATLABoptimization
MATLABoptimization 所属分类:matlab例程 开发工具:matlab 文件大小:38KB 下载次数:4146 上传日期:2010-01-06 22:50:12 上 传 者:百位过 ...
- 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法
感谢于建民的投稿,转载请注明出处:数盟社区 机器学习的一个重要组成部分是如何寻找最优参数解.本文就常见寻优方法进行总结,并给出简单python2.7实现,可能文章有点长,大家耐心些. 寻找最优参数解, ...
- 艾特肯法方程解matlab程序,牛顿迭代法matlab代码
牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...
- 求解非线性方程f (x)= 0的MATLAB数值法指令介绍(solve、fzero的方法与实例)
一.符号方程求解 在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为: solve(s)(求解符号表达式s的代数方程,求解变量为默认变量,当方程右端为0 ...
- matlab解决无约束优化问题
无约束优化问题 要用到的数学知识: 1.向量范数与矩阵范数 2.多元函数梯度与Hessian阵 3.凸集与凸函数 特别要提示的是:如果该函数为凸函数,那么它有且仅有一个最优点,如果它的值不在无穷处,我 ...
- 《高等数学》 第七版 同济大学
<高等数学> 第七版 同济大学 上册 第一章 函数与极限 第一节 映射与函数 一 映射 映射概念 法则 像 原像 定义域 值域 构成映射的三要素 满射[映射] 单射 双射[一一映射] 逆映 ...
- MATLAB求解非线性方程组的五种方法
MATLAB求解非线性方程组的五种方法 求解线性方程分为两种方法–二分法和迭代法 常见的方法一共有5种 二分法 迭代法 牛顿法 割线法 拟牛顿法 Halley法 使用条件 二分法需要知道两个自变量,分 ...
- 参数寻优问题详细解析
参数寻优 参数寻优背景 参数寻优问题随处可见,举几个例子. 1. 小明假期结束回校,可以坐火车,可以坐汽车,可以坐飞机,还可以走着,小明从哪条路去学校更好呢? 2. 简单的数学,一元二次方程求根. ...
- matlab实现二分法、牛顿法与割线法
matlab实现二分法.牛顿法与割线法求方程的解 准备工作 二分法 二分法的matlab代码 二分法运行结果 牛顿法 牛顿法的matlab代码 牛顿法结果 割线法 割线法的matlab代码 割线法结果 ...
- 用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) - ...
最新文章
- 如何运营一个合法的经营性网站?办理经营性ICP证!
- 一友人昨夜接到电话,发生何事
- postgis数据库优化_PostgreSQL批量导入性能优化
- 一定要多角度看事物 | 今日最佳
- 第二章 Qt Widgets项目的创建、运行和发布的过程
- 轻拢慢捻,微服务熔断大总管
- ZZULIOJ 1107: 回文数猜想(函数专题)
- RecognizerIntent(语音识别)
- 身份证过期了银行卡还能用吗?
- pytorch.max()的详细解释
- CURL命令模拟Http Get/Post以及带cookies调用接口
- css绘制卡券优惠券_如何使用css创建一个优惠券
- 高效工作节省时间的一些小技巧
- MODELSIM报错合集
- 序列化(serialization)。
- 什么是白箱测试、黑箱测试、回归测试?
- 【WAF技巧拓展】————4、web应用防火墙逃逸技术(一)
- 第1章 Kotlin是什么
- 【Java泛型】泛型方法
- 学习Python的建议
热门文章
- win10环境搭建vue开发环境
- html是什么意思?
- oracle收款凭证做错月份,上个月的银行凭证做错了怎么办
- matlab将水印图像嵌入图像,改进的图像自嵌入水印算法及其MATLAB实现
- AtCoder Beginner Contest 248 E - K-colinear Line「计算几何判三点共线」
- 什么是测试场景标准库?
- lowB三人组---冒泡排序原理和实现
- 输入平方尺转换为平方米 计算机,如何用电脑打出平方?平方米符号输入步骤教程...
- MEION:QA-MSK调制问题
- 大数据--论文读后感