バックナンバーはこちら。
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は行ベクトルがデフォルトであるため、扱いに気を付ける必要がある。
- 列ベクトルがデフォルトになっている理由としては、数式との一致性を考慮した結果と推測される。
バックナンバーはこちら。
コメント