Asked by John
on 23 Jan 2019

I'm trying to write the following symbolic sum in matlab:

However, I can't define the function:

T=(a^(mod(j-3,n))+ a^(n-mod(j-3,n))+a^(mod(j-1-n,n)) + a^(n-mod(j-1-n,n)))*(a^(mod(j-1,n))+ a^(n-mod(j-1,n))+a^(mod(j+1-n,n)) + a^(n-mod(j+1-n,n)))

to compute

symsum(T,j,1,n)

Any help on how to make this calculation?

Answer by Walter Roberson
on 25 Jan 2019

Accepted Answer

symsum(), like the rest of MATLAB, evaluates the symbolic expression that is passed in as its first argument, before the function itself gets control. This is a problem with your formula because mod() with symbolic inputs is.. weird...

So... Don't.

Instead, construct vectors of powers:

NL = 1:n;

Nm3 = mod(NL-3,n);

Nm1 = mod(NL-1,n);

NNm3 = n - Nm3;

NNm1 = n - Nm1;

Nm1n = mod(NL-1-n, n);

and so on. Then

sum( (a.^Nm3 + a.^NNm3 + a.^Nm1n + a.^NNm1n) .* second_term )

I suggest that you only use symsum() when you are trying to find formula, such as symsum(1/2^x, 1, N) and expecting back the formula 1 - (1/2)^N .

When you have finite limits, it is almost always better to create a vector containing the individual terms, and sum() the vector.

If you were hoping that you could use symsum() to create an expression with generalized n so that you could reason with the formula, or fill in particular n values later, then you should probably give up all hope of that with symsum() or with symfun().

John
on 25 Jan 2019

Walter Roberson
on 25 Jan 2019

Yes, the value for n must be set for use with the colon operator. And mod() with symbolic expressions is nearly useless:

syms n j

mod(j-2, 5)

mod(j-2, n)

ans =

j + 3

Error using symengine

Invalid second argument.

Error in sym/privBinaryOp (line 1002)

Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});

Error in sym/mod (line 18)

C = privBinaryOp(A, B, 'symobj::zipWithImplicitExpansion', 'symobj::modp');

You can try rewriting in terms of floor: mod(A,B) -> A - floor(A/B)*B

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 8 Comments

## John (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663640

## Walter Roberson (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663642

## John (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663716

## madhan ravi (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663717

## John (view profile)

## Direct link to this comment

https://la.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663720

## John (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663721

## madhan ravi (view profile)

## Direct link to this comment

https://it.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663724

## John (view profile)

## Direct link to this comment

https://la.mathworks.com/matlabcentral/answers/441173-symbolic-summation-how-to-set-this-index#comment_663771

Sign in to comment.