wtlove876
2008-05-14, 13:18
请问:
我利用quad求积分时,被积函数是我自己写的分段函数,运行时总是出错
Error using ==> inline/feval
Not enough inputs to inline function.
错在哪呢?:lovely:
下面是源程序:
function out=Mu(X,m,Teta,i)
[s,n]=size(X);
t=m/(2*pi);
for j=1:n
x=X(j);
if(i==1)
if(x>=0&x<=Teta(i))
out(j)=t^2*(x-0)^3-t*(x-0)^2;
elseif(x>=Teta(i)&x<=Teta(i+1))
out(j)=t^2*(x-Teta(i))^3-2*t*(x-Teta(i))^2+(x-Teta(i));
else
out(j)=0;
end
elseif(i>=2&i<=m-1)
if(x>=Teta(i-1)&x<=Teta(i))
out(j)=t^2*(x-Teta(i-1))^3-t*(x-Teta(i-1))^2;
elseif(x>=Teta(i)&x<=Teta(i+1))
out(j)=t^2*(x-Teta(i))^3-2*t*(x-Teta(i))^2+(x-Teta(i));
else
out(j)=0;
end
else
if(x>=Teta(i-1)&x<=Teta(i))
out(j)=t^2*(x-Teta(i-1))^3-t*(x-Teta(i-1))^2;
elseif(x>=0&x<=Teta(1))
out(j)=t^2*(x-0)^3-2*t*(x-0)^2+(x-0);
else
out(j)=0;
end
end
end
==========================
m=20;
Teta=zeros(1,m);
for i=1:m
Teta(i)=i*2*pi/m;
end
x=0:0.01*pi:2*pi;
y=Mu(x,m,Teta,20);
yy=quad(inline('Mu(x,m,Teta,20)'),0,2*pi);
我利用quad求积分时,被积函数是我自己写的分段函数,运行时总是出错
Error using ==> inline/feval
Not enough inputs to inline function.
错在哪呢?:lovely:
下面是源程序:
function out=Mu(X,m,Teta,i)
[s,n]=size(X);
t=m/(2*pi);
for j=1:n
x=X(j);
if(i==1)
if(x>=0&x<=Teta(i))
out(j)=t^2*(x-0)^3-t*(x-0)^2;
elseif(x>=Teta(i)&x<=Teta(i+1))
out(j)=t^2*(x-Teta(i))^3-2*t*(x-Teta(i))^2+(x-Teta(i));
else
out(j)=0;
end
elseif(i>=2&i<=m-1)
if(x>=Teta(i-1)&x<=Teta(i))
out(j)=t^2*(x-Teta(i-1))^3-t*(x-Teta(i-1))^2;
elseif(x>=Teta(i)&x<=Teta(i+1))
out(j)=t^2*(x-Teta(i))^3-2*t*(x-Teta(i))^2+(x-Teta(i));
else
out(j)=0;
end
else
if(x>=Teta(i-1)&x<=Teta(i))
out(j)=t^2*(x-Teta(i-1))^3-t*(x-Teta(i-1))^2;
elseif(x>=0&x<=Teta(1))
out(j)=t^2*(x-0)^3-2*t*(x-0)^2+(x-0);
else
out(j)=0;
end
end
end
==========================
m=20;
Teta=zeros(1,m);
for i=1:m
Teta(i)=i*2*pi/m;
end
x=0:0.01*pi:2*pi;
y=Mu(x,m,Teta,20);
yy=quad(inline('Mu(x,m,Teta,20)'),0,2*pi);