作业帮 > 综合 > 作业

Matlab函数的调用错误求解释

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/28 19:08:23
Matlab函数的调用错误求解释
function ms=myGoldenSearch(fun,UA,UB,apxl,maxK)
%maxK:最大迭代次数
n=length(UA);
a=zeros(n,maxK+1);
b=a;
a(:,1)=UA;
b(:,1)=UB;
lbt=zeros(n,maxK);
mu=zeros(n,maxK);
lbt(:,1)=a(:,1)+0.382*(b(:,1)-a(:,1));
mu(:,1)=a(:,1)+0.618*(b(:,1)-a(:,1));
k=1;
while sqrt((b(:,k)-a(:,k))'*(b(:,k)-a(:,k)))>=apxl
FLK=fun(lbt(:,k));
FMK=fun(mu(:,k));
if FLK>FMK
a(:,k+1)=lbt(:,k);
b(:,k+1)=b(:,k);
lbt(:,k+1)=mu(:,k);
mu(:,k+1)=a(:,k+1)+0.618*(b(:,k+1)-a(:,k+1));
else
a(:,k+1)=a(:,k);
b(:,k+1)=mu(:,k);
mu(:,k+1)=lbt(:,k);
lbt(:,k+1)=a(:,k+1)+0.382*(b(:,k+1)-a(:,k+1));
end
k=k+1;
end
minpoint=(a(:,k)+b(:,k))/2;
LBT=lbt;
MU=mu;
SK=k;
aBuffer=a;
bBuffer=b;
end
出现以下错误:
>> ms=myGoldenSearch(fun,-1,1,0.16,6)
? Undefined function or variable 'fun'.
分数低 但是实在是很急啊 望高手海涵 见谅
while sqrt((b(:,k)-a(:,k))'*(b(:,k)-a(:,k)))>=apxl
FLK=fun(lbt(:,k)); %%%%%调用函数fun
FMK=fun(mu(:,k));%%%%%调用函数fun
if FLK>FMK
a(:,k+1)=lbt(:,k);
b(:,k+1)=b(:,k);
lbt(:,k+1)=mu(:,k);
mu(:,k+1)=a(:,k+1)+0.618*(b(:,k+1)-a(:,k+1));
ms=myGoldenSearch(fun,-1,1,0.16,6),你输入这个将调用函数myGoldenSearch,在函数
myGoldenSearch的运行过程中,运行上面的代码时,会调用函数fun,而你的函数fun未定义
所以运行到这里程序不知道该做什么,自然就出错了
改正方法:ms=myGoldenSearch(fun,-1,1,0.16,6)变为ms=myGoldenSearch(-1,1,0.16,6)
并且对fun函数做定义,即编制一个程序,说明fun是做什么的
function out=fun(a)
填代码
说明fun是做什么的
end
再问: 我的那个文件夹里还有两个函数的m文件一个是 function f1=f352(x) f=4*x(1)*x(1)+x(2)*x(2)-40*x(1)-12*x(2)+136;和 function f=f353(x) f=100*(x(2)-x(1)^2)^2+(1-x(1))^2; 但是就是不知道怎么把他们调用出来
再答: function f1=f352(x) f=4*x(1)*x(1)+x(2)*x(2)-40*x(1)-12*x(2)+136;和 function f=f353(x) f=100*(x(2)-x(1)^2)^2+(1-x(1))^2 这两个函数的输入x事实上是两个数,因为代码中出现x(1)和x(2),而你 FLK=fun(lbt(:,k)); lbt(:,k)是一个数,所以不匹配 FMK=fun(mu(:,k)); 你的函数有问题 或者调用时ms=myGoldenSearch(fun,-1,1,0.16,6) ms=myGoldenSearch(fun,UA,UB,apxl,maxK) UA不应是一个数,可能是一个矩阵,如[2 3], 总之问题比较多,我只能找出语法错误,至于程序编的是否有问题,我真不知道,谁给你的程序,找他问问把,呵呵。