我的函数只是从-inf到inf的简单求和:f(x)= sum(pi * exp(-x + 2pi * j),j = -inf到in);
我试过这样做,但得到了错误说"预期数字或双重可兑换参数"
x = linspace(-7, 7, 1000);
h = 10;
syms j;
v_hat = symsum(pi * exp(x + 2*pi*j),-inf, inf); %v_hat is a function of x: v_hat(x)
plot(x, v_hat);
答案 0 :(得分:1)
我认为你的代码编程没有任何问题,但是有一个致命的数学缺陷 - 每个x的总和是无限的。请注意,它只是exp(2 * pi * j)的总和乘以pi * exp(x)。当j为正时,值exp(2 * pi * j)很大,你尝试添加无限多个......
当我将公式更改为实际收敛的系列时,代码可以正常运行,但需要很长时间。
x = linspace(-7, 7, 1000);
h = 10;
syms j;
v_hat = symsum(pi * exp(-abs(x+ 2*pi*j/h) ),-inf, inf);
plot(x, v_hat);
请注意,尽管使用了1000个数据点,但质量并不高。通过放弃符号总和,您可以更快地获得更好的质量更多。 abs(j)> 100的条款的贡献在这里很小,所以放弃它们并使用其余的数字和。
h = 10;
x = linspace(-7,7,10000);
[X,j] = meshgrid(x, -100:100);
v_hat = sum(pi * exp(-abs(X+ 2*pi*j/h) ), 1);
plot(x, v_hat);
此外,认识到该功能是周期性的,周期为2 * pi / h。所以你可以绘图 一个或两个时期的功能,并想象其余的。
h = 10;
x = linspace(-2*pi/h, 2*pi/h, 101);
syms j;
v_hat = symsum(pi * exp(-abs(x+ 2*pi*j/h) ),-inf, inf);
plot(x, v_hat);