【数值分析】非线性方程求根,牛顿法,牛顿下山法,matlab实现

4. 牛顿法

收敛时牛顿法的收敛速度是二阶的,不低于二阶。如果函数有重根,牛顿法一般不是二阶收敛的。
x k + 1 = x k − f ( x k ) f ′ ( x k ) x_{k+1}=x_k- \frac{f(x_k)}{f'(x_k)} xk+1=xk−f′(xk)f(xk)

matlab实现

matlab 复制代码
%% 牛顿迭代例子
f = @(x) x.^2-2;
g = @(x) 2.*x;
x = newton(f,g,2,1e-7,100)

%% 牛顿迭代
function x = newton(f,g,x_0,eps,max_iter)
    x0 = x_0;
    for i = 1:max_iter
        x = x0 - f(x0)/g(x0)
        if abs(x-x0)<eps
            break
        end
        x0 = x;
    end
end

5. 牛顿下山法

实际上是对每次迭代跳跃步长的修正,试着少条一点距离,看是否在下山。

matlab编程实现

matlab 复制代码
%% 牛顿迭代例子
f = @(x) x.^2+sin(10*x)-1;
g = @(x) 2.*x+10*cos(10*x);
[x,i] = newtonD(f,g,30,1e-16,100)


%% 牛顿下山法
function [x,i] = newtonD(f,g,x_0,eps,max_iter)
    x0 = x_0;
    for i = 1:max_iter
        lbd = 1;
        x = x0 - f(x0)/g(x0)*lbd;
        while abs(f(x))>=abs(f(x0))
            lbd = lbd/2;
            x = x0 - f(x0)/g(x0)*lbd;
        end
        if abs(f(x))<eps
            break
        end
        x0 = x;
    end
end
相关推荐
吃好睡好便好13 小时前
用if…end…语句计算分段函数
开发语言·人工智能·学习·算法·matlab
Matlab程序猿小助手15 小时前
【MATLAB源码-第319期】基于matlab的帝王蝶优化算法(MBO)无人机三维路径规划,输出做短路径图和适应度曲线.
开发语言·算法·matlab
Evand J15 小时前
【MATLAB控制例程】(9)多无人机编队协同控制与三维轨迹规划仿真,附下载链接
开发语言·分布式·matlab·无人机·控制
吃好睡好便好17 小时前
在Matlab中绘制质点三维运动轨迹图
开发语言·学习·matlab·信息可视化
茗创科技18 小时前
脑室周围扩散率(PVeD)专题:一种评估类淋巴系统功能的DTI新方法(附高分文献下载)
深度学习·机器学习·matlab·脑网络
简简单单做算法21 小时前
基于模糊神经网络的一维时间序列预测算法matlab仿真
神经网络·算法·matlab·一维时间序列预测·模糊神经网络
hef2881 天前
利用C 图形界面展示MATLAB算法的高效混合编程实践
windows·算法·matlab
yuan199972 天前
基于MATLAB的梁非线性动力学方程编程实现框架
开发语言·matlab
Deep-w2 天前
【MATLAB】含光伏 - 储能的家庭/工业微电网能量管理仿真研究
开发语言·算法·matlab
努力弹琴的大风天2 天前
如何用AI开发matlab/Simulink工具栏模块,实现相关的功能
开发语言·人工智能·matlab