Symbolic summation within a for-loop

9 vues (au cours des 30 derniers jours)
Robert Mason
Robert Mason le 22 Juil 2016
I have a function that is dependent on two variables, f(j, k). I would like to create a loop that, for each j, sums the function for each value of k. I have tried the code:
for j=1:10;
g(j)=symsum(f(j,k), k, 1, 10);
end;
However, I get an error message "Undefined function 'symsum' for input arguments of type 'double'." on running the code. What is the best way to do the above in MATLAB?
  1 commentaire
Azzi Abdelmalek
Azzi Abdelmalek le 22 Juil 2016
How f is defined?

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 22 Juil 2016
symsum cannot use the summation variable to index.
If f is not vectorized then you use
sum( arrayfun(@(k) f(j, k), 1:10) )
If f is vectorized you might be able to use
sum( f(j, 1:10) )
but you might need
sum( f(repmat(j,1,10), 1:10) )
depending on how f is coded.

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 22 Juil 2016
Look at this example
syms f j k
f=j*sin(k)
for jj=1:10;
ff(k)=subs(f,j,jj);
s=symsum(ff(k), k, 1, 10);
g(jj)=double(s)
end;

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by