matlab向量函数求梯度,用Matlab计算含有n个自变量的函数的梯度或句柄的使用
本帖最后由 徐小妹 于 2019-8-12 22:26 编辑
后面红色部分是问题,前面是相应的一些背景。
如果自变量个数很少,那可以很简单的带入;但如果自变量个数很多,比如n = 100,就会希望能够有一个程序可以直接计算出导数。因为自己没有找到现成的这种求导函数,所以想尝试写一个。
下面附上自己写的求解100维函数的导数的程序,只是结果是一个100维的符号变量;
那么问题就在于如何把它转化为数值变量,从而可以对任意给定的100维数值向量,都可以带入求解?
1.png (1.76 KB, 下载次数: 21)
2019-8-12 22:26 上传
%%%%%%%%%%%%第一部分,这是在定义上图中的函数,没有问题%%%%%%%%%%%%%
n=100;
for i=1:n
syms(['x',num2str(i)]);
end
s=sym('x',[1,n]); %%%%%%%%%%%%% 构建符号变量x
a = 20; b = 0.2; c = 2*pi;
s1 = 0; s2 = 0;
for i=1:n
s1 = s1+s(i)^2;
s2 = s2+cos(c*s(i));
end
y = -a*exp(-b*sqrt(1/n*s1))-exp(1/n*s2)+a+exp(1); %%%%%%%%%%%%%% y即为图中函数的符号变量形式
%%%%%%%%%%%%%%%下面,编写程序来求解它的导数,也没有问题%%%%%%%%%%%
%%%%%%%%%%%%%%%%% 求导 %%%%%%%%%%%%%%%%%%%%%%%
for i=1:n
syms(['d',num2str(i)]);
end
e=sym('d',[1,n]); %%%%%%%%%%%%%%%%%%定义一个n维符号向量,从而下面可以用来表示前面符号导数对应的符号导数;
for i=1:n
e(i)=diff(y,s(i));
end
%%%%%%%%%%%%%%%%那么e就是函数f的导数对应的符号变量%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%问题在于要怎么把e给转化为数值向量函数,从而可以带入n维自变量x,得到对应导数值呢?下面是自己没能成功的尝试%%%%%%%
%%%%%%%%%%根据搜集到的一些资料,可以用matlabFunction函数将e转化维数值向量函数,或者说一个函数句柄%%%%%%%%%%
f1 = matlabFunction(e);
%%%得到的f1为(为了展示方便,这里取的是n=2):
%%%f1 =
function_handle with value:
@(x1,x2)[pi.*exp(cos(x1.*pi.*2.0).*(1.0./2.0)+cos(x2.*pi.*2.0).*(1.0./2.0)).*sin(x1.*pi.*2.0)+x1.*exp(sqrt(x1.^2.*(1.0./2.0)+x2.^2.*(1.0./2.0)).*(-1.0./5.0)).*1.0./sqrt(x1.^2.*(1.0./2.0)+x2.^2.*(1.0./2.0)).*2.0,pi.*exp(cos(x1.*pi.*2.0).*(1.0./2.0)+cos(x2.*pi.*2.0).*(1.0./2.0)).*sin(x2.*pi.*2.0)+x2.*exp(sqrt(x1.^2.*(1.0./2.0)+x2.^2.*(1.0./2.0)).*(-1.0./5.0)).*1.0./sqrt(x1.^2.*(1.0./2.0)+x2.^2.*(1.0./2.0)).*2.0]
%%%如果求f在[1;2]的梯度值,由命令f(1,2)即可得出;但若是n比较大,比如n=100,那显然就不能这样直接带入。于是就卡死了。。。。。。
matlab向量函数求梯度,用Matlab计算含有n个自变量的函数的梯度或句柄的使用相关推荐
- matlab数组求一阶导数,用matlab求符号函数数组或函数矩阵的导数实例教程
用matlab求符号函数数组或函数矩阵的导数实例教程 在符号矩阵中,矩阵的每个元素都可以存放符号函数,这是对符号函数数组的求到运算是对数组元素逐个进行的.接下来就以实例向大家介绍一下用matlab对符 ...
- matlab怎么求标准化特征向量,matlab特征向量标准化
% S1: S2: S3: S4: AHP 的 matlab 程序实现构造比较矩阵 求特征根和特征向量 求得最大特征根的特征向量 做一致性检验 clear; A=[1 1.2 1.5 1.5; % . ...
- matlab 抛物线法求最小值,抛物线法matlab
A=2;定义A为一个数值t=-2:0.1:2;t定义为-2~2if tr=0;elser=1/2*A*t^2;endplot(t,r)title('function r(t)')%标题xlabel(' ...
- matlab里面求线性方程组,利用matlab求线性方程组.doc
利用matlab求线性方程组.doc MATLAB语言课成论文利用MATLAB求线性方程组姓名郭亚兰学号12010245331专业通信工程班级2010级通信工程一班指导老师汤全武学院物电学院完成日期2 ...
- matlab 复数求模长,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 matlab计算带有复数的函数,最后求复数函数的模,结果里面却有复数标志i,输入自变量,得到的结果确实是实数,不知道怎么回事; 代码如下: syms n2 ...
- matlab 怎么求mape,如何有效地计算MATLAB中神经网络应用中训练/测试集的MAPE?
作为课程的一部分,我一直在使用MATLAB作为我的时间序列数据集(用于电数据集).它由40,000多个样本组成.神经网络形成后,我想测试它的准确性.我一直对MAPE(平均绝对误差)和RMS(均方根误差 ...
- matlab怎么求hadamard,hadamard matlab
3.图像Hadamard变换 数字图像处理 ? Matlab没有提供图像Hadamard变换功能,不过 提供了求Hadamard变换矩阵的功能.例如使用 命令hadamard(8)能够得到下面[8 8 ...
- matlab怎么求imf图,MATLAB中提取EMD分解后的每个IMF图像,并导出每个IMF数据
题目: MATLAB中提取EMD分解后的每个IMF图像,并导出每个IMF数据 EMD分解程序我就不给了,网上都是一样的. 例: M = length(imf); N = length(x); c = ...
- matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc
matlab课设三阶微分方程多种方法求解 目录 一.课程设计题目及意义 -------- 1 页 二.课程设计任务及要求 --------2 页 三.课程设计详细过程及结果 --------3至10页 ...
- matlab 开环系统 求相位裕度,用MATLAB进行控制系统的..
武汉理工大学<能力拓展训练>报告书 同时,根据式(1-1),我们可以得到无源超前网络aG的对数频率特性.超前网络(cs)对频率在1/aT至1/T之间的信号有这明显的微分作用,在该频率段内, ...
最新文章
- mysql mongodb qps_极高的QPS - DynamoDB与MongoDB相比其他noSQL?
- 几本推荐的Java书
- Vue v-for使用详解
- python---之plt.subplot画图详解
- 非线性优化库Ceres问题记录
- router优点 vue_Vue 出场率99%的面试题
- 设计模式在项目中的应用案例_BIM案例 | BIM技术在码头项目中的创新应用
- 滚动轴承的代号表示方法
- Windows 使用winPe装机详细教程(图片来来源网络,仅为交流学习之用,谢谢)
- android设置背景图片透明
- php翻译英文 保留格式,页面如何实现自动翻译成英文
- 2022最新换换回收苹果手机回收价格表(苹果手机回收哪个平台价格高)
- java 泛型参数具体类型获取、泛型返回具体类型获取
- 【软件安装】vmware虚拟机安装完整教程(15.5版本)
- 成都瀚网科技:抖音发作品到底需要多久的时间才能够给流量呢?
- 【电源设计】06正激式开关电源
- 中断 git merge 操做
- 通电延时和断电延时的四种开关对应的梯形图
- String字符串转List<Map>集合
- HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
热门文章
- 堪比端游 欧美十大RPG网页游戏推荐
- 视频教程-Linux C语言编程基础视频精讲-C/C++
- GXOI2019 题解
- 前后端分离的优势是什么?
- html表单中按钮居中,Ant design StepsForm中如何使底部按钮居中
- 发票系统KF网络报税服务器信息,增值税发票综合服务平台操作指南及注意事项...
- NM3000多用表校验仪
- IDM 6.40.11.2 弹窗的解决思路
- 计算机水平居中怎么做,word标题居中怎么设置
- 关于起点中文网的一个我自认为是BUG的BUG(花了我一毛三分钱才实验出来的)...