忘れないようにメモっとく

機械学習とかプログラミングとか。

SageMathCloudを使ってみよう

Python Advent Calendar 2014 - Qiita 3日目の記事です。

タイトルの通り、SageMathCloudを使ってみようという話をします。

SageMathCloudとは?

すごく簡単に説明すると、クラウド(ブラウザ)上で、SageMathやiPython Notebook、LaTeX、Terminalなどが実行できます。

f:id:Akiniwa:20141203214031p:plain

そもそもSageMathってなに?って思うかもしれませんが、SageMathはPythonベースのオープンソースMathematicaみたいな数式処理のソフトウェアです。Mathematicaにはまだまだ適わない部分が多いらしい(使ったことない)ですが、無料というのはありがたいです。 SageMathは例によって環境構築ではまったりすることがあるので、SageMathCloudを利用すれば、いつでもどこでも使えて良い感じです。

SageMathを使ってみる

では、早速SageMathを使ってみます。大体チュートリアルに載ってることなので、詳しくはチュートリアル読んでくださいな。-> A Guided Tour — Sage Tutorial v6.4

  • 変数宣言 (sympyみたいにシンボリックな操作ができます。)
x = var('x')
  • 方程式を解く
solve(x^2 + 3*x + 2, x)
-> [x == -2, x == -1]
diff(sin(x), x)
-> cos(x)
integral(cos(x), x)
-> sin(x)
  • 2次元プロット
x, y=var("x", "y")
contour_plot(-1/(sqrt(3*x**2+5*y**2))-1/(sqrt((2*x+0.4)**2+(y+0.2)**2))-1/(sqrt((2*x-0.2)**2+(2.5*y-0.5)**2)), (x,-1,1), (y,-1,1))

f:id:Akiniwa:20141203212328p:plain

  • 3次元プロット
x, y, z = var('x, y, z')
implicit_plot3d(x^2 + y^2 + z^2 - 1, (x,-1, 1), (y,-1, 1), (z,-1, 1))

f:id:Akiniwa:20141203211020p:plain

ほんとにちょっと触っただけですが、他にも行列演算とか多項式の展開とか色々できます。 わたしは物理シミュレーションをするときに、ポテンシャルを微分したり、等ポテンシャル面を描いたりするのに使います。