Juliaでフィボナッチ数列/ビネの公式を表現してみたい

Juliaでフィボナッチ数列/ビネの公式を表現してみたい

Juliaとは

Juliaは何やら数学向きな言語らしく、チラホラと名前を見る機会があったので、触ってみました。

「フレキシブルな動的プログラミング言語であり、科学分野や計算処理におけるプログラミングに適し、これまでの静的プログラミング言語に匹敵するパフォーマンスを提供」するとのこと。

https://hshindo.github.io/julia-doc-ja-v0.6/manual/introduction.html

ダウンロード

https://julialang.org/downloads/

公式サイトから任意のバージョンのJuliaをダウンロードしてください。今回は1.5を使用してます。

dmgファイルを実行し、appファイルをApplicationフォルダに入れれば準備完了。

appファイルを実行すると、ターミナルが起動し、Juliaが起動した状態となります。

算術演算式

Juliaでは数式を書くように算術演算式を記載することができます。

julia> x = 10  
10  
julia> y = 2x+1  
21

例えば、一辺を10,8とする直角三角形があった場合、(単位は考慮しない)

xはピタゴラスの定理を用いつつ、平方根を計算するsqrtを使って算出することができます。

julia> a = 10  
10  
julia> b = 8  
8  
julia> x = sqrt((a^2) - (b^2))  
6

配列

表題とはあまり関係ないのですが、慣れが必要だと感じたのは配列。

配列を定義すると入れた値によって何の配列なのか出力されます。

julia> a = \[1, 2, 3\]  
3-element Array{Int64,1}:  
 1  
 2  
 3julia> a = \["anti", "pat", "tern"\]  
3-element Array{String,1}:  
 "anti"  
 "pat"  
 "tern"

ここまではいいのですが、antiを参照する際には a[1] と入力します。

0番目というものに慣れてしまった人には逆に分かりにくい!

フィボナッチ数列にトライ

ではやってみます。

sqrtのようにJuliaには様々数学に使う関数がデフォルトで定義されています。また、定数も珍しいものがあります。

julia> Base.MathConstants.golden  
φ = 1.6180339887498...

julia> 1\*(Base.MathConstants.golden)  
1.618033988749895

黄金数φですね。

折角なのでこれを使ってフィボナッチ数列をビネの公式を使い解いてみようとします。

----------2022-04-12-18.45.58

画像はwikipediaより参照

https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83%81%E6%95%B0

julia> n = 6  
6  
julia> φ = Base.MathConstants.golden  
φ = 1.6180339887498...  
julia> Fn = ((φ^n) - (-φ)^-n) / sqrt(5)  
8.0

結構そのままスッキリ書けますが、当然nが大きなると丸め誤差が起きてしまいます。

julia> n = 10  
10

julia> φ = Base.MathConstants.golden  
φ = 1.6180339887498...

julia> Fn = ((φ^n) - (-φ)^-n) / sqrt(5)  
54.99999999999999

ふむふむ、、、使いどころが難しそうです。

こちらからは以上です。