web-dev-qa-db-ja.com

オクターブを使用した総和級数

Octaveで総和シリーズを行うことは可能ですか?

matlab にはsymsum関数がありますが、オクターブに似たものは見つかりませんでした。

たとえば、次の合計を見つけたい

Summation


補遺:

このようなものを合計することが可能かどうか

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

sum(f([0:5]))

エラーで失敗しました

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
13
com

分析ソリューションが必要ない場合は、symsumは必要ありません。たとえば、計算したい場合

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

単にsumを使用できます

sum([1:5])

別の例を次に示します。

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

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

そしてもう1つは factorial function

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

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

同じですが、匿名関数はありません:

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

更新

最後の例として、nchoosekはスカラー引数のみを許可します。したがって、追加のarrayfun呼び出しが必要になります。

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