Julia(SymPy)で数列の和、無限級数、べき級数を求める方法

どうも、木村(@kimu3_slime)です。

今回は、Julia(SymPy)で数列の和、無限級数、べき級数を求める方法を紹介します。

 



準備

SymPyを使うので、持っていなければインストールしておきましょう。

準備として、以下のコードを実行しておきます。

 

数列の和を求める方法

変数記号として、複数の記号を用意しておきます。

 

「summation(数列,(変数,範囲1,範囲2))」で、数列の和を求めることができます。

\[ \begin{aligned}\sum_{k=1}^{100} k\end{aligned} \]

\[ \begin{aligned}5050\end{aligned} \]

 

和の公式

足す範囲として、数字だけでなく変数\(n\)を使えます。これによって、数列の和の公式が導けます。

\[ \begin{aligned}\sum_{k=1}^{n} k\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^{n} k^2\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^{n} k^3\end{aligned} \]

\[ \begin{aligned}\frac{n \left(n + 1\right)}{2}\end{aligned} \]

\[ \begin{aligned}\frac{n \left(n + 1\right) \left(2 n + 1\right)}{6}\end{aligned} \]

\[ \begin{aligned}\frac{n^{2} \left(n + 1\right)^{2}}{4}\end{aligned} \]

結果を見やすくするため、「factor(数式)」で因数分解しています。

参考:和の公式(1乗、2乗、3乗)の微積分による導出

 

等差数列、等比数列の和

\[ \begin{aligned}\sum_{k=1}^n (d(k-1)+a_1)\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^n a_1 r^{k-1}\end{aligned} \]

\[ \begin{aligned}\frac{n \left(2 a_{1} + d n – d\right)}{2}\end{aligned} \]

\[ \begin{aligned}\frac{a_{1} \left(\begin{cases} n & \text{for}\: r = 1 \\\frac{r – r^{n + 1}}{1 – r} & \text{otherwise} \end{cases}\right)}{r}\end{aligned} \]

後者は少しわかりにくいかもしれません。\(r=1\)のとき、\(\frac{a_1n}{r}\)で、それ以外は\(a_1\frac{1- r^n }{1 – r} \)ですね。

 

無限級数

範囲としては、無限大\(\infty\)を使うこともできます。SymPyでは、2つのオー「oo」です。

\[ \begin{aligned}\sum_{k=1}^\infty a_1 r^{k-1}\end{aligned} \]

\[ \begin{aligned}\frac{a_{1} \left(\begin{cases} \frac{r}{1 – r} & \text{for}\: \left|{r}\right| < 1 \\\sum_{k=1}^{\infty} r^{k} & \text{otherwise} \end{cases}\right)}{r}\end{aligned} \]

 

調和級数を含む、逆数のべき乗の級数の収束・発散も判定できます。

\[ \begin{aligned}\sum_{k=1}^\infty \frac{1}{k}\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^\infty \frac{1}{k^2}\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^\infty \frac{1}{k^{1.1}}\end{aligned} \]

\[ \begin{aligned}\infty\end{aligned} \]

\[ \begin{aligned}\frac{\pi^2}{6}\end{aligned} \]

\[ \begin{aligned}10.5844484649508\end{aligned} \]

参考:負のべき乗の無限級数Σ1/n^pの収束・発散の判定方法

 

べき級数

数列に新たな変数を加えることで、べき級数も計算できます。これらはテイラー展開の逆の計算です。

\[ \begin{aligned}\sum_{k=0}^\infty \frac{1}{k!}x^k\end{aligned} \]

\[ \begin{aligned}\sum_{k=0}^\infty x^k\end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^\infty \frac{(-1)^{k-1}}{k} x^k\end{aligned} \]

\[ \begin{aligned}e^x\end{aligned} \]

\[ \begin{aligned}\begin{cases} \frac{1}{1 – x} & \text{for}\: \left|{x}\right| < 1 \\\sum_{k=0}^{\infty} x^{k} & \text{otherwise} \end{cases}\end{aligned} \]

\[ \begin{aligned}- \begin{cases} – \log{\left(x + 1 \right)} & \text{for}\: x \leq 1 \wedge x > -1 \\\sum_{k=1}^{\infty} \frac{\left(-1\right)^{k} x^{k}}{k} & \text{otherwise} \end{cases}\end{aligned} \]

 

対数関数を定めるべき級数は、\(|x|<1\)において収束しています。\(x=1,-1\)での収束・発散は、具体的に計算できます。

\[ \begin{aligned}\sum_{k=1}^\infty \frac{(-1)^{k-1}}{k} \end{aligned} \]

\[ \begin{aligned}\sum_{k=1}^\infty \frac{(-1)^{k-1}}{k} (-1)^k\end{aligned} \]

\[ \begin{aligned}\log(2)\end{aligned} \]

\[ \begin{aligned}-\infty\end{aligned} \]

 

以上、Julia(SymPy)で数列の和、無限級数、べき級数を求める方法を紹介してきました。

数値的に和を求めるのではなく、記号的に計算して和の公式を導いたり、無限級数すら計算できるのは便利ですね。

木村すらいむ(@kimu3_slime)でした。ではでは。

 

1から始める Juliaプログラミング
進藤 裕之(著), 佐藤 建太(著)
コロナ社 (2020-03-26T00:00:01Z)
5つ星のうち4.5
¥7,353 (コレクター商品)

 

こちらもおすすめ

Julia(SymPy)によるテイラー級数展開の求め方(指数対数、三角、双曲線)

Julia(SymPy)で1変数関数の極限を求める方法

Julia(SymPy)で1変数関数を積分する方法(多項式、指数対数、三角関数)

Julia(SymPy)で1変数関数を微分する方法(多項式、指数対数、三角関数)