问题补充说明:%******gradOptimizMethod.m******%clcclearx=[0:0];%设置搜索起始点eps=0.01;%精度g=detaf(x);%设定目标函数并计算起始点对应的函数梯度nc=0;%迭代次数symsalpha;whilenorm(g)>epss=... %******gradOptimizMethod.m******% clc clear x=[0:0];%设置搜索起始点 eps=0.01;%精度 g=detaf(x); %设定目标函数并计算起始点对应的函数梯度 nc=0;%迭代次数 syms alpha; while norm(g)>eps s=-g'/norm(g);%设置该点负梯度方向为搜索方向 tt=subs(x)+alpha*subs(s); ff=fx(tt(1),tt(2)); ff=inline(ff); [minx,maxx]=forwardBackward(ff,1,0,1); t=quadraticInterpolation(ff,minx,maxx);%一维搜索最优步长因子 xx+t*s; g=detaf(x); f=fx(x(1),x(2)); gradeValue=norm(g); nc=nc+1; fprintf('**********第%d次搜索结果为********** *','nc'); x g gradeValue s t f end% ******deta.m******%% 求解目标函数的梯度function [gradf]=detaf(x)% detaf:▽f% 目标函数:f;% 函数梯度:df;% 设计变量:x;gradf(1)=2*x(1)-2*x(2)-5;gradf(1)=6*x(2)-2*x(1)-7;end% ******fx.m******%% 设定目标函数function f=fx(x1,x2)f=x1^2+25*x2^2;f=x1*(x1-2*x2-5)+x2*(3*x2-7);%目标函数表达式end索引超出矩阵维度。出错 detaf (line 8)gradf(1)=2*x(1)-2*x(2)-5;出错 gradOptimizMethod (line 6) g=detaf(x); %设定目标函数并计算起始点对应的函数梯度 展开
1、打开MATLAB编辑底介止达此自消铁普防器,用其进行代码设计。
2、使用length方便计算出未知矩重妈源助能机曲回绝溶星阵中,行或列最大值,如果需要这种结果,就可以选用,如行数比列的大,就返回行的数目,反之返回列。
3、接着介绍size,实际这一函数用法更灵活,几乎可以获得所需各种结果。这里用一个变量,等于此函数运行结果,结果输出为数组形式,分别储存行、去给照直样相纸升笑业足列数。
4、如果用一个,只有一行,有两个元素,分别存放在不同列的数组去等于结果,则每个元素的结果,分别为整型,储存着矩阵的维度值,而且还可获得行及列的具体数值。
5、如果将size内容移列短众用世政模额护,添加2后,则运行图示程序,结果全为3,即只输出列数,对应矩阵另一个维度。
标签:matlab,维度,索引