[求助]关于带参数积分以及积分上下限也带参数的问题
看了论坛上几篇关于带参数积分的帖子后,偶试着去做下面的积分,发现做不出,总是出现错误:程序如下:
clear;clc; syms x i Q j; l=zeros(1,201); D(1:81)=0;
for Q=linspace(0,80,81)
for i=-10000:100:10000
for j=1:81
q=Q(j);
for k=1:201
l=i(k);
fun=inline(subs('(abs(x-i.*Q)).^2.*((0.0734/2).*exp((-0.0734).*abs(x)))', {Q,i},{q,l}));
D(Q+1)=D(Q+1)+sum(quadl(fun,(i-1/2).^Q,(i+1/2).^Q));
end
end
end
end
Q=linspace(0,80,81);
plot(Q,D)
错误信息:
??? Error using ==> sym.sym>char2sym at 414
Not a valid symbolic expression.
Error in ==> sym.sym at 95
S = char2sym(x);
Error in ==> subs at 60
r = subs(sym(f),varargin{:});
Error in ==> DLaplace at 21
fun=inline(subs('(abs(x-i.*Q)).^2.*((0.0734/2).*exp((-0.0734).*abs(x)))',...
[ 本帖最后由 maigicku 于 2009-3-27 09:19 编辑 ] 哦,偶这个自己已经解决了。。就是太拘泥于积分函数了。。其实不用积分函数也可以做出来。。
先建立一个函数d(q):
function f = d(q)
delta_x = 1;
max_i =100;
min_i = -100;
f = 0;
for i = min_i:1:max_i
temp = 0;
for x = (min_i-0.5).*q:delta_x:(max_i+0.5).*q
temp = temp + (x-i.*q)*(x-i.*q)*(0.0734/2).*exp((-0.0734).*abs(x));
end
f = f + temp;
end
然后运行:
clear;clc
q=linspace(0,80,81);
f=zeros(size(q));
for j=1:length(q)
f(j)=d(q(j));
end
plot(q,f)
就可以了。。。
[ 本帖最后由 maigicku 于 2009-3-31 09:03 编辑 ]
页:
[1]