2013-10-30 23 views
8

Octave'de bir toplama serisi yapmak mümkün mü?octave kullanılarak toplama serisi

matlab yılında ancak oktav için benzer bir şey bulamadık, onun için symsum işlevi yoktur.

Örneğin, ben şu toplamını

bulmak istiyorum Summation


Zeyilname: Bu hata ile başarısız bu

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

sum(f([0:5])) 

gibi bir şey özetlemek mümkündür olsun

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

Eğer sembolik serisi toplamı için analitik çözüm istiyor musunuz yoksa sadece sayısal bir tane gerekir: Yani, ek arrayfun çağrıyı gerekir? Symsum analitik çözüm sağlar ve sumbolik seri toplama için kullanılır. –

+0

@LeonidBeschastny, Ben sadece sayısal bir – com

+1

ihtiyacım var Sonra 'sum' muhtemelen yapacağız. Sorununuzun bir örneğini sağlayın ve size bir çözüm sunacağım. –

cevap

23

Analitik bir çözüme ihtiyacınız yoksa, symsum'a ihtiyacınız yoktur.

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

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

Ve başka bir ile: Örneğin

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

basitçe İşte sum

sum([1:5]) 

kullanabilirsiniz hesaplamak istiyorsanız başka bir örnektir factorial function:

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

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

aynı, ancak anonim fonksiyonu olmadan:

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

Güncelleme son örnek gelince

, nchoosek sadece skaler argümanlar verir.

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

Cevabınız için çok teşekkür ederim. Lütfen eke bakabilir misiniz? Şimdiye kadar hiçbir başarı ile hesaplamaya çalışıyorum. – com

+0

@tam Güncellememi görün. –