【数值分析】非线性方程求根,牛顿法,牛顿下山法,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
相关推荐
foundbug9997 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
矢志航天的阿洪9 小时前
用 MATLAB 控制 STK Aviator:从零搭建一个 AWACS 支援作战场景
开发语言·matlab
freexyn10 小时前
Matlab自学笔记七十六:表达式的展开、因式分解、化简、合并同类项
笔记·算法·matlab
wearegogog12311 小时前
基于Q-learning的栅格地图路径规划MATLAB仿真程序
开发语言·算法·matlab
2zcode16 小时前
基于MATLAB多特征融合与SVM的金属表面缺陷检测系统
开发语言·支持向量机·matlab
2zcode16 小时前
基于MATLAB脑电信号的帕金森病抑郁症检测研究
开发语言·matlab·抑郁症·帕金森病
随风飘摇的土木狗16 小时前
【MATLAB第122期】基于MATLAB的SHAP可解释神经网络回归模型APP(插件)
神经网络·matlab·回归·全局·敏感性分析·shap
guygg881 天前
基于遗传算法的双层规划模型求解MATLAB实现
开发语言·matlab
aini_lovee1 天前
多目标粒子群优化(MOPSO)双适应度函数MATLAB实现
人工智能·算法·matlab
yong99901 天前
图像融合与拼接:完整MATLAB工具箱
算法·计算机视觉·matlab