How to write sum over expressions in MATLAB if some elements are required to be skipped?
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sourav Mondal
am 16 Jun. 2018
Beantwortet: Walter Roberson
am 16 Jun. 2018
Hi everyone I wanted to know if there is an easy way to generate MATLAB codes from the complicated symbolic mathematical expressions as shown in the figure. Here, consider that i,j,k runs from 1 to N=10.
I wanted to use that expression further, say solve for some variable as below:
myfun1 = @(x,lambda1) (2*x+lambda1-2);
Any help or suggestion on this aspect will be highly appreciated.
Thanks.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 16 Jun. 2018
No, symsum has no possibility of excluding a particular value from the indices.
You can take the symsum and subtract off the value when the indices are those unwanted ones.
However, symsum() is not really the right tool to use when you have a known list of indices (in this case, 1 to 10), as symsum() is intended for finding theoretical formulae, such as converting the taylor expansion of exp(x) back into exp(x) . When you have indexing of elements to do, then symsum() can never be used, as it is not possible to index an array at symbolic locations.
For fixed sets of indices, you should be calculating the values individually, and adding them together. You can typically do that in a vectorized fashion. For example, instead of
syms x
symsum( x*(x+1), x, 1, 20 )
you would
sum((1:20).*(2:21))
or
sum( arrayfun(@(x) x.*(x+1), 1:20 ) )
If you used that last form you could exclude values, such as
sum( arrayfun(@(x) x.*(x+1), setdiff(1:20, 7) ) )
to skip the 7*8 term
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Calculus finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!