zoukankan      html  css  js  c++  java
  • (一)牛顿法与阻尼牛顿法

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

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

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

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

    主函数:

    % 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;

    运行结果:

  • 相关阅读:
    display:inline、block、inline-block的区别
    CSS选择器优先级总结
    bootstarp模板01
    Vue深度学习(6)- 组件
    在Ubuntu下安装mongodb
    Ajax高级应用---Comet
    ubuntu安装
    linux使用
    跨浏览器的CORS
    防止伪造跨站请求
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9031620.html
Copyright © 2011-2022 走看看