zoukankan      html  css  js  c++  java
  • 梯度下降法求解函数极大值-Matlab

    目录

    题目

    这里写图片描述

    作答

    本文使用MATLAB作答

    1. 建立函数文件ceshi.m

    function [x1,y1,f_now,z] = ceshi(z1,z2)
    %%%%%%%%%%%%%% 梯度下降法求函数局部极大值@冀瑞静 %%%%%%%%%%%%%%%%%%
    % 函数:f(x,y)=
    % 目的:求局部极大值和对应的极大值点坐标
    % 方法:梯度下降法
    % 理论:
    % 方向导数:偏导数反应的是函数沿坐标轴方向的变化率,但许多物理现象告诉我们,只考虑函数沿坐标轴方向的变化率是不够的,有必要研究函数沿任一指定方向的变化率。
    % 函数f(x,y)在点P0(x0,y0)可微分,那么函数在改点沿任一方向l的方向导数存在,其值为:f'x(x0,y0)*cos(α)+f'y(x0,y0)*cos(β),其中,cos(α),cos(β)是方向l的方向余弦。
    % 梯 度:是与方向导数有关联的另一个概念,梯度是一个向量,表示为:'x(x0,y0)*i+f'y(x0,y0)*j。
    % 关 系:
    % f'x(x0,y0)*cos(α)+f'y(x0,y0)*cos(β)
    % =grad f(x0,y0)*el
    % =|grad f(x0,y0)|*cos(θ),其中el=(cos(α),cos(β))是与方向l同方向的单位向量。
    % 变化率:函数沿某个方向的变化率指的是函数值沿这个方向变化的快慢。
    % θ=0,el与梯度同向,函数增加最快,函数在这个方向的方向导数达到最大值,这个最大值就是梯度的模;
    % θ=π,el与梯度反向,函数减少最快,函数在这个方向的方向导数达到最小值;
    % θ=π/2,el与梯度方向正交,函数变化率为零。
    
    x0 = z1;
    y0 = z2;
    f_now = exp((sin(y0) - 1)^2)*cos(x0) + (x0 - y0)^2 + exp((cos(x0) - 1)^2)*sin(y0);%求解函数的极大值点,先求其函数负值的极小值点
    z=0; %用于记录循环次数
    f_error = 1; %f_error为迭代差值,作为判别标准
    h = 1.0e-8; %步长
    
    while f_error>1.0e-8 %判定标准:1.前后两次的差>1.0e-8(选用);2.迭代次数达到XX次;
    if (x0<-5)||(x0>0)
    break;
    end
    if ((y0<-5)||(y0>0))
    break;
    end
    f_val = f_now;
    x1 = x0 + h * (2*x0 - 2*y0 - exp((sin(y0) - 1)^2)*sin(x0) - 2*exp((cos(x0) - 1)^2)*sin(x0)*sin(y0)*(cos(x0) - 1));
    y1 = y0 + h * (2*y0 - 2*x0 + exp((cos(x0) - 1)^2)*cos(y0) + 2*exp((sin(y0) - 1)^2)*cos(x0)*cos(y0)*(sin(y0) - 1));
    f_now = exp((sin(y1) - 1)^2)*cos(x1) + (x1 - y1)^2 + exp((cos(x1) - 1)^2)*sin(y1) ;
    f_error = f_now-f_val;
    x0 = x1;
    y0 = y1;
    z = z+1;
    end
    
    end
    
    

    2. 这是调用的命令,也可以写在.m文件里

    clear
    clc
    [x1,y1,f_out] = ceshi(-1,-2);
    fprintf('%.3f	',x1,y1,f_out); %f保留小数点后三位

    3. 输出结果

    0.000 -1.585 56.088

    这是截图
    计算结果

    题外话

    第一次发博客,开始涉足计算机视觉领域,欢迎拍砖。

  • 相关阅读:
    [UE4]Image
    [UE4]CheckBox
    [UE4]Button
    [UE4]Border
    [UE4]RichTextBlock
    [UE4]Text Box
    [UE4]字体材质
    [UE4]Retainer Box
    [UE4]Invalidation Box
    [UE4]Dynamic Entry Box
  • 原文地址:https://www.cnblogs.com/jinjidexuetu/p/81069bfd49ffb77720c4ba8ce07c3e28.html
Copyright © 2011-2022 走看看