【数值分析】非线性方程求根,牛顿法,牛顿下山法,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
相关推荐
feifeigo1233 天前
matlab画图工具
开发语言·matlab
Gofarlic_oms13 天前
避免Kisssoft高级分析模块过度采购的科学评估方法
大数据·linux·运维·人工智能·matlab
rit84324993 天前
全变分正则化图像去噪的MATLAB实现
开发语言·matlab
Evand J3 天前
通过matlab实现机器学习的小项目示例(鸢尾花分类)
机器学习·支持向量机·matlab
bu_shuo3 天前
MATLAB命令行窗口中的字体放大操作
matlab·命令行
micro_xx3 天前
Matlab 有限元分析三维悬臂梁变形
前端·数据库·matlab
Matlab程序设计与单片机3 天前
【变压器故障诊断分类与预测(DGA原始数据)】基于标准Elman神经网络
matlab·elman神经网络·变压器故障诊断与分类预测
Evand J3 天前
【课题推荐】深度学习驱动的交通流量预测系统(基于LSTM的交通流量预测系统),MATLAB实现
人工智能·深度学习·matlab·课题简介
晞子的技术札记4 天前
单相Heric并网逆变器工作原理及MATLAB仿真测试
开发语言·matlab
Matlab程序设计与单片机4 天前
【变压器故障诊断分类与预测(三比值法)】基于标准GRNN神经网络
matlab·grnn神经网络·变压器故障诊断与分类·三比值法