Juliaで数列の計算、棒グラフを描く方法

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

今回は、Juliaで数列の計算、棒グラフを描く方法を簡単に紹介します。

この記事のコード、実行結果(Github)

 



Plotsのインストール

グラフ描写用のパッケージ、Plotsをインストールしておきましょう。既にインストールしてある場合、飛ばしてください。

 

数列の計算、棒グラフ

準備として、Plotsを使えるようにしておきましょう。

 

描きたい数列を配列として定義し、それをplotを使って描くのが基本的なステップです。

等比数列\(a_n = 2n+1\)を描いてみましょう。

「x=[2n+1 for n in 1:50]」は、\(3,5,7,\dots\)といった数列を、配列として生成しています。変数は\(n\)で、その動き範囲が1から50までです。2n+1を変えることで数列の形を、1:50を変えることで描写する範囲を変えられます。

「plot(x,st=:bar, label=”a_n”)」で棒グラフの描写です。「bar(x, label=”a_n”) 」でも同様の結果が得られます。

 

等比数列\(a_n =2 \cdot3^{n-1}\)も、同様にして描けます。ただし、桁が大きくなるとオーバーフローが起こってしまうので、BigIntを使ってきちんとした結果が出るようにしました。

 

偶数、奇数項によって数列の定義が違うケースを考えてみましょう。

\[ \begin{aligned}b_n= \begin{cases}0 & (nが偶数 )\\ \frac{4}{n\pi} & (nが奇数)\end{cases}\end{aligned} \]

を描いてみます。

数列の定義式が「(if n % 2 == 0 0 else 4/(n*pi) end)」と変わりました。もし\(n\)を2で割ったあまりが0ならば(偶数ならば)0という値、そうでないならば(奇数ならば)\(\frac{4}{n\pi}\)という値、という意味です。

 

さらに条件分岐を増やした数列も、同様にして描くことができます。

\[ \begin{aligned}b_n= \begin{cases} \frac{8}{n^2 \pi} & (nを4で割ったあまりが1) \\ -\frac{8}{n^2 \pi} & (nを4で割ったあまりが3)  \\ 0 & (nが偶数)\end{cases}\end{aligned} \]

を描いてみます。

「elseif 条件式 値」によって、条件が追加できます。「n % 4 == 3 (-8/(n^2 *pi))」と値にかっこをつけましたが、「n % 4 == 3 -8/(n^2 *pi)」と書くと期待する結果にならないので注意しましょう。「3 -8/(n^2 *pi)」がひとまとまりとして解釈されるようです。

 

例外的な初項が加わった数列を描いてみましょう。

\[ \begin{aligned}a_0 = \frac{2}{\pi}\end{aligned} \]

\[ \begin{aligned}a_n= \begin{cases}0 & (nが奇数)\\ -\frac{4}{(n^2-1) \pi } & (nが偶数)\end{cases}\end{aligned} \]

「append!(配列1,配列2)」によって、\(\frac{2}{\pi}\)を配列として最初に追加しています。「pushfirst!(配列, 値)」でも同様の結果が得られます。

 

最後に、フィボナッチ数列

\[ \begin{aligned} a_0=0,a_1=1 \\ a_{n+2}=a_n+a_{n+1}  \end{aligned} \]

を描いてみましょう。

 

if文で素朴に書く(Fib(n)= Fib(n-2)+Fib(n-1))と実行が遅かったです。そこで、for文で書けるように工夫をしました。「a,b = b, a+b」が漸化式の計算です。(0,1)から始めて、(1,0+1),(1,1+1),(2,2+1),(3,3+2)という計算をn回繰り返します。

 

以上、Juliaで数列の計算、棒グラフを描く方法を紹介してきました。

Plotsを使い、数列を配列として定義し、それをプロットします。難しいのは、配列としての定義の仕方だと思います。ぜひ試行錯誤してみてください。

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

 

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

 

こちらもおすすめ

矩形波とは:フーリエ級数展開の求め方、ギブス現象、ライプニッツの級数