梯度下降法求解函数极大值-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\t',x1,y1,f_out); %f保留小数点后三位
3. 输出结果
0.000 -1.585 56.088
这是截图
题外话
第一次发博客,开始涉足计算机视觉领域,欢迎拍砖。
梯度下降法求解函数极大值-Matlab的更多相关文章
- 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)
在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...
- OpenACC 梯度下降法求解线性方程的优化
▶ 书上第二章,用一系列步骤优化梯度下降法解线性方程组.才发现 PGI community 编译器不支持 Windows 下的 C++ 编译(有 pgCC 命令但是不支持 .cpp 文件,要专业版才支 ...
- 使用matlab用优化后的梯度下降法求解达最小值时参数
matlab可以用 -Conjugate gradient -BFGS -L-BFGS 等优化后的梯度方法来求解优化问题.当feature过多时,最小二乘计算复杂度过高(O(n**3)),此时 这一些 ...
- tensorflow实现svm多分类 iris 3分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)
# Multi-class (Nonlinear) SVM Example # # This function wll illustrate how to # implement the gaussi ...
- tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)
iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...
- 理解梯度下降法(Gradient Decent)
1. 什么是梯度下降法? 梯度下降法(Gradient Decent)是一种常用的最优化方法,是求解无约束问题最古老也是最常用的方法之一.也被称之为最速下降法.梯度下降法在机器学习中十分常见,多用 ...
- 梯度下降法原理与python实现
梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离 ...
- 梯度下降法(BGD、SGD)、牛顿法、拟牛顿法(DFP、BFGS)、共轭梯度法
一.梯度下降法 梯度:如果函数是一维的变量,则梯度就是导数的方向: 如果是大于一维的,梯度就是在这个点的法向量,并指向数值更高的等值线,这就是为什么求最小值的时候要用负梯度 梯度下降法(Gr ...
- [ch04-02] 用梯度下降法解决线性回归问题
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.2 梯度下降法 有了上一节的最小二乘法做基准,我们这 ...
随机推荐
- excel窗口独立显示/单独显示
天赋异禀的亲,一看就懂!
- 使用Python 统计nginx日志前十ip访问量并以柱状图显示
脚本内容: import matplotlib.pyplot as plt # nginx_file = '10.6.11.91_access.log-2018-12-27' ip = {} #筛选n ...
- Google hack语法
基础语法: 1.语法说明: inurl: 在url地址栏中显示的信息页面 intext: 显示在正文信息中的内容页面 site: 限制显示你某个域名的所有页面 filetype: 搜索文件的后缀或者扩 ...
- Java之JSP和Servlet基础知识
JSP基础 JSP起源 JSP,JavaServer Pager的简称.由SUN倡导并联合其它公司创建. JSP是一门脚本语言 JSP可以嵌入到HTML中 JSP拥有Java语言的所有特性 面向对象. ...
- centos7安装oracle的一些问题
在配置监听的时候尝试了很多次都是不能创建,最后将 /data/oracle/product/11.2.0/db_1/network/admin目录下的listener.ora和tnsname.ora两 ...
- MathExam6378
我的第一个程序 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 15 10 • Estima ...
- Sprint11
进展:基本设置和显示已经完成,然后是可以通过长按事件弹出对话框可以进行停用.修改.取消该事件提醒的实现,通过触发动作跳转到各个部分页面.
- python实现树莓派开机自动发送IP到指定邮箱
#!/usr/bin/python # -*- coding:UTF-8 -*- #测试发送邮件163邮箱发送到qq邮箱 import smtplib from email.mime.text imp ...
- Android笔记-1
1.点击按钮出现小窗口(响应事件) 配置方式: Activity_main.xml文件中:<Button (输入)android: onClick=”test1” /> MainActiv ...
- 推荐一个Markdown数学公式编辑器——Haroopad & Mathjax
要在Markdown里插入数学公式,如果没有好用的的引擎or编辑器,那么只能插入图片了,十分麻烦.这里推荐一个十分强大的数学公式引擎--Mathjax. 配置 有道云笔记目前不支持浏览MathJax公 ...