MATLAB,Python,Scilab,Julia比較 その14【基本的な使い方④】

MATLAB,Python,Scilab,Julia比較 その14【基本的な使い方④】 数値計算
MATLAB,Python,Scilab,Julia比較 その14【基本的な使い方④】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/

はじめに

前回は、Juliaの基本的な使い方を示す前に
ちょっとしたクセの違いについて確認。
start:step:endの形式(区間演算子)で等差数列を表現できるが、この状態ではメモリ上に実態を持っていない。
Vectorに渡すことで実態を持てるので、
MATLABと同等の使い方をする場合は気を付ける必要がある。

と、ここらへんを踏まえた上でJuliaの基本的な使い方に入る。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

Juliaの基本的な使い方

太郎くん
太郎くん

一応、Juliaのクセみたいなのを前回確認したから、
今回は他のツール、言語と同じようなことができるかって確認か。

フクさん
フクさん

そうだね。
前回確認した以外にもいろいろ違いはあるだろうが、
そこら辺は適時確認&説明して行こう。

フクさん
フクさん

というわけで、
Juliaの基本的な使い方。

# 単純年算
> a=1;
> b=2;
> c=a+b;
> c
3

# ベクトル
> x=[1;2;3]
3-element Vector{Int64}:
 1
 2
 3

# 等差数列
> Vector(range(0,10,length=5))
5-element Vector{Float64}:
  0.0
  2.5
  5.0
  7.5
 10.0

# 行列
> A=[1 2 3; 4 5 6; 7 8 9]
3×3 Matrix{Int64}:
 1  2  3
 4  5  6
 7  8  9

動作を見た感想

太郎くん
太郎くん

前回の等差数列の問題はVectorで解決してるけど、
それ以外はMATLABと一緒なのかな?

太郎くん
太郎くん

いや、Vectorに渡した数列の結果が列ベクトルになってる?

フクさん
フクさん

そこもJuliaの性質だな。
MATLAB、Scilabだとデフォルトが行ベクトルに対して、
Juliaはデフォルトが列ベクトルだ。

太郎くん
太郎くん

なんで、そんな違いが・・・。

フクさん
フクさん

ここらへんは言語の設計ポリシーだから、実際のところは良く分からないが、
数学的にはベクトルは列ベクトルな方が普通なんだよね。
特に行列演算で使用する場合は。

太郎くん
太郎くん

そうなの?

フクさん
フクさん

例えば、\((x,y)\)を\((x^\prime,y^\prime)\)に変換する場合、
以下のような行列演算をするわけなのだけど・・・。

\(
\begin{bmatrix}
x^\prime \\
y^\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
\)

太郎くん
太郎くん

あー、確かに基本的には列ベクトルってのはわかるかも。

フクさん
フクさん

これを行ベクトルがデフォルトとすると、
以下のように書けなくもないのだが・・・。
これがあまりマナーがよろしくないとも言える。

\(
\begin{bmatrix}
x^\prime & y^\prime
\end{bmatrix}=
\begin{bmatrix}
x & y
\end{bmatrix}
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
\)

太郎くん
太郎くん

ようわからんが、
行ベクトルがデフォルトだと、めんどくさがって変な書き方する人が出てくる
だったら、列ベクトルにしておいた方が、全体としてスマートな書き方になるんじゃない?
ってこと?

フクさん
フクさん

推測レベルだが、おそらくそういうことなんだと思う。

太郎くん
太郎くん

うーん、それで他のツール、言語と乖離しちゃうのもなんだかなー。

フクさん
フクさん

まぁJuliaは特に数式との一致性を強く意識している言語のようだから、
こういうコンセプトは嫌いではないな。

太郎くん
太郎くん

まぁこれも気を付ければOKってことだね。

まとめ

フクさん
フクさん

まとめだよ。

  • Juliaの基本的な使い方。
  • Juliaは列ベクトルがデフォルト。
    • MATLAB、Scilabは行ベクトルがデフォルトであるため、扱いに気を付ける必要がある。
    • 列ベクトルがデフォルトになっている理由としては、数式との一致性を考慮した結果と推測される。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました