数値実験をやっていて気がついたけど、Juliaの型宣言はかなり厳密に行われているようだ。
たとえば、xを変数ベクトルとして定義したときに
x[1], 1.0*x[1], x[1]+0.0
などは数学では等価として計算してほしいけど、Juliaでは異なるものとして処理されるようで、最適化ソルバーに入れて結果を見ると違う結果が出てくることがある。
JuMPなど複数のパッケージを使っているので、どのパッケージで異なる処理が入るのかを特定できていないけど、このあたりは気をつけたいところだ。
(理由として推測できるのは、C言語の int 型だと 3/2 が 1 になって、double 型だと 3.0/2.0 が 1.5 になる、みたいなこと、かと思っている。)
0 件のコメント:
コメントを投稿