Summation series using matlab

Zaksh picture Zaksh · Oct 13, 2012 · Viewed 37k times · Source

When i write this in matlab

syms x;
f=x^3-cos(x);
g=diff(f)

it gives out put as

g =

3*x^2+sin(x)

Now I want to generate summation series as
http://upload.wikimedia.org/math/e/1/c/e1c5e8954e1e68099d77ac15ffa765a7.png

I google and found "symsum" command but it doesn't do my required task, when i write the following commands

syms k
symsum(k^2, 0, 10)
symsum(1/k^2,1,Inf)

it gives the out put as

ans = 385

ans = pi^2/6

Can you guys guide me how can I genereate the series which produce output as
http://upload.wikimedia.org/math/e/1/c/e1c5e8954e1e68099d77ac15ffa765a7.png

so that when I give command diff(Sk); it should produce result as or something like that enter image description here

For example in Mathematica I can do it as

SummationSeries with subscript

Your assistance will be surely of great help.

Answer

jespestana picture jespestana · Oct 13, 2012

I have looked the help of the symsum function and you have a really good example, try this:

syms x;
syms k real;
symsum(x^k/sym('k!'), k, 0, inf)

This commands evaluate the series enter image description here, and actually evaluates to enter image description here. As you can see you have to specify the term of the series with its dependence of 'k'. Then in the symsum command you have to specify that you want to sum over 'k' from 0 to inf.

So for example, you could do the following:

syms x;
syms k real;
ak = (-1)^k*x^(2*k+1)/sym('(2*k+1)!');
sum_ak = symsum(ak, k, 0, inf);     % gives back sin(x)
dak = diff(ak,x);
sum_dak = symsum(dak, k, 0, inf);   % should give back cos(x), but does not
A5 = symsum(ak, k, 0, 5);           % add only the first values of the series
DA5 = symsum(dak, k, 0, 5);         % add the derivated terms of the series

You can declare multiple symbolic variables uk and add them up:

syms x;
syms k real;
n = 5;
for i = 0:n
    eval(['syms u',num2str(i),' real;']);
end

A = cell(1,n);
for i=1:n
    A{i} = u0;
    for j=1:i
        eval(['A{i} = A{i} + u',num2str(j),';']);
    end
end
A{3} % check the value of A{i}

Hope this helps,