2013-10-30 1 views
8

È possibile eseguire una serie di sommatorie in Octave?utilizzando l'ottava

In matlab c'è la funzione symsum, tuttavia non ho trovato nulla di simile per l'ottava.

Per esempio, voglio trovare la seguente somma

Summation


Addendum:

se è possibile sommare qualcosa di simile

f = @(x) nchoosek(5,x)*0.1.^x*0.9.^(5-x) 

sum(f([0:5])) 

riuscita con errore

error: called from: 
error: /usr/share/octave/3.6.4/m/help/print_usage.m at line 87, column 5 
error: /usr/share/octave/3.6.4/m/specfun/nchoosek.m at line 95, column 5 
error: at line -1, column -1 
error: evaluating argument list element number 1 
+0

Vuoi una soluzione analitica per la somma delle serie simboliche o hai solo bisogno di una soluzione numerica? 'symsum' fornisce una soluzione analitica e viene utilizzata per la somma delle serie sumboliche. –

+0

@LeonidBeschastny, ho bisogno solo di quello numerico – com

+1

Quindi 'sum' probabilmente lo farà. Fornisci un esempio del tuo problema e ti darò una soluzione. –

risposta

23

Se non è necessaria una soluzione analitica, non è necessario symsum. Per esempio, se si desidera calcolare

\sum_{k=1}^{5} k

la si può semplicemente utilizzare sum

sum([1:5]) 

Ecco un altro esempio:

\sum_{k=1}^{5} \exp(-k)

f = @(x) exp(-x) 
sum(f([1:5])) 

e un altro con factorial function:

\sum_{n=0}^{5} \frac{1}{n!} \approx e

g = @(n) 1 ./ factorial(n) 
sum(g([0:5])) 

lo stesso, ma senza funzione anonima:

sum(1 ./ factorial([0:5])) 

Aggiornamento

quanto riguarda il tuo ultimo esempio, nchoosek permette argomenti solo scalari. Quindi, avrai bisogno di ulteriori arrayfun chiamata:

f = @(x) nchoosek(5,x)*0.1.^x*0.9.^(5-x) 
sum(arrayfun(f,[0:5])) 
+0

Grazie mille per la risposta. Potresti per favore dare un'occhiata all'addendum. Sto cercando di calcolare fino ad ora senza successo. – com

+0

@tam vedere il mio aggiornamento. –