• (一)牛顿法与阻尼牛顿法


    求解非线性优化问题的有效手段

    牛顿法:优点:收敛速度快      缺点:定步长迭代,有时会使函数值上升。计算量大,要求函数必须有连续的一、二阶偏导数,海森矩阵必须正定

    拟牛顿法:在牛顿法的基础上加入了寻求最优步长因子

     示例代码:求解目标函数的局部最小值

    主函数:

    % Newton法求解目标函数的局部最小值
    % Meringue
    % 2018/5/13
    % ---------------------------
    clc;
    clear;
    
    % 迭代参数
    x0 = -10; % 初始值
    err0 = inf; % 误差初始设为inf
    iter = 0;% 迭代次数
    errMax = 1e-3; % 最大容许误差
    iterMax = 100; % 最大迭代次数
    
    % 迭代过程
    x(iter+1) = x0;
    while err0>errMax 
        % 迭代终止条件1:达到最大迭代次数
        if iter == iterMax
            disp('达到最大迭代次数!');
            break;
        end
        % Newton迭代过程
        iter = iter+1;
        [~,dy,d2y] = func1(x(iter));
        x(iter+1) = x(iter)-dy/d2y;
        % 迭代终止条件2:找到满足精度要求的解
        if abs(x(iter+1)-x(iter))<errMax
            disp('找到满足精度要求的解!')
            disp(['x = ',num2str(x(iter+1))]);
            disp(['迭代次数为',num2str(iter-1)]);
            break;
        end
    end
    
    % 迭代结果展示
    plot(x)
    xlabel('t');ylabel('x')

    目标函数:

    %目标函数
    function [y,dy,d2y] =  func1(x)
    % y = x.^2-2
    y = x.^4-2*x^2+1;
    dy = 4*x^3-4*x;
    d2y = 12*x^2-4;

    运行结果:

  • 相关阅读:
    Linux任务调度
    用户管理——用户和用户组
    Linux实用指令
    spring模拟ioc
    浅谈log4j-3-不同输出样式
    浅谈log4j-2
    浅谈log4j
    windows下安装kibana
    【PHP】 解决报错:Error: php71w-common conflicts with php-common-5.4.16-43.el7_4.x86_64
    mysql 8.0设置日期为0000-00-00 00:00:00时报错
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9031620.html
Copyright © 2020-2023  润新知