ラベル 数学 の投稿を表示しています。 すべての投稿を表示
ラベル 数学 の投稿を表示しています。 すべての投稿を表示

2012年9月23日

Sympy を利用して連立方程式(system of equations)を解く

概要

Python の 記号計算ライブラリ「SymPy」を利用して、連立方程式を解いてみる。

連立一次方程式

サンプルとして、以下の三元連立一次方程式を解いてみる。
System of equations

以下のように「solve」を利用して解ける。solve を利用する場合、右辺が0になるように入力する必要がある。 解は dict で出力される。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest

from sympy import (
    Rational,
    solve,
    symbols,
)


class TestSolve(unittest.TestCase):

    def test_system_of_equations(self):
        """連立一次方程式"""
        x, y, z = symbols('x y z')
        self.assertEqual(
            {x: 1, y: -2, z: -2},
            solve([3 * x + 2 * y - z - 1,
                   2 * x - 2 * y + 4 * z + 2,
                   -x + Rational(1, 2) * y - z],
                  [x, y, z]))

if __name__ == '__main__':
    unittest.main()

連立二次方程式

サンプルとして、以下の二元連立二次方程式を解いてみる。
System of quadratic equation

連立一次方程式と同じように解ける。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest

from sympy import (
    solve,
    symbols,
)


class TestSolve(unittest.TestCase):

    def test_system_of_equations(self):
        """連立二次方程式"""
        x, y = symbols('x y')
        self.assertEqual(
            [(-7, 2), (-1, -1)],
            solve([x + 2 * y + 3,
                   x ** 2 + 4 * x * y + y ** 2 + 3 * y - 3],
                  [x, y]))

if __name__ == '__main__':
    unittest.main()

まとめ

連立方程式以外も様々なことができるが、サンプルがすぐに思いつかないので、思いついたらまた書く。

2012年9月21日

Python で記号計算をするためのライブラリ Sympy

概要

「記号計算」とは、代数式のように「x」を利用したり、「cos」などの三角関数、「log」等、「記号」を利用する種類の計算のこと。
Sympy は Python で記号計算をするためのライブラリ。

インストール

インストールは pip 等で行なう。

pip install sympy

ドキュメント

詳細なマニュアルが「SymPy documentation」に存在する。
日本語で概要が説明されている文書が、「2.3. Sympy : Python での記号計算 — Scipy lecture notes」に存在しているので、英語が苦手な人はこちらを読んだ方がわかりやすい。

使ってみる

動作を確認するには分数が簡単。
サンプルは「from sympy import *」が利用されいている場合が多いが、以下のサンプルでは自分の好みで「from sympy import Rational」としている。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest


class TestSymPy(unittest.TestCase):

    def test_rational(self):
        from sympy import Rational
        self.assertEqual(
            '「1 / 2」を Python2 で計算すると「0」になるが、'
            'Sympy の Rational を利用すると「1/2」になる',
            '「1 / 2」を Python2 で計算すると「{elm}」になるが、'
            'Sympy の Rational を利用すると「{rat}」になる'
            .format(elm=1 / 2, rat=Rational(1, 2)))

if __name__ == '__main__':
    unittest.main()

isympy

インタラクティブに計算を実施する場合は、「isympy」コマンドで起動すると良い。ipython をラッピングしたコマンドで、計算結果の出力も工夫される。

LaTex出力

Sympy には LaTeX 数式を出力する機能がある。「latex」メソッドを利用する。

latex(Rational(1, 2))
\frac{1}{2}

まとめ

Sympy は機能が非常に多い。ここで、全機能を解説する時間はないので、マニュアルを読んで必要な機能を自分で探してみると良い。

2012年9月20日

書籍「Think Stats」に出てくる数式(mathematical expression)をLaTeXで書いてみる

概要

書籍「Think Stats」に出てくる数式をいくつかLaTeXで書いてみる。
数式は「LaTeXiT」で確認している。

Think Stats ―プログラマのための統計入門

Think Stats ―プログラマのための統計入門

  • 作者:Allen B. Downey
  • 出版社/メーカー:オライリージャパン
  • 価格:¥ 2,100
  • AmazonAmazon.co.jp(AA)

算術平均

「\mu=\frac{1}{n}\sum_{i}x_i」
Latex mean

分散

「\sigma^2=\frac{1}{n}\sum_{i}(x_i-\mu)^2」
Latex variance

指数分布のCDF

「\operatorname{CDF}(x)=1-e^{-\lambda x}」
Latex dist cdf

指数分布のCDFの補関数(CCDF)

「y \approx e^{-\lambda x}」
Latex dist ccdf

指数分布のCDFの補関数(CCDF)で両辺の対数を取る

「\log y \approx -\lambda x」
Latex dist ccdf log

正規分布の確率密度関数

\operatorname{PDF}_{normal}(x)=
\frac{1}{\sigma \sqrt{2 \pi}} \exp
\begin{bmatrix}
- \frac{1}{2}
\begin{pmatrix}
\frac{x - \mu}{\sigma}
\end{pmatrix}
^2
\end{bmatrix}
Latex pdf

まとめ

LaTeXの数式はかなり簡単に複雑な数式が綺麗に書けて良い。書籍「Think Stats」に出てくる数式はそこまで複雑な物は無いが、かなり高度な数式も書ける。

参考サイト

簡単にLaTeXの数式の書き方を確認したいなら、「Short Math Guide for LaTeX(PDF)」を見るのが一番良い。
日本語ではLaTeXの数式に特化して全てが完結にまとまっているサイトが存在しないように見える。必要に応じていろんなサイトを参照すると良い。

2012年9月19日

Mac OS X で数式(mathematical expression)作成環境構築

概要

数学の勉強をしている場合、Keynote とか Evernote とかに数式を書くために、コンピュータ上で数式を作成したくなる場合がある。
ここでは綺麗な数式を作成するための、数式作成環境を構築する。

LaTeXiTのインストール

Mac OS X で数式作成する場合、「LaTeXiT」を使うと簡単。
ダウンロードしてdmgの中にある「LaTeXiT.app」を「アプリケーション」フォルダに移動。

LaTeXのインストール

LaTeXiT は数式生成に LaTeX のコマンドを利用するので、LaTeX をインストールする。

JIS X0212 for pTeX」から「Drag & Drop UpTeX(UTeX20111010.dmg)」と「ESP Ghostscript 7.07.1(espgs090829.dmg)」をダウンロードする。
「Drag & Drop UpTeX」のdmbの中に「UpTeX.app」があるので、「アプリケーション」フォルダに移動。
「ESP Ghostscript」は「ESPGhostscript.pkg」があるので、これをダブルクリックしてインストール。

X11のインストール

LaTeXiT が利用する gs コマンドが X11 を要求するので、「XQuartz」から dmg をダウンロードし、中にある「XQuartz.pkg」をダブルクリックしてインストールする。

LaTeXiTの設定

LaTeXiT.appを起動する。
LaTeX関連ファイルが見付からないダイアログが出るが、とりあえず全部キャンセル。
Latexit start

「環境設定」の「プログラム」でパスを設定する。
Latexit setting

  • pdfLaTeX:「/Applications/UpTeX.app/teTeX/bin/pdflatex」
  • Ghostscript(gs):「/usr/local/bin/gs」
  • ps2pdf:「/usr/local/bin/ps2pdf」
gs を設定する際に X11 を要求された場合、「アプリケーション」「ユーティリティ」の中に「XQuartz.app」が存在するか確認。存在しない場合は X11のインストールをする。

数式を生成してみる

「y=f(x)」のような簡単な数式を入力して、「LaTeX it!」ボタンを押すと、設定に問題なければ、数式が生成される。
Latexit
数式の部分をドラッグ&ドロップすると保存できる。保存のフォーマットも選択可能。

まとめ

あとは、LaTeXの数式表現を覚える必要がある。
LaTeXの数式はかなり高度な数式を簡単に記述できるし、かなり将来まで使える知識なので、勉強しておいて損はない。

2012年9月18日

高校数学の復習に「カラー版 忘れてしまった高校の数学を復習する本」

概要

統計を人に教える機会があった。教える相手が高校レベルの数学がちゃんとしてないと、どんなに噛み砕いて説明しても理解してもらうのは難しい。また、教える方も補足として高校レベルの数学を教える必要がある場合がある。
統計とか、確立とかをちゃんと理解したければ、高校数学を復習した方が良い。

お勧め書籍

以下の本は、表紙が微妙だが内容は結構ちゃんとしている。高校レベルの数学を全部網羅しているわけではないが、とりあえずこの範囲を知っていると良いのではないだろうか。

カラー版 忘れてしまった高校の数学を復習する本

カラー版 忘れてしまった高校の数学を復習する本

  • 作者:柳谷 晃
  • 出版社/メーカー:中経出版
  • 価格:¥ 1,575
  • AmazonAmazon.co.jp(AA)

まとめ

数学できないと、数学の重要度が理解できない。わかっているつもりにならず、基礎をちゃんと復習すると新しい発見があったりする。