Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-Maxima入門- 総和、基礎編

f:id:jurupapa:20130719171358j:plain

Minolta Space Meter, used by NASA for Apollo missions and now displayed at Smithsonian National Air and Space Museum

 

総和を求める関数はsum(式、変数、下限、上限)です。答えが数値や閉形式(sum関数を含まない形)で求まることも多く、sum()が答えを出してくれるとMaximaって賢い、と思えます。

 

\( 1+2+3+ \cdots +100 \)を求めるには次のように入力します。式nを変数nを1から100まで変化させて総和をとる、という意味です。

(%i1) sum(n,n,1,100);

 

$$ \tag{%o1} 5050 $$

 

次は式\( \frac{1}{n} \)を変数nを1から10まで変化させて総和をとります。

(%i2) sum(1/n,n,1,10);

$$ \tag{%o2} \frac{7381}{2520} $$

 

次は上限が変数の場合でもMaximaは閉形式で答えを求めてくれます。\( n^5 \)をn=1~kまで足します。最後に,simpsum=trueとつけるとMaximaは閉形式を見つけようとします。

(%i3) sum(n^5,n,1,k),simpsum=true;

 

$$ \tag{%o3} \frac{2\,k^6+6\,k^5+5\,k^4-k^2}{12} $$

(%i4) factor(%);

 

$$ \tag{%o4} \frac{k^2\,\left(k+1\right)^2\,\left(2\,k^2+2\,k-1\right)}{12} $$

(%i5) sum(n^5+2^n,n,1,k);

 

$$ \tag{%o5} \sum_{n=1}^{k}{\left(2^{n}+n^5\right)} $$

これも,simpsum=true;をつければちゃんと計算してくれます。

(%i6) %,simpsum=true;

 

$$ \tag{%o6} 2^{k+1}+\frac{2\,k^6+6\,k^5+5\,k^4-k^2}{12}-2 $$

 

ところがこんな式だとsum()はうまく閉形式を見つけることができません。

(%i7) sum(n*n!,n,1,k),simpsum=true;

 

$$ \tag{%o7} \sum_{n=1}^{k}{n\,n!} $$

そんな時にはより強力なnusum()を使います。不定和(上限が変数の総和)を求めることが得意です。

(%i8) nusum(n*n!,n,1,k);

 

solve: dependent equations eliminated: (1)

$$ \tag{%o8} \left(k+1\right)!-1 $$

 

2項係数を含んだ式でも閉形式を計算することができます。

(%i9) nusum(k*binomial(n+k,k),k,1,n);

  \tag{%o9} \frac{n\,\left(n+1\right)\,{{2\,n+1}\choose{n+1}}}{n+2}

simpsumフラグをつけたり、nusum()とsum()を使い分けるのが面倒、という人には便利な関数simplify_sum()が用意されています。

(%i10) load(simplify_sum);

 

 \tag{%o10} /Users/yasube/Programming/test-imaxima/ccl/5.23post\\/share/maxima/5.23post/share/contrib/solve\_rec/simplify\_sum.mac

 

以下のような式は本来最初の総和はnusum()を使うと求まるし、2番目の総和はsum(),simpsum=trueとすれば求まるような式です。

(%i11) sum(binomial(n+k,k)/2^k,k,1,n)+sum(binomial(2*n,2*k),k,1,n);

 

 \tag{%o11} \sum_{k=1}^{n}{\frac{{{n+k}\choose{k}}}{2^{k}}}+\sum_{k=1}^{n}{{{2\,n}\choose{2\,k}}}

 

そういうことは一切考えずに次のようにすれば可能な簡約が全て行われます。

(%i12) simplify_sum(%);

 

 \tag{%o12} 2^{2\,n-1}+2^{n}-2