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)+
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 00:39:31
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)+
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'.
分数低 但是实在是很急啊 望高手海涵 见谅
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)+
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