【数值分析】非线性方程求根,牛顿法,牛顿下山法,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
相关推荐
可编程芯片开发10 小时前
基于CMAC神经网络的PID复合控制器matlab性能仿真
神经网络·matlab·pid·cmac-pid·cmac小脑网络
电力程序小学童12 小时前
【复现】一种基于价格弹性矩阵的居民峰谷分时电价激励策略【需求响应】
matlab·矩阵·需求响应·负荷·峰谷电价
CappuccinoRose14 小时前
MATLAB学习文档(二十二)
学习·算法·matlab
AAIshangyanxiu14 小时前
【案例教程】生态碳汇涡度通量数据质量控制、缺失插补、可视化分析、光敏感性分析、温度敏感性分析、数据风浪区分析
matlab·涡度通量·生态碳汇
yongui478341 天前
基于MATLAB的8QAM调制解调仿真与BER性能分析
开发语言·matlab
电力程序小学童1 天前
【预测】基于CNN-BiLSTM-Attention的光伏预测模型
matlab·预测·光伏预测
机器学习之心1 天前
MATLAB基于加速遗传算法投影寻踪模型的企业可持续发展能力评价研究
matlab·加速遗传算法·投影寻踪模型·企业可持续发展能力评价
Matlab仿真实验室2 天前
基于Matlab实现图像栅格化处理
图像处理·计算机视觉·matlab·图像栅格化处理
jllllyuz2 天前
matlab裂纹检测与延展分析系统
人工智能·计算机视觉·matlab
jghhh012 天前
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
开发语言·算法·matlab