数值优化——牛顿迭代法求解函数零点
牛顿迭代法求解步骤
- 一. 问题导入
- 二. 算法原理
- C++代码实践
- 三. 扩展——求函数的极值点
一. 问题导入
已知lnx+x^2 =0 在(0,1)范围内有解,用数值方法求解, 精度0.0001
二. 算法原理
首先,f(x) 的值近似于其泰勒展开式:
如果只考虑前两项,我们就能得到一个近似等式:
f(x)=f(x0)+f′(x0)(x−x0)f(x) = f(x_{0}) + f^{'}(x_{0})(x - x_{0}) f(x)=f(x0)+f′(x0)(x−x0)
代入f(x) = 0,则有:
f(x0)+f′(x0)(x−x0)=0f(x_{0}) + f^{'}(x_{0})(x - x_{0}) = 0 f(x0)+f′(x0)(x−x0)=0
x=x0−f(x0)f′(x0)x = x_{0} - \frac{f(x_{0})}{f^{'}(x_{0})} x=x0−f′(x0)f(x0)
故在求函数零点时,有如下迭代公式:
xi+1=xi−f(xi)f′(xi+1)x_{i+1} = x_{i} - \frac{f(x_{i})}{f^{'}(x_{i+1})} xi+1=xi−f′(xi+1)f(xi)
C++代码实践
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;// 已知lnx+x^2 =0 在(0,1)范围内有解,用数值方法求解, 精度0.0001
// 1
// fx = lnx + x^2
// fx’ = (1 / x) + 2 * x
// x(n+1) = x(n) - f(x)/ f(x)'double newton_Solve(double x) {double x0 = x;double x1 = x0 - (log(x0) + pow(x0, 2)) / ((1 / x0) + 2 * x0);int max_iter = 1000;int iter = 0;while (iter < max_iter && abs(x0 - x1) > 1e-4) {x0 = x1;x1 = x0 - (log(x0) + pow(x0, 2)) / ((1 / x0) + 2 * x0);iter += 1;}return x1;
}int main() {double val = newton_Solve(0.5);cout << val;return 0;}
三. 扩展——求函数的极值点
代入f’(x) = 0,则有:
f′(x0)+f′′(x0)(x−x0)=0f^{'}(x_{0}) + f^{''}(x_{0})(x - x_{0}) = 0 f′(x0)+f′′(x0)(x−x0)=0
x=x0−f′(x0)f′′(x0)x = x_{0} - \frac{f^{'}(x_{0})}{f^{''}(x_{0})} x=x0−f′′(x0)f′(x0)
故求函数的极值点时,我们有以下的迭代公式:
xi+1=xi−f′(xi)f′′(xi)x_{i+1} = x_{i} - \frac{f^{'}(x_{i})}{f^{''}(x_{i})} xi+1=xi−f′′(xi)f′(xi)
数值优化——牛顿迭代法求解函数零点相关推荐
- mysql 立方根函数_Java实现牛顿迭代法求解平方根、立方根
一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ...
- c语言牛顿迭代法求解非线性方程组,利用牛顿迭代法求解非线性方程组
最近一个哥们,是用牛顿迭代法求解一个四变量方程组的最优解问题,从网上找了代码去改进,但是总会有点不如意的地方,迭代的次数过多,但是却没有提高精度,真是 最近一个哥们,是用牛顿迭代法求解一个四变量方程组 ...
- 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组
<matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...
- python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf
matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...
- 3.牛顿迭代法求解方程的根
牛顿迭代法求解方程的根 引题:用牛顿迭代法求下列方程在值等于x附近的根: 2 x 3 − 4 x 2 + 3 x − 6 = 0 2x^3-4x^2+3x-6=0 2x3−4x2+3x−6=0 输入: ...
- matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf
资源描述 matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x ...
- 斐波那契(Fibonacci)迭代法求解函数极值(附代码)
目录 Fibonacci数列: 迭代公式: 算法步骤: 例题 C++代码: Fibonacci数列又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例 ...
- MATLAB编程求解函数零点
MATLAB 中有很多函数可以帮助你求解函数零点.其中常用的有 fsolve 函数. 使用方法如下: symsx f = x^2 - 3; x0 = 1; x = fsolve(f, x0) 上面的代 ...
- 分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根
编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代区间 ...
- 二分法和简单迭代法的优缺点_二分法和牛顿迭代法求解方程的比较.doc
您所在位置:网站首页 > 海量文档  > 高等教育 > 理学 二分法和牛顿迭代法求解方程的比较.doc5页 本文档一共 ...
最新文章
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
- UNUSED参数,这个宏,很秀
- 信息奥赛一本通(1100:金币)
- canvas绘制精细走动时钟
- 转hdmi_即插即用轻松双屏,毕亚兹 VGA转HDMI转换器评测
- 计算机一级笔试2012,2012计算机一级笔试模拟试卷及答案
- 如何建立大数据营销体系
- 【洛谷 P3384】树链剖分【详解树链剖分】
- 【转载】一些重要的java知识点:JVM内存模型和结构
- 基于Java的企业新闻管理系统的设计与实现
- 记录一次Spring提供的定时任务
- Drupal9.1.8通过phpStudy安装后除首页其他页面均404处理
- dp:股票系列I II III IV 含冷冻期 含手续费
- 云计算服务器和vps,云服务器和vps差别
- 键盘输入字符串 数字转换为 * 英文字母大写转小写 小写转大写
- 使用js删除表格中的一行的一个小练习
- oracle中exp中query,exp中query参数使用
- 十进制的转换与任意进制的互转
- 分享一款非常好用的Fatkun图片批量下载工具
- javascript-js实现多线程