LoginSignup
10
1

More than 5 years have passed since last update.

Julia で ベクトル場を描く

Last updated at Posted at 2018-05-25

環境など

Julia 1.1 に合わせて記事を更新した。

julia> versioninfo()

Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, sandybridge)
using Plots
gr(size=(400, 400))
#gr(fmt=:png)

Plots のデフォルトでは、グラフは SVG 形式で出力される。しかし、描画点数が多くなってくると、ブラウザ(Jupyter クライアント)の表示のほうで負荷がかかってしまう。その場合は PNG 形式に変更するとよい。

座標系をつくる

ベクトル場を描く関数 quiver() の引数は一次元配列である。それに合わせて、一次元の座標系をつくる。

xe = range(-1, 1, length=15)
ye = range(-1, 1, length=15)

x = repeat(xe, outer=length(ye))
y = repeat(ye, inner=length(xe));
julia> x

225-element Array{Float64,1}:
 -1.0                
 -0.8571428571428571 
 -0.7142857142857143 
  ...
  0.8571428571428571 
  1.0

julia> y

225-element Array{Float64,1}:
 -1.0
 -1.0
 -1.0
  ...
  1.0
  1.0

ベクトル場をつくる

u = y
v = x

ベクトル場を描く

見やすいように、適当な係数 k をかけて矢印の長さを調節した。

k = 0.1
quiver(x, y, quiver=(k*u, k*v))

quiver.png

他の例

u = y
v = -x

quiver2.png

もし配列が二次元だったら

配列を一次元に開いて quiver() に渡せばよい。

quiver(x[:], y[:], quiver=(u[:], v[:]))
10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1