梯度算法的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啦,看我不上传到资源上,索要积分,直接公开代码,点个赞,给个评论呗。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UNP Chapter 22 - 信号驱动I/O

22.1. 概述 信号驱动是指当某个描述字上发生了某个事件时&#xff0c;让内核通知进程。 这里描述的信号驱动不是真正的异步I/O。 第15章描述的非阻塞I/O同样不是异步I/O。在非阻塞I/O中&#xff0c;启动I/O操作后内核并不像真正的异步I/O那样立即返回&#xff0c;它只有在进程非…

break在matlab中的用法,求助这个算法运行的时候说错误: BREAK只能在FOR或WHile使用...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[filenamel,pathname,filterindex]uigetfile(*.*,选择图像,请选择图像)I imread(num2str(filenamel));disp(请选择添加噪声类型);disp(椒盐噪声 --1);disp(高斯噪声 --2);disp(泊松噪声 --3);disp(斑点噪声 --4);Ainput(请输入选项…

matlab双重差分模型,MATLAB中ARMA模型预测差分问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是我MATLAB预测风速的程序&#xff0c;程序不是我自己写的&#xff0c;我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解&#xff0c;我也不知道对不对。程序1Xload(C:\Users\asus\Desktop\1-3.txt); 这是我的历史…

[转]AS语言基础

┏━━━━━━━━━━━━━━━━━━┓ ┃ 第一部分&#xff1a;ActionScript 3 语言基础 ┃ ┗━━━━━━━━━━━━━━━━━━┛ 第2章 ActionScript 3 语言基本元素 2.1.2 数据类型概述 简单数据类型 Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符…

php strpos与strrpos,PHP开发之 strpos stripos strrpos strripos的区别

前言在日常PHP开发中strpos stripos strrpos strripos这四个函数是会经常用到的&#xff0c;但是你又掌握了多少呢&#xff1f;在这里将着中就这4个函数做一个详细的解析。正文stripos — 查找字符串首次出现的位置(不区分大小写),应使用 运算符来测试此函数的返回值&#xff…

jQuery选择元素

1、jQuery包装的CSS选择器 $(" p a.speciaClass") 2、子选择器&#xff08;个人简单的认为&#xff1a;就是在jQuery选择器里面加上了一个">"操作符&#xff0c;再具有一新的特性&#xff09; $("ul#myList>li>a").fadeOut(); 3、…

php能否缓存,PHP缓存实现

PHP缓存实现classCacheExceptionextendsException {}/*** 缓存抽象类*/abstractclassCache_Abstract {/*** 读缓存变量** param string $key 缓存下标* return mixed*/abstractpublicfunctionfetch($key);/*** 缓存变量** param string $key 缓存变量下标* param string $value…

安装SQL SERVER 2008时出现了SQL SERVER 2005 Express Tool Installed 的错误

安装SQL SERVER 2008时出现了SQL SERVER 2005 Express Tool Installed 的错误&#xff0c;这种情况一般出现在系统中已安装SQL Server 2005 的情况&#xff0c;其实不需要去卸载什么&#xff0c;只要在注册表中修改一个值即可。 HKLM\Software\Microsoft\Microsoft SQL Server\…

凤凰网php,凤凰网某应用sql注入漏洞_MySQL

凤凰网某应用sql注入漏洞凤凰新闻手机app的一个api接口过滤不严&#xff0c;存在注入漏洞。注入点&#xff1a;http://api.iapps.ifeng.com/news/upgrade.json?gv4.2.0&proidifengnews&osandroid_19&screen720x1206&publishid2011&zip1&#xff0c;受影响…

Multiple annotations found at this line: ---关于android string.xml %问题

本文来源于&#xff1a;hunter的博客&#xff08;http://my.oschina.net/hunterXue/blog/15107&#xff09; Multiple annotations found at this line: - error: Multiple substitutions specified in non-positional format; did you mean to add the formatted"fals…

南京php基础学习,南京玄武区php培训有哪些(学习PHP的优点有哪些)

南京玄武区php培训有哪些&#xff0c;进行选择南京php培训的时候&#xff0c;肯定要知道php培训的学习周期&#xff0c;php乱码怎么解决&#xff0c;学习PHP的优点有哪些&#xff0c;php的性质有哪些。php培训的学习周期一般都是四到五个月和Java培训周期差不多&#xff0c;不过…

php额拍戏,像这种会演戏的演员,给我焊在剧组365天拍戏可以吗?

最近芭姐疯狂 get 到董子健的演技&#xff0c;每晚换台一边《大江大河 2》一边《流金岁月》交叉着看&#xff0c;太直观了&#xff01;《大江大河》中&#xff0c;董子健饰演的杨巡虽然戏份不及宋运辉多&#xff0c;但在有限的笔墨中&#xff0c;董子健凭借到位的演技&#xff…

照相机滤镜使用,优化解码和滤镜导致的预览卡屏现象

这几天看到亚瑟boy的技术连载&#xff0c;也试着做了下带滤镜特效的照相机&#xff0c;效果也出来了&#xff0c;但是发现添加滤镜特效后的预览窗口卡屏现象很严重&#xff0c;于是自己索性试着尝试修改&#xff0c;在亚瑟和其他网友的代码中基本上都是对于照相机data视频流先进…

oracle带时间查询语句,请教oracle按时间分组查询语句的写法

请教oracle按时间分组查询语句的写法最近由于要做报表&#xff0c;在一张表中有一个字段为date类型&#xff0c;现在想要在一段时间内(比如一年)能够按照时间段分组查询记录总和&#xff0c;比如我要能够查询2007年到2009年间按月份分组记录条数统计&#xff0c;网上提示用 gro…

C语言中extern修饰符的用法

在C语言中&#xff0c;修饰符extern用在变量或者函数的声明前&#xff0c;用来说明“此变量/函数是在别处定义的&#xff0c;要在此处引用”。0. extern修饰变量的声明。举例来说&#xff0c;如果文件a.c需要引用b.c中变量int v&#xff0c;就可以在a.c中声明extern int v&…

oracle linux6 u盘安装,U盘安装RHEL6

1)烧录ISO镜像用软碟通写入硬盘镜像rhel-server-6.5-x86_64-boot.iso&#xff0c;然后将rhel-server-6.2-x86_64-dvd.iso复制到U盘根目录备注&#xff1a;如果是烧录DVD那么就直接烧rhel-server-6.2-x86_64-dvd.iso即可&#xff0c;U盘安装linux不注意此处会发生找不到image错误…

ns2 仿真简介

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台&#xff0c;研究人员使用它可以很容易的进行网络技术的开发&#xff0c;而且发展到今天&#xff0c;它所包含的模块已经非常丰富&#xff0c;几乎涉及到了网络技术的所有方面。所以&#xff0c;NS成了目前学术界广泛使…

oracle 邮件过程,oracle 发邮件 存储过程

CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人p_subject VARCHAR2, -- 邮件标题p_message VARCHAR2 -- 邮件正文)IS--下面四个变量请根据实际邮件服务器进行赋值v_mailhost VARCHAR2(30) : ‘smtp.cheyipai.com‘; --SMTP服务器地址v_u…

获得当前系统信息

1&#xff1a;直接调用函数 str 24 ComName; ; ComNameappl.company().ext();//当前公司ID curUserid();//当前用户iD systemDateget();//当前时间 Time2Str(timenow(),1,2);//时间转换函数 curuserid()//当前用户 2&#xff0c;使用Session对象 session xSession; ; xSessionn…

UNP Chapter 27 - 客户-服务器程序其他设计方法

27.1. 概述 27.13. 小结转载于:https://www.cnblogs.com/s7vens/archive/2012/04/16/2451948.html