问题是如何用下面的算法求解下面的分段函数,目前出现的问题是:??? Error using ==> at 11Function 'gt' is not implemented for MuPAD symbolic objects.Error in ==>
问题是如何用下面的算法求解下面的分段函数,目前出现的问题是:??? Error using ==> at 11Function 'gt' is not implemented for MuPAD symbolic objects.Error in ==> f13 at 7if x(i)>aError in ==> MyPowell at 12ff=feval(fun,x);目标函数是一分段函数:分段函数为:n=30 function f=f13(x)h=0;g1=0;g2=0;g3=0; a=5;k=100; m=4;for i=1:29h=h+(x(i)-1)^2*(1+(sin(3*pi*x(i+1)))^2);endfor i=1:30if x(i)>ag1=g1+k*(x(i)-a)^m;elseif x(i)MaxLength,MaxLength=llength;m=m+1;endx0=xx;endss=x0-x00;ReflectX=2*x0-x00;f1=feval(fun,x00);f2=feval(fun,x0);f3=feval(fun,ReflectX);if f3f3, x0=ReflectX;endendif norm(x00-x0)=ft1 t2=t1+step;ft2=subs(f,{x},{t2}); while ft1>ft2 t0=t1; %ft0=ft1; t1=t2;ft1=ft2; step=2*step;t2=t1+step;ft2=subs(f,{x},{t2}); endelse step=-step; t=t0;t0=t1;t1=t;ft=ft0; %ft0=ft1; ft1=ft; t2=t1+step;ft2=subs(f,{x},{t2}); while ft1>ft2 t0=t1; %ft0=ft1; t1=t2;ft1=ft2; step=2*step;t2=t1+step;ft2=subs(f,{x},{t2}); endendoutput=[t0,t2]; 和function output=OneDemensionslSearch(f,x,s,r) if nargin<4,r=1e-6;end a=s(1);b=s(2); a1=a+0.382*(b-a);fa1=subs(f,{x},{a1}); a2=a+0.618*(b-a);fa2=subs(f,{x},{a2}); while abs((b-a)/b)>r && abs((fa2-fa1)/fa2)>r if fa1
展开
全部