Rust
少しずつRustの勉強も進めていきたいです。 以前数値計算のシミュレーションを実装しようとしていたのですが、ハミルトニアンの復習のほうが自分にとって難しくなって来てしまったので止まってしまっています。 そちらは今後気が向いたときに進めることにし…
振動子の減衰系で、rulinalgの練習も兼ねて実装してみました。この場合のケースならいちいちクロージャ使う必要はなかったですね。 kiito.hatenablog.com 若干ハマった点としては、 rulinalg::vector::Vector<f64> * f64 は実行されるものの、 f64 * rulinalg::ve</f64>…
この間までLotka-Volterraの方程式をRustで解いて勉強していましたが、そろそろPythonの numpy.ndarray のような行列計算を楽にする機構が欲しくなります。 もちろん、実際のソースコードで使われているライブラリ(crate)が良いです(メンテナンスされておら…
中間目標であったLotka-Volterraの方程式がシミュレーションで解けました。 shimaphoto03.com use gnuplot::{Figure, Caption, Color}; const A: f64 = 0.01; const B: f64 = 0.05; const C: f64 = 0.0001; const X0: f64 = 1000.0; const Y0: f64 = 100.0; …
以前のコードを改造して、 x と v それぞれで微分方程式を指定できるようにしました。クロージャ便利ですね。 use gnuplot::{Figure, Caption, Color}; const K: f64 = 1.0; const M: f64 = 1.0; const A: f64 = 2.0; const X0: f64 = 0.0; const V0: f64 = …
昨日のやつから、関数の中で x と y を += するように変更すれば、多少コードがスッキリするんじゃないかと思ってやってみました。 ミュータブルな参照で渡して、参照を外して…って感じなので書きづらい。多分間違った道に来たと思うので引き返します。 stac…
クロージャを渡す実装をしました。 t の引数は結局使ってないので削除しました。 doc.rust-jp.rs の記法はトレイト境界というもので、これが無いと以下のようなエラーが出るのですが、 error[E0277]: the size for values of type `(dyn std::ops::Fn(f64, f…
ひとまず、Rust習得の第二の中間目標として「Lotka-Volterra方程式を4次のRunge-Kutta法で近似計算する」ことを置いてみます。いきなり2重振り子を計算するのは、極座標とかラグランジアンみたいな概念が必要っぽくて、「大学時代に触れた覚えがあるけど急に…
昨日の件を友達に話したところ、crate側がRustのバージョンに対応してなかった可能性が高いようです。 これってちょっと見てみたけど、crate側の実装の問題な気がする。gnuplotのラッパーの方使ったら出力できた。 https://www.mathgram.xyz/entry/rust/gd …
昨日の続きで、Rustのcratesを利用してサインカーブをプロットしたいのですが、エラーが出てしまっています。gitconfigは、以前source treeを利用していた際のものが残っていただけだったので、ちゃんと設定し直しました。 エラー箇所を確認するためのシンプ…
数値計算のプロジェクトでは、結局グラフの形式で出力することも多いと思います。csvで出力して古き良きgnuplotでもいいんですが、Pythonのmatplotlibみたいなのが無いか調べます。 pure Rustのこちらのライブラリを試してみます。 github.com しかし、こち…
前回のあらすじ: 「Rustで数値計算(二重振り子)して結果をアニメーションで表示したい!」と思っています。クソ記事量産してる感もあるんですが、以前チュートリアルをしていて「どこまで自分が分かっていて、どこから先分かってないのか分からない」みた…
これから伸びていって「今はPython(numpy)でやっているような数値計算もRustで、高速に抽象的に書けるようになるんじゃないかな」と思っています。 github.com 今まで何度かトライしたものの、「お前まだチュートリアルやってるのかよ」ってプログラミング友…