SciPy を使ってみる

SciPy とは

  • Python で使える 「科学計算」 のツール
  • 行列とか、関数とか、、、
  • 固有値計算とか、スペクトル計算とか、

SciPy のインストール

Python (IDLE) を起動

  • >>> がプロンプト(キーボードから入力してね!という印)
  • from scipy import * ... scipy を使えるようにする
  • 行列
    • a = matrix([[1, 2], [3, 4]])
    • b = matrix([[3, 4], [5, 6]])
  • a [return] としてみる、
  • 同様に、 b, a+b, a-b, a*b, b*a も試す

逆行列とか、行列式とか

  • a.I ... 逆行列
  • a.T ... 転置行列
  • from scipy import linalg してから
  • linalg.det(a) ... 行列式(linalg は、線形代数計算を集めたもの)

プログラムファイルの作成

  • python フォルダの中で、右クリック -> 新規作成 -> テキストドキュメント
  • 名前を tsurukame.py に変更
    • 拡張子が表示される設定になっていることを確認しておくこと
  • tsurukame.py を右クリック -> 「Edit with IDLE」を選ぶ
  • tsurukame.py のウィンドウでプログラムを作成する

鶴亀算のプログラム

# -*- coding: utf-8 -*-
# tsurukame.py
from scipy import *
from scipy import linalg
a = matrix([[1, 1],     # 鶴, 亀 の頭
            [2, 4]])    # 鶴, 亀 の足
b = matrix([[10],       # 頭は 10 個
            [26]])      # 足は 26 本
x = linalg.solve(a, b)
print u"鶴は %d 羽, 亀は %d 匹" % (x[0], x[1])
  • 行の頭に余分の空白が入らないように注意

プログラムの実行

  • Run -> Run Module を選ぶ(OK to Save ? が出たら OK をクリック)
  • Python Shell のウィンドウに結果が表示される
  • 検算: a * x (に相当する計算) をやってみる

その他の連立方程式にも挑戦

もっと知りたい

卒論では

  • 1000次元くらいの行列計算をしたりします。
  • 固有値、固有ベクトルの計算とか、、、
  • その他にも多次元の問題はいっぱい。
    • 収入+地位+学歴+スポーツ歴+イケメン度 で 5次元のムコ選びとか

力試しに、やってみよう

  • 複合例題(鶴亀トンボ算2)
  • ツルと亀とトンボがいます。頭の個数が合計30個、足の数が118本、羽の数は74枚あります。ツル、亀、トンボはそれぞれ何体(匹/羽)ですか。
  • 鶴亀トンボ+キングギドラ 算も作ってみよう(尻尾も数える)