牛顿法原理(matlab实现,求零点,求极值)
开头
重点
本文对于牛顿法求零点和求极值点进行简单的公式推导,并使用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实现,求零点,求极值)相关推荐
- matlab中精确求零点,matlab求零点
数值计算方法第四章 计算函数零点和极值点的迭代法 本章讨论非线性方程(组)的求解问题 2/80 4.1 不动点迭代法及其收敛性 1.不动点设非线性方程组 f(x) =...... matlab求解零状 ...
- matlab求函数极值教程,MATLAB程序设计教程(7)—MATLAB解方程与函数极值
MATLAB程序设计教程(7)--MATLAB解方程与函数极值 第7章MATLAB解方程与函数极值 7.1 线性方程组求解 7.2 非线性方程数值求解 7.3 常微分方程初值问题的数值解法 7. ...
- matlab求梯度的原理,matlab 梯度计算原理
转自 http://blog.csdn.net/xiaojidan2011/article/details/7658366 [plain] view plain copy clc; x=[8, 9, ...
- 牛顿法及牛顿下山法求零点
牛顿法 difffun该函数的导函数 a在a附近求零点 ep容忍误差 k迭代次数 function [x_star,k]=MyNewton(fun,difffun,a,ep)k=1 x_k=a f_x ...
- matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...
- 牛顿法求零点、极值点
函数零点 牛顿法求零点的迭代公式: x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{ ...
- matlab 求单/多元函数极值
matlab 求单/多元函数极值 单元函数极值: 平时如果手算的话,就会先求导数,再求驻点,最终代值算出极值,如果用matlab代码求的话,就可以减少很多不必要的计算. fun=inline('0.5 ...
- 多元函数的极值matlab,利用MATLAB求多元函数的极值(2)
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...
- 【数学与算法】牛顿法的两种应用:求根和最优化
原文链接:点击 平时总看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明.在我看来,牛顿法至少有两个应用方向,1.求方程的根,2.最优化.牛 ...
最新文章
- windows系统下node、npm的安装和卸载
- linux企业常用命令必之必会二
- python调用百度地图画轨迹图_[python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和......
- scrapy 中不同页面的拼接_scrapy官方文档提供的常见使用问题
- 【竞赛相关】Kaggle知识点:入门到进阶的10个问题
- 从 +new Date 说起,Javascript的一元操作符
- Java Hashtable rehash()方法与示例
- Tomcat为Cookie设置HttpOnly属性
- librosa.stft librosa.core.stft
- IP网络摄像机安装注意事项
- 易宝支付[钱麦](附代码)
- jit和jitx区别_JIT的核心思想是什么?
- 盛邦安全网站监控预警平台化繁为简 ——网站安全从管理向治理的迁移
- C语言随机函数为什么rand()每次产生的随机数都一样
- STM32白话文教程(三)内置按键模块、外接按键检测 三句话让你玩明白按键 水银倾斜模块
- 局部放电相位分布 3d matlab,基于局部放电信号特征的诊断图谱相位开窗参数调整方法与流程...
- 20230210组会总结
- hill-climbing algorithm 爬山算法简介
- DAVID富集分析详细步骤(啰嗦版)
- MyBatis超详细执行流程图