说起牛顿下山法,首先要提牛顿法,牛顿法是求解非线性方程的一个重要方法,具体可以点击牛顿法;虽然牛顿法作为一个二阶的迭代收敛方法,但是其对于函数和初始点的要求都比较高,而牛顿下山法则是有效降低这些要求的一种技巧。

牛顿下山法的迭代公式如下

xk+1(λ)=xk−λf(xk)f(xk)′x_{k+1}(\lambda)=x_k-\lambda\frac{f(x_k)}{f(x_k)^\prime}xk+1​(λ)=xk​−λf(xk​)′f(xk​)​
其中λ=max(2−t:∣f(xk+1(2−t))∣&lt;∣f(xk)∣,t=0,1,2,...)\lambda=max(2^{-t}:\left|f(x_{k+1}(2^{-t}))\right|&lt;\left|f(x_k)\right|,t=0,1,2,...)λ=max(2−t:∣f(xk+1​(2−t))∣<∣f(xk​)∣,t=0,1,2,...)
即每步会修正牛顿迭代法中间的步长,使得每次迭代都保证距离真解更近。

matlab 代码如下

function y=f(fun,num)
x=num;
y=eval(fun);  %先定义一个函数,可以表达所有的数学函数,fun为字符串,表示函数function [x,k]=newton(x0,fun1,fun2,error) %fun1是原函数,fun2是导函数,error是收敛误差,x0是迭代初始点
x=x0;
y=f(fun1,x);
k=1;           %标记迭代了多少次
while abs(y)>errord=1;x2=x-d*y/f(fun2,x);while abs(f(fun1,x2))>abs(f(fun1,x))d=d/2;x2=x-d*y/f(fun2,x);endx=x2;y=f(fun1,x);k=k+1;
end

例如解如下方程
y=sin10x+2cosx−x−3=0y=sin10x+2cosx-x-3=0y=sin10x+2cosx−x−3=0

可知在[-3,0]有解,调用函数如下

[x,y]=newton(-1,'sin(10*x)+2*cos(x)-x-3','10*cos(10*x)-2*sin(x)-1',1e-4)

x =
-1.0773
y =
6

可见,迭代了6次,就收敛到1e-4以下了 ,但是该方程不止一个解,与初始点的选取有关

matlab实现牛顿下山法相关推荐

  1. MATLAB之牛顿下山法

    MATLAB之牛顿下山法 算法原理 matlab程序 算法原理 上一篇博客,我介绍了牛顿法迭代法,接下来我就们接着讲解一下什么是牛顿下山法. 一.迭代公式 在牛顿迭代过程中,若满足单调性|f(x(k+ ...

  2. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab

    非线性方程的数值解法牛顿下山法matlab 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 130******** ● 题目: 用下列方法求0133=--=x x f(x)在 ...

  3. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab.docx

    非线性方程的数值解法牛顿下山法matlab.docx 1 非线性方程的数值解法 --计算物理实验作业九 陈万 物理学2013级 13020011006  题目: 用下列方法求 在 附近的根.根的准确 ...

  4. matlab实现牛顿下山法(下山过程)

    clear;clc all float syms x f = (x^3)/3-x; e=10; i=1; a(1)=-0.99; fplot(f); grid on hold on while abs ...

  5. 非线性方程的数值解法:牛顿法及牛顿下山法(含Matlab程序)

    牛顿法及牛顿下山法 简介:牛顿迭代法是求解单变量非线性方程f(x)=0中最实用的方法,该方法在单根附近二阶收敛.但应用时要选用较好的初值x0近似才能保证迭代收敛.为克服这一缺点,可使用牛顿下山法.下面 ...

  6. matlab 牛顿法 初值,非线性方程的数值解法:牛顿法及牛顿下山法(含Matlab程序)...

    牛顿法及牛顿下山法 简介:牛顿迭代法是求解单变量非线性方程f(x)=0中最实用的方法,该方法在单根附近二阶收敛.但应用时要选用较好的初值x0近似才能保证迭代收敛.为克服这一缺点,可使用牛顿下山法.下面 ...

  7. Matlab数值分析编程:牛顿下山法解方程

    %通用代码 fun=inline('x^0.5-x^3+2','x');%手动输入函数表达式和自变量 dfun=inline('0.5*x^(-0.5)-3*x^2','x');%手动输入函数一阶导数 ...

  8. 5 matlab详解牛顿下山法求解复杂函数代数方程和超越方程

    5.1 题目 5.2 问题背景 在工程和科学技术中,许多问题常归结为求解函数方程: f(x) = 0 如何求方程 f(x) = 0 的根是一个古老的数学问题,5 次以上的代数方程和超越方程一般没有求根 ...

  9. Matlab学习手记——非线性方程组求解:牛顿下山法

    功能:牛顿下山法求解非线性方程组. 牛顿下山法 function [x, n] = NonLinearEquations_NewtonDown(x0, err) %{ 函数功能:牛顿下山法求解非线性方 ...

最新文章

  1. Docker网络解决方案-Flannel部署记录
  2. [转载]windows内存优化 没你想像那么美
  3. oracle dba_seg,Oracle DBA 应知应会 -- PGA自动管理
  4. 使用Ant将windows下开发的Struts2应用直接部署到Linux上
  5. python random库下载_python基础 — random库
  6. [无处悲伤]年华世事两迷离
  7. 使用Eclipse构建Maven项目 (step-by-step)
  8. linux文件软链接与硬链接
  9. 算法当道!为什么人类和人工智能越来越像?
  10. 购物车中 商品的选中状态之后的一些业务逻辑操作
  11. uban系统如何安装java_Ubuntu系统下安装Java并配置环境
  12. mac XAMPP环境下, 使用php函数mkdir()添加新目录(文件)报错,报错信息:permission denied;...
  13. 信息熵、互信息、KL散度
  14. PJSIP在windows(xp或者win7)下的编译,编译工具是vs2008,PJSIP版本2.3
  15. libsvm python Linux Ubuntu下编程操作实践
  16. 华为手机屏幕锁屏时间设置_华为手机自动锁屏时间设置
  17. 小宝精灵-智能语音遥控伴侣(套装版)测评-遥控器的语音时代
  18. 本地主机连接阿里云数据库(自建数据库)排雷
  19. [DQN] Playing Atari with Deep Reinforcement Learning
  20. java分页查询参数封装

热门文章

  1. 【html+css】
  2. 水星mac1300r虚拟服务器,水星(MERCURY)MAC1300R路由器用手机怎么设置?
  3. redis aof 文件重写机制
  4. 百度地图绘制运动轨迹技巧
  5. TiFlink: 使用 TiKV 和 Flink 实现强一致的物化视图
  6. 各类国外软件国内下载镜像合集
  7. 知云文献,Endnote简易使用指南
  8. 根据二磁道数据识别是IC卡还是磁条卡
  9. 新生儿常见问题>奶癣
  10. git代码库pull报错:error: Your local changes to the following files would be overwritten by merge