梯度算法的matlab程序,基于MATLAB的梯度法源代码
话不多说,直接上干货。这是基于MATLAB的源代码,目标函数我选择了一个二维函数,根据自己需求,更改目标函数,初始迭代点以及收敛精度
第一部分:目标函数 根据自己需求,更改目标函数!!!
function y=ObjFun(x)
%目标函数 根据实际情况修改
%输入参数x[x1,x2,...,xn];
%输出参数y
%二维目标函数
y =60-10*x(1)-4*x(2)+x(1)*x(1)+x(2)*x(2)-x(1)*x(2);
end
第二部分:求解最优步长函数 不需要更改!!!
function a=OptStep(x,S)
%一维搜索,求最优步长
syms b
x=x+b.*S;
y=ObjFun(x);
Y=diff(y); %求导,导数为0的点,即为所求最优步长
a=solve(Y==0);
a=double(a);
end
第三部分:主体程序,根据自己需求,更改函数中的初始迭代点,收敛精度,梯度,梯度的模以及里面的目标函数!!!
function [X,F]=GradientMethod
%梯度法,又称为最速下降法
%X是最优解
%F是最优解函数值
%% 第一步:给定初始迭代点x,收敛精度err,k=1
k=1;
x(:,k)=[0;0];
err=0.001;
syms x1 x2
f=60-10*x1-4*x2+x1*x1+x2*x2-x1*x2; %目标函数
%% 第二步:计算梯度和模并取搜索方向
FG=gradient(f,[x1 x2]); %f的梯度
fg=sqrt(FG(1)^2+FG(2)^2); %梯度的模
while(1)
S=-double(subs(FG,[x1,x2],x(:,k)')); %搜索方向
%% 第三步:进行收敛判断
fgvalue=double(subs(fg,[x1,x2],x(:,k)'));
if fgvalue<=err
X=x(:,k);
F=ObjFun(X);
break
else
%% 第四步求最优步长以及求新迭代点
a=OptStep(x(:,k),S);
x(:,k+1)=x(:,k)+a.*S;
k=k+1;
end
end
end
ok,直接在命令窗口上运行 [X,F]=GradientMethod 就ok啦,看我不上传到资源上,索要积分,直接公开代码,点个赞,给个评论呗。
梯度算法的matlab程序,基于MATLAB的梯度法源代码相关推荐
- fdtd算法的matlab程序,基于MATLAB的FDTD算法编程
文章编号 100426410 (2006) 040043204 基于MATLAB 的 FDTD 算法编程 赵 嘉 (广西工学院 计算机工程系, 广西 柳州 545006) 摘 要: 介绍了时域有限差分 ...
- pq分解法matlab程序,基于MATLAB软件的PQ分解法潮流计算
基于MATLAB软件的PQ分解法潮流计算 基于MATLAB软件的P-Q分解法潮流计算 摘要 电力系统潮流计算是研究电力系统稳态运行情况的一种重要的分析计算,它根据给定的运行条件及系统接线情况确定整个电 ...
- 图像有损压缩matlab程序,基于Matlab的灰度图像DCT与RLE的混合有损压缩
人工智能及识别技术本栏目责任编辑:唐一东第5卷第21期(2009年7月)基于Matlab 的灰度图像DCT 与RLE 的混合有损压缩 朱玲芳,刘任任 (湘潭大学信息工程学院,湖南湘潭411105) 摘 ...
- 对称振子天线matlab程序,基于MATLAB研究对称振子天线的报告
内容介绍 原文档由会员 霜天盈月 发布 基于MATLAB研究对称振子天线的报告 本文共计32页,13162字: 摘要 基于MATLAB研究了对称振子阻抗特性和图形仿真,同时针对对称振子阻抗特性给出了仿 ...
- 圆度计算matlab程序,基于MATLAB的圆度误差数据处理
0 引言 圆度误差是指回转体在同一正截面上实际被测轮廓相对其理想圆的变动量[1].它是衡量圆柱形零件形状精度的重要指标之一,误差的大小将严重影响其工作性能.因此,在设计机器和仪器时根据零件的功能要求须 ...
- 控制系统 丢包 matlab 程序,基于MATLAB的网络控制系统仿真.pdf
基于MATLAB的网络控制系统仿真.pdf 第36卷增刊 福州大学学报(自然科学版) V01.36 Supp. 塑墨生2旦 』竺翌堂垡!:竖塾2坚望堕!呈望立l塑呈!坚型童垄翌!皇2 塞P:趔墨 基于 ...
- am解调matlab程序,基于Matlab的AM调制解调.doc
学号20100602050101 密级 公 开 本科毕业论文 基于Matlab的AM调制解调 及抗噪性能分析 学 院 名 称: 专 业 名 称: 学 生 姓 名: 指 导 教 师: 讲师 二〇一四年五 ...
- 粒子的散射模拟matlab程序,基于Matlab的α粒子的散射实验模拟.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 基于Matlab的α粒子的散射实验模拟.pdf3页 ...
- 太阳电池仿真模块 matlab 程序,基于MATLAB的月球车锂离子电池充放电过程仿真
[实例简介] 基于MATLAB的月球车锂离子电池充放电过程仿真 第三届学术会议论文集 究电量 敢电电滩 negro 向电量 充电系俊 克电电浪 最大放电硅 Raon』 Operatoe 敛电 Cons ...
最新文章
- SAP PP COR1事务里下达工单,保存时报错:No data was found for the input values
- iText in Action 2nd4.2节(Changing the properties of a cell)读书笔记
- 天水市荣膺“2016中国智慧城市创新奖”
- USTC English Club Note20171013(6)
- p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?
- 帮助文档的制作(控制台、eclipse两种方式)
- 常见数据平台架构有哪些
- java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to java.sql.Connection异常问题解决...
- 金融交易学——一个专业交易者…
- 思想茶叶蛋 (Aug 20,2022)| 网传B站hr说用户是loser、互联网之父的救赎和Web3.0
- 日活两亿的快手,如何用AI理解视频、做好分发
- 防火墙和代理服务器之间有什么区别
- Word文档输出为pdf时目录出现“错误!未定义书签!”
- ubuntu 14.04.1 smbd环境搭建
- 图像分割之(四)OpenCV的GrabCut函数使用和源码解读
- 制作hp服务器u盘,制作HP smartstart启动U盘
- 加州大学圣克鲁兹分校计算机科学专业,加州大学圣克鲁兹分校排名
- 怎么快速搜索linux的日志,如何快速查看Linux日志?
- 札记-20190531
- gateway资源详解
热门文章
- spring学习(47):bean的作用域
- STM32F407控制AD7606 采用HAL库的TIM和SPI
- [GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)
- java为何重复调用方法_通过反射调用Java中的getter:重复调用它的最快方法是什么(在性能和可伸缩性方面)?...
- 2019.7.29学习整理python
- 【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】
- tf.name_scope tf.variable_scope学习
- (理论)数据库建模三步骤:概念模型-逻辑模型-物理模型
- java学习之(内部类)
- 单片机的 FIFO循环队列实现