Search code examples
matlabplotmatlab-figurematlab-guide

Plotting the sum of series


I use this code and i don't know what it needs to work for my problem:

    syms x k t
    for t=0:10
    num=((-1)^k)/k
    t1=sin(8*3.1415*k*t)
    S1=symsum((num*t1),k,1,2);
    x=0.5-((1/3.1415)*S1);
    end
 Plot(x)

On the x axis I show time and on the y axis I show the function over four periods.

When I try to run the code I get the following error:

Undefined function 'symsum' for input arguments of type 'double'.

Maybe I can't use symsum with my argument type, but is there another function I can use? Sum also didn't work:

Error using sum Dimension argument must be a positive integer scalar within indexing range.


Solution

  • Since you want to plot x(t), you need to use plot(t,x) where t and x are vectors.

    Instead of using for t=0:10, just let t=0:10 and calculate the corresponding x.

    Also, the symbolic variable is just k.

    syms k 
    t=0:10;
    num=((-1)^k)/k;
    t1=sin(8*3.1415*k*t);
    S1=symsum((num*t1),k,1,2); 
    x=0.5-((1/3.1415)*S1); 
    
    plot(t,x) 
    

    It is noted that if you let t=0:10, then the sin(8*k*pi*t) will always be 0 since t is a vector of the integer from 0 to 10. The result of x(t) will be 5:

    Output when t=0:10: enter image description here

    As you can see, the value of x(t) is very close to each other. Theoretically, they should all be 5. But there is some numerical approximation which leads to the small error.

    You probably want non-integer t. Here is a output when t=0:0.1:10 enter image description here