Matlab函数的调用错误求解释

学习 时间:2026-04-07 21:40:21 阅读:8989
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;endminpoint=(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'.分数低 但是实在是很急啊 望高手海涵 见谅

最佳回答

无情的板栗

神勇的音响

2026-04-07 21:40:21

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], 总之问题比较多,我只能找出语法错误,至于程序编的是否有问题,我真不知道,谁给你的程序,找他问问把,呵呵。

最新回答共有2条回答

  • 典雅的芒果
    回复
    2026-04-07 21:40:21

    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], 总之问题比较多,我只能找出语法错误,至于程序编的是否有问题,我真不知道,谁给你的程序,找他问问把,呵呵。

上一篇 长72米的客车,从追上长108米的货车到完全超过用了10秒.

下一篇 该怎么感谢他,想写一句话给他