开头

重点
本文对于牛顿法求零点和求极值点进行简单的公式推导,并使用matlab实现算法,同时做两道简单习题。


又是艰难的一天呢。
今天用matlab写牛顿法,竟然又搞了好几个小时,我真的是有点绝望。唉,我太难了,好在最后解决了我脑袋中的bug.我竟然是个学数学的垃圾。。。

好像有点无厘头。。。
改一下子,好像应该写个摘要。

正文

原理

对于给定的函数 f ( x ) f(x) f(x),我们将其在 x 0 x_0 x0​泰勒展开(严谨的人应该注意 f ( x ) f(x) f(x)需满足泰勒展开的条件),有如下结果:
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) 1 ! ( x − x 0 ) + . . . + f ( n ) ( x 0 ) n ! ( x − x 0 ) n + o ( x n ) f(x)=f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+o(x^n) f(x)=f(x0​)+1!f′(x0​)​(x−x0​)+...+n!f(n)(x0​)​(x−x0​)n+o(xn)
令 f ( x ) = 0 f(x)=0 f(x)=0,则有:
f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = 0 f(x_0)+f'(x_0)(x-x_0)=0 f(x0​)+f′(x0​)(x−x0​)=0
x = x 0 − f ( x 0 ) f ′ ( x 0 ) x=x_0-\frac{f(x_0)}{f'(x_0)} x=x0​−f′(x0​)f(x0​)​
故在求函数零点时,有如下迭代公式:
x i + 1 = x i − f ( x i ) f ′ ( x i ) x_{i+1}=x_i-\frac{f(x_i)}{f'(x_i)} xi+1​=xi​−f′(xi​)f(xi​)​


当我们要求函数的极值点时,我们令 f ′ ( x ) = 0 f'(x)=0 f′(x)=0,对于泰勒展开式有如下结果:
0 = f ′ ( x 0 ) + f ′ ′ ( x 0 ) ( x − x 0 ) 0=f'(x_0)+f''(x_0)(x-x_0) 0=f′(x0​)+f′′(x0​)(x−x0​)
x = x 0 − f ′ ( x 0 ) f ′ ′ ( x 0 ) x=x_0-\frac{f'(x_0)}{f''(x_0)} x=x0​−f′′(x0​)f′(x0​)​
故求函数的极值点时,我们有下面的迭代公式:
x i + 1 = x i − f ′ ( x i ) f ′ ′ ( x i ) x_{i+1}=x_i-\frac{f'(x_i)}{f''(x_i)} xi+1​=xi​−f′′(xi​)f′(xi​)​
原理说完了,现在我们就开始进行最为有趣的实践环节喽。不能总是纸上谈兵嘛,数学总要用起来才能真正体现出他的价值。

应用

题目1.求出函数 y = ( x − 3 ) 3 y=(x-3)^3 y=(x−3)3与 x x x轴的交点,并在图像上标注出来。

题目貌似有点简单,但是我们最重要的是对方法的掌握。
代码如下:
首先是牛顿法求零点(与 x x x轴交点)的函数。

function res=findzeroNt(f,var,x0,e,max)
df=diff(f);
for i=1:maxx1=x0-subs(f,var,x0)/subs(df,var,x0);if abs(x1-x0)<ebreakendx0=x1;
end
res=double(x0);

然后是我们的主函数。

%
clc,clear
syms x;%定义符号
f=(x-3)^3;%符号函数的定义
ezplot(f);%画出符号函数的图像
hold on
x0=4;%起始点
e=0.1;%误差范围
res=findzeroNt(f,x,x0,e,100)%求解
plot(res,subs(f,x,res),'r*')%标注求得的点
%axis equal
axis([-5,5,-10,10])%设置横纵坐标范围

最后画出图像如下:
----
题目2.求出函数 y = e − x + x 2 y=e^{-x}+x^2 y=e−x+x2的极小值点。
求极值点的matlab代码如下:

function [min]=Newton(x0,f,sigma,var)
%x0表示起始点
%f为函数
%sigma表示误差范围
%var表示函数变量名
wucha=1;
n=0;
diff(f)
while wucha>sigmaif subs(diff(f),var,x0)==0breakendif n>20breakendx1=x0-subs(diff(f),var,x0)/subs(diff(f,2),var,x0);x1=double(x1);wucha=abs(x1-x0);x0=x1;n=n+1;
end
min=x0;

然后是主函数代码:

clc,clear
syms x
f=exp(-x)+x^2;%函数表达式ezplot(f)
hold on
res=Newton(0,f,0.001,x)
plot(res,subs(f,x,res),'r*')

图像如下:

反思

牛顿迭代法虽然可以解决一些问题,但是对于有些函数效果不太理想,还有待进一步改进。待我好好研究。。。

牛顿法原理(matlab实现,求零点,求极值)相关推荐

  1. matlab中精确求零点,matlab求零点

    数值计算方法第四章 计算函数零点和极值点的迭代法 本章讨论非线性方程(组)的求解问题 2/80 4.1 不动点迭代法及其收敛性 1.不动点设非线性方程组 f(x) =...... matlab求解零状 ...

  2. matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值

    MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1  线性方程组求解 7.2  非线性方程数值求解 7.3  常微分方程初值问题的数值解法 7. ...

  3. matlab求梯度的原理,matlab 梯度计算原理

    转自 http://blog.csdn.net/xiaojidan2011/article/details/7658366 [plain] view plain copy clc; x=[8, 9,  ...

  4. 牛顿法及牛顿下山法求零点

    牛顿法 difffun该函数的导函数 a在a附近求零点 ep容忍误差 k迭代次数 function [x_star,k]=MyNewton(fun,difffun,a,ep)k=1 x_k=a f_x ...

  5. matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)

    利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...

  6. 牛顿法求零点、极值点

    函数零点 牛顿法求零点的迭代公式: x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{ ...

  7. matlab 求单/多元函数极值

    matlab 求单/多元函数极值 单元函数极值: 平时如果手算的话,就会先求导数,再求驻点,最终代值算出极值,如果用matlab代码求的话,就可以减少很多不必要的计算. fun=inline('0.5 ...

  8. 多元函数的极值matlab,利用MATLAB求多元函数的极值(2)

    利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...

  9. 【数学与算法】牛顿法的两种应用:求根和最优化

    原文链接:点击 平时总看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明.在我看来,牛顿法至少有两个应用方向,1.求方程的根,2.最优化.牛 ...

最新文章

  1. windows系统下node、npm的安装和卸载
  2. linux企业常用命令必之必会二
  3. python调用百度地图画轨迹图_[python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和......
  4. scrapy 中不同页面的拼接_scrapy官方文档提供的常见使用问题
  5. 【竞赛相关】Kaggle知识点:入门到进阶的10个问题
  6. 从 +new Date 说起,Javascript的一元操作符
  7. Java Hashtable rehash()方法与示例
  8. Tomcat为Cookie设置HttpOnly属性
  9. librosa.stft librosa.core.stft
  10. IP网络摄像机安装注意事项
  11. 易宝支付[钱麦](附代码)
  12. jit和jitx区别_JIT的核心思想是什么?
  13. 盛邦安全网站监控预警平台化繁为简 ——网站安全从管理向治理的迁移
  14. C语言随机函数为什么rand()每次产生的随机数都一样
  15. STM32白话文教程(三)内置按键模块、外接按键检测 三句话让你玩明白按键 水银倾斜模块
  16. 局部放电相位分布 3d matlab,基于局部放电信号特征的诊断图谱相位开窗参数调整方法与流程...
  17. 20230210组会总结
  18. hill-climbing algorithm 爬山算法简介
  19. DAVID富集分析详细步骤(啰嗦版)
  20. MyBatis超详细执行流程图

热门文章

  1. vue移动端项目日历组件,月周切换,点击进入上/下一个月
  2. 对SD卡,EMMC容量的检查
  3. html拉幕flash,FLASH制作开场拉幕动画特效
  4. 鱼鹰M2--可垂直起降的双发固定翼无人机
  5. “我月薪3千月入5万”:不是你不会赚钱,而是你赚钱的方式有问题
  6. 基于Andriod的智慧校园卡系统的设计与实现
  7. 离线数仓模型构建的简单见解
  8. 网维团队参加BB10移动应用开发大赛颁奖典礼
  9. 故宫养心殿文物特展在沈阳展出
  10. 基于XC7K325T的FMC接口万兆光纤网络验证卡