The equation appears in my preview. However, once I post the question, it becomes blurred. So I wrote it as a code as well.
Symbolic summation: how to set this index?
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
John
el 23 de En. de 2019
Comentada: Walter Roberson
el 25 de En. de 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?
8 comentarios
madhan ravi
el 24 de En. de 2019
Have a look about symsum() , that maybe the one you are looking for.
Respuesta aceptada
Walter Roberson
el 25 de En. de 2019
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().
2 comentarios
Walter Roberson
el 25 de En. de 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
Más respuestas (0)
Ver también
Categorías
Más información sobre Calculus en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!