Julia Plots が動かない

無限ビリヤードゲームの図版をGeoGraphで作成しているところだが,なかなか難しい.隣り合った直線がほとんど重なってしまうため,作図困難な状態に陥っている.むしろ,リアルタイムのシミュレーションのが見易いのではないかと考えているところだが,何を使えばよいか?それが問題だ.候補はとりあえず,GeoGebra, GRAPES, Julia, Maxima の4つだ.※→FB上で,Tomoyuki Suzuki 氏から,Pythonが使えるというアドバイスを頂いた.おそらく,Python ならこれほど手こずることはないのではないかと思う.Julia には未練もあるが,もし,どうしてもダメなら Python に移るしかなさそうだ.

GeoGebraには豊富なサンプルがあり,特に,Bunryu Kamimura 氏のサンプルなどは参考になりそうだ.プログラミング言語として GeoGebra Script と JavaScript の2種類が使えるが,GeoGebra Script というのは基本的に入力バーへの命令と同じなので,かなり敷居が高い(最近ようやくちょっとだけ使い始めたところだ).いまさら JavaScript はないと思われるのでこの選択肢は消える.GeoGebra の問題は浮動小数点数の精度だ.最大でも小数点以下15桁ないし,有効数字13桁までしか使えない.GeoGebra はネット上で公開することもできるので,その意味では最適なのだが…

GRAPES ではグラフウィンドウとデータパネルを表示することができる.かなり高度なことまでできそうだが,まだ触ったことがない.GRAPES スクリプトは GeoGebra と同様コマンドの逐次実行タイプのようで,関数などは使えないようだ.できることは限られているが,それだけシンプルに使えるということかもしれない.マニュアルには精度についての記述は見当たらないので,多分倍精度までということではないかと思う.GRAPES は国産なので使いたいという気持ちはあるのだが…

Julia は任意精度の浮動小数点数が使えるので最有力候補だが,どちらかというと数値計算に強いというイメージがあり,シミュレーションに使うという話はあまり聞いたことがない.いや,かなり強力なビジュアライズ用のツールがそろっているようだ.今のところはおそらく,Plots.jl だけで間に合いそうだが… ということで using Plots を実行してみたが,どうもかなりエラーが出ている.パッケージがインストールされていないのだろうか?どうも,Julia Plots には外部のバックエンド環境が必要なようだ.これを実行する必要があるのではないだろうか?

import Pkg
Pkg.add(“Plots”)

# if you want the latest features:
Pkg.pkg”add Plots#master”

どうもそういうことのようだ.

julia> import Pkg
julia> Pkg.add(“Plots”)
Updating registry at `C:\Users\babalabo\.julia\registries\General.toml`
Resolving package versions…               
No Changes to `C:\Users\babalabo\.julia\environments\v1.10\Project.toml`
No Changes to `C:\Users\babalabo\.julia\environments\v1.1\\Manifest.toml`
julia> # if you want the lates features:
julia> Pkg.pkg”add Plots#master”            
Cloning git-repo `https://github.com/JuliaPlots/Plots.jl.git`
Updating git-repo `https://github.com/JuliaPlots/Plots.jl.git` 
Resolving package versions…
Updating `C:\Users\babalabo\.julia\environments\v1.1\Project.toml`
[91a5bcdd] ~ Plots v1.40.1 ⇒ v1.40.2 `https://github.com/JuliaPlots/Plots.jl.git#master` 
Updating `C:\Users\babalabo\.julia\environments\v1.10\Manifest.toml`
[91a5bcdd] ~ Plots v1.40.1 ⇒ v1.40.2 `https://github.com/JuliaPlots/Plots.jl.git#master`
Precompiling project…
✗ Plots
0 dependencies successfully precompiled in 22 seconds. 145 already precompiled. 9 skipped during auto due to previous errors.
1 dependency errored.                                               
For a report of the errors see `julia> err`. To retry use `pkg> precompile`

どうも,まだ何か不足しているようだ.この記事には以下のようなアニメーションのアニメが掲載されている.これはまさに,いま我々がやろうとしていることそのものだ.このコードが動きさえすれば…

はて,何をどうしたらよいのだろう?

docs.juliaplots.org/stable/

バックエンドパッケージをインストールする別コマンドがあるので,実行してみよう.

Pkg.add(“GR”)
Pkg.add(“PGFPlotsX”)
Pkg.add(“PlotlyJS”); Pkg.add(“PlotlyBase”)
Pkg.add(“PythonPlot”)
Pkg.add(“UnicodePlots”)

GRはデフォルトでインストールされることになっている.また,PGFPlotsXを使うためにはLaTexが別途必要だ.Pythonはとりあえず使う予定はないし,UnicodePlotsがなくても済みそうな気はする.とりあえず,Pkg.add(“GR”) だけ実行してみたが,状況は変わらない.plot3d という関数が未定義になっている.

https://docs.juliahub.com/CalculusWithJulia/AZHbv/0.0.7/differentiable_vector_calculus/plots_plotting.html

上記リンクでは,以下を実行している.

using CalculusWithJulia
import Contour: contours, levels, lines, coordinates
using LinearAlgebra, ForwardDiff

LazySets.plot3dという関数はどこかにあるようだが… 

https://discourse.julialang.org/t/error-using-lazysets-plot3d/52994/3

https://github.com/JuliaReach/LazySets.jl/blob/master/src/Plotting/mesh.jl#L117

LazySets.jl というものがあり,そこにはplot3dという関数も定義されている.どうもいま一つ分からない.もう少し,シンプルなサンプルから入ってみよう.@gif というマクロも未定義になっている.

https://qiita.com/MTNakata/items/0418ae3493a26ac44603

どうも訳が分からないが,パッケージが分散しているのも問題だ.多分別のところにあったものを移動してしまったのではないかと思われるが,Julia というフォルダは開発履歴(G:)が最終版ではないかと思われる.多分これは開発用(D:)にあったもと思われる.タスクバーにあるアイコンは C:\Program Files\WindowsApps\Julia にあるもので,これが最初にインストールされた場所ではないかと思う.

C:\Userts\babalabo\.julia というフォルダがあり,その下にpackages がある.GRなどもこの中に入っている.VS Code はまた別の場所に保管されているはずだが,VS Code では拡張機能として Julia をインストールしているはずだから,上記とはまた別のモジュールを使っているのではないか?

開発環境が開発履歴にあるというのもおかしいので,とりあえず,開発用ドライブに戻してみよう.いや,いっそもう一度インストールし直した方が早いのではないか?Julia はアプリとしてはインストールされていないように思われる.いや,どうもインストールされているのはProgram Filesに入っているもののようだ.これを活かしてみよう.いや,どうもこのバージョンは少し古いのではないか?アイコンが古ぼけて見える.パッケージ GR と Plots はインストールできたようだが,以下のコードが実行できない.

#パッケージのインポート
using Plots
gr()
#uとvの定義
function u(x,y)
return x^3 – 3*x*y^2
end
function v(x,y)
return 3*y*x^2 – y^3
end
#yの範囲設定
y = [i*0.1 for i in -100:100]
#アニメーションのインスタンス生成
anim = Animation()
#xを-10から10まで0.5刻みで動かしてグラフを描き、フレーム画像として保存
for x0=-20:20
x = x0*0.5
u_result = map(u,[x for i in 1:length(y)],y)
v_result = map(v,[x for i in 1:length(y)],y)
plt = plot(u_result,v_result,label=”x=$x”,
xlims=(-1000, 1000), ylims=(-500, 500),
xlabel=”u”,ylabel=”v”)
frame(anim, plt)
end
#gifに変換
gif(anim, “test.gif”, fps = 5)

Animationという関数が未定義になってしまう.Animation.jl というパッケージが別途必要なのではないか?いや,そんなはずはない.

using Plots

@gif for i in 1:50
     plot(sin, 0, i * 2pi / 10)
end

これで出るはずなのだが,@gifが未定義になってしまう.Pluto.jlという話も出てきた.どうも,Julia のREPM環境だけでは足りない模様だ.Pluto.jlをインストールしてみたが,動かない.Plutoというのは,ブラウザ上の実行環境だ.独自のREPMを持っている.using Plots で時間をバカ食いするのは仕方ないとして,@gifがやはり未定義になってしまう.その上,Restart notebookという割り込みが掛かるようになる.リモートとのリンクでタイムアウトしてしまうのだろう.ちょっと使い物になりそうもない.Plutoというのは,notebookの上で走るもののようだが,Jupyter とか Observable などというのもあるようだ.GRという描画環境を持っているのに出せないというのはまったく腑に落ちない.VS Code も試してみたが,やはり,@gif が未定義になってしまう.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA