ゲーム数学 第11回

講師:大森田不可止



微分 (differential)





spaceshift + space での操作が快適です。

数式表示で文字化け、サイズがおかしい等の不具合があればリロード!





等速直線運動

等速直線運動

\[ 速度(m/s) = \frac{距離(m)}{時間(s)} \]

\[ 時間(s) = \frac{距離(m)}{速度(m/s)} \]

\[ 距離(m) = 速度(m/s) \times 時間(s) \]

平均速度

\[ \bar{v} = \frac{\vartriangle x}{t} = \frac{ x_j - x_i }{t} (m/s) \]

等速直線運動 (2)

\( v = 3 m/s \) とすると、距離 = 3t (m)。





等加速度運動

等加速度運動

一定の加速度を保って運動するとき等加速運動と呼びます。

重要な式

\( a = \frac{ \vartriangle v (m/s)}{ \vartriangle t (s)} (m/s^2) \tag{0}\)       加速度=速度の変化/時間 (加速度の定義)

\( v_j = v_i + at (m/s) \tag{1}\)       最終速度=初速度 + 加速度✕時間

\( \vartriangle x = v_i t + \frac{1}{2} a t^2 \tag{4}\)       移動距離=初速度✕時間+\(\frac{1}{2}\)✕加速度✕時間

等加速度運動(2)

平均の速度 \(\bar{v}\) を導入すると、以下の式も導ける。

\( \bar{v} = \frac{v_j + v_i}{2} \tag{2}\)

\( \vartriangle x = \bar{v} t = \frac{v_j + v_i}{2} t \tag{3}\)

\( v_j = v_i + at\) から、\(t= \frac{v_j -v_i}{a}\) が、導かれるので、これを上の式に代入すると、

\( \vartriangle x = \frac{v_j + v_i}{2} \cdot \frac{v_j - v_i}{a} \)

\( (x+a)(x-a) = x^2 - a^2\) の式を適用して整理すると、

\(v_j ^ 2 = v_i ^ 2 + 2h \vartriangle x \tag{5}\)

等加速度運動(3)

\( a = 9.8 (m/s^2)\) なら、初速度をゼロとすると、\( v = 9.8t (m/s) \)、\( x = \frac{1}{2} \times 9.8 t^2\)。

等加速度運動(4)

(1)~(4) の式は、グラフからも導くことができる。

自由落下

等加速度運動の一番身近な実例が、物体の落下です。落下は重力により、下向きに 重力加速度 \(g=9.8 (m/s^2)\) の加速度が生じます。つまり、等加速度運動の加速度 \(a\) が \(g\) で置き換えられます。

ただし、空気抵抗が無視できる程度に小さい場合です。

\[ v_y = gt \quad (m/s^2 \cdot s = m/s)\]
\[ y = \frac{1}{2}gt^2 \quad (m/s^2 \cdot s^2 = m) \]


等速度運動と等加速度運動

等速直線運動

時間微分
  変位 → 速度
  (m)     (m/s)
\(\Delta x = 2t \ (m)\)
     \(v=2 \ (m/s)\)
時間微分
  速度 → 加速度
  (m/s)     (m/s2) \(v = 2 \ (m/s)\)
     \( h = 0 (m/s^2)\)

等加速度運動

時間微分
  変位 → 速度
  (m)     (m/s)
\(\Delta x = \frac{1}{2}t^2 \ (m)\)
     \(v=t \ (m/s)\)
時間微分
  速度 → 加速度
  (m/s)     (m/s2) \(v = t \ (m/s)\)
     \( a = 1 (m/s^2)\)




微分の概要

微分とは

「微分」とは、簡単に言えば「変化の割合を調べること」です。位置の1秒あたりの変化が速度、速度の1秒あたりの変化が加速度といった具合です。これは、グラフで見た場合の、その点における「傾き」になります。

平均の速度→瞬間の速度

平均速度

\[ \bar{v} = \frac{\vartriangle x}{t} = \frac{ x_j - x_i }{t} (m/s) \]

  • 平均の速度は、ある一定の時間 \(t \ (s)\) に、変位 \(\Delta x (m)\) だけ動いた場合に、\(\frac{\Delta x}{t}\) で得られる値です。
  • ここで、t を限りなく0に近付けた時の値を計算できれば、「瞬間の速度」を定義できます。
  • すなわち、下記の値です。
  • \[ v(t) = \lim_{t \to 0} \frac{x(t)}{t}\]

微分の定義

関数 \(f(x)\) の \(x=a\) における微分係数は以下で定義する。 \[ f'(a) = \lim_{h \to 0} \frac{f(a+h) - f(a) }{h}\]

微分係数を計算できる関数を \(f(x)\) の導関数 \(f'(t)\) と呼ぶ。

導関数の表記は以下の様に様々存在する。 \[ \frac{d f(x)}{dx} , \quad \frac{d}{dx}f(x), \quad f'(x), \quad \dot f\]

微分の操作の逆が 積分 (integration)。詳しくは次回。微分がグラフの「傾き」を求める操作だとすると、積分はグラフの「面積」を求める操作になる。積分により、微分の結果から、元の関数を求めることができる。

プログラムでの微分

  • 数学上での定義は厳密である必要があるので「限りなく0に近付けた極限値」という言い回しになります。プログラムで考える場合は「充分小さな値」で必要な精度で計算できれば良いので、例えば \(h = 0.0001\) で計算します。
  • \[ f'(a) = \frac{f(a+0.0001) - f(a) }{0.0001}\]

  • 具体的には、\( f(x) = x^2 \) とすると、
  • \[ f'(1) = \frac{1.0001^2 - 1^2 }{0.0001} = \frac{1.00020001 - 1 }{0.0001} \simeq 2\]

    \[ f'(2) = \frac{2.0001^2 - 2^2 }{0.0001} = \frac{4.00040001 - 4 }{0.0001} \simeq 4\]

数値微分




具体的な微分計算

\(\color[rgb]{0.8,0,0}x^2\) の微分

\[ \begin{align} \frac{d}{dx}x^2 &= \lim_{h \to 0}\frac{(x+h)^2 - x^2}{h} \\ &= \lim_{h \to 0}\frac{x^2 + 2hx + h^2 - x^2}{h} \\ &= \lim_{h \to 0}\frac{2hx + h^2}{h} \\ &= \lim_{h \to 0}(2x+h) \\ &= 2x \end{align} \]

パスカルの三角形

\((x+h)^n\) を展開した時の係数は、パスカルの三角形に対応する。

  • \((x+h)^2 = x^2 + \color[rgb]{0,0,1}2hx\color[rgb]{0,0,0} + h^2\)
  • \((x+h)^3 = x^3 + \color[rgb]{0,0,1}3hx^2\color[rgb]{0,0,0} + 3h^2x + h^3\)
  • \((x+h)^4 = x^4 + \color[rgb]{0,0,1}4hx^3\color[rgb]{0,0,0} + 6h^2x^2 + 4h^3x + h^4\)
  • \((x+h)^5 = x^5 + \color[rgb]{0,0,1}5hx^4\color[rgb]{0,0,0} + 10h^2x^3 + 10h^3x^2 + 5h^4x + h^5\)
  • \((x+h)^6 = x^6 + \color[rgb]{0,0,1}6hx^5\color[rgb]{0,0,0} + 15h^2x^4 + 20h^3x^3 + 16h^4x^2 + 6h^5x + h^6\)
  • \(\cdots\)

1 1  1 1  2  1 1  3  3  1 1  4  6  4  1 1  5 10 10  5  1 1  6 15 20 15  6  1 1  7 21 35 35 21  7  1 1  8 28 56 70 56 28  8  1 1  9 36 84 126 126 84 36  9  1 1 10 45 120 210 252 210 120 45 10 1

\(\color[rgb]{0.8,0,0}x^n\) の微分

\[ \begin{align} \frac{d}{dx}x^n &= \lim_{h \to 0}\frac{(x+h)^n - x^n}{h} \\ &= \lim_{h \to 0}\frac{x^n + nhx^{n-1} + h^2( \cdots ) - x^n}{h} \\ &= \lim_{h \to 0}\frac{nhx^{n-1} + h^2( \cdots )}{h} \\ &= \lim_{h \to 0}(nx^{n-1} + h(\cdots)) \\ &= nx^{n-1} \end{align} \]

\(\color[rgb]{0.8,0,0}x^n\) の微分: 具体例

  1. \(\frac{d}{dx}x^0 = \frac{d}{dx}1 = 0\) (定数の微分は0)
  2. \(\frac{d}{dx}x^1 = 1\)
  3. \(\frac{d}{dx}x^2 = 2x\)
  4. \(\frac{d}{dx}x^3 = 3x^2\)
  5. \(\frac{d}{dx}x^4 = 4x^3\)
  6. \(\frac{d}{dx}x^5 = 5x^4\)
  7. \(\frac{d}{dx}x^6 = 6x^5\)
  8. \(\cdots\)

三角関数の微分

\[ \frac{d}{dx} \sin x = \cos x, \quad \frac{d}{dx} \cos x = - \sin x \]

\(\color[rgb]{0.8,0,0}\sin x\) の微分(1)

準備: \(\frac{\sin x}{x} \) で \(x \to 0\)の極限が1になることの証明

図において面積に以下の関係式が成立する。
三角形 OAB < 扇型 OAB < 三角形 OBC
すなわち、
\(\frac{1}{2} \sin x < \frac{1}{2} x < \frac{1}{2} \tan x \)

両辺を \( \sin x \) で割って逆数を取る。
\(\cos x < \frac{\sin x}{x} < 1 \)
ここで、\(x \to +0\) とすると、\(\cos x = 1\) なので、 \[ \lim_{x \to +0} \frac{\sin x}{x} = 1\]

sin

\(\color[rgb]{0.8,0,0}\sin x\) の微分(2)

\[ \begin{align} (\sin x)' &= \lim_{h \to 0} \frac{sin(x+h) - \sin x}{h} \\ &= \lim_{h \to 0} \frac{\sin x \cos h + \cos x \sin h - \sin x}{h} \\ &= \lim_{h \to 0} \frac{\sin x (\cos h -1) + \cos x \sin h}{h} \\ &= 0 + \cos x \cdot 1 = \cos x \end{align} \]

\[ \begin{align} \lim_{h \to 0} \frac{\cos h -1}{h} &= \lim_{h \to 0} \frac{(\cos h - 1)(\cos h + 1)}{h(\cos h + 1)} \\ &= \lim_{h \to 0} - \frac{\sin^2 h}{h^2} \cdot \frac{1}{1+\cos h} \cdot h = 0 \end{align} \]

加法定理

  • \(\sin(\alpha \pm \beta) = \sin \alpha \cos \beta \pm \cos \alpha \sin \beta\)
  • \(\cos(\alpha \pm \beta) = \cos \alpha \cos \beta \mp \sin \alpha \sin \beta\)

三角関数の微分

微分するごとに、1/4 波長ずつ遅れると見ることもできる。

\[ (\sin x)' = \cos x \]

\[ (\cos x)' = - \sin x \]

\[ (- \sin x)' = - \cos x \]

\[ (- \cos x)' = \sin x \]

diffsin

微分の基本公式(1)

  • \(f(x) = c\) (cは定数) ならば、\(f'(x) = 0 \)
  • \( (f(x) \pm g(x))' = f'(x) \pm g'(x) \)
  • \( (cf(x))' = cf'(x) \) (cは定数)

例) 多項式の各項を、個別に計算していけば良い。 \[\begin{align} (x^3+3x^2+5x-8)' &= (x^3)' + 3(x^2)' + 5(x)' - (8)' \\ &= 3x^2 + 6x + 5 \end{align} \]

微分の基本公式(2)

関数の積: \( (f(x)g(x))' = f'(x)g(x) + f(x)g'(x) \)

例) \( (x \sin x)' = x' \sin x + x(\sin x)' = \sin x + x \cos x \)

関数の商: \[ \left ( \frac{f(x)}{g(x)} \right )' = \frac{f'(x)g(x) - f(x)g'(x)}{(g(x))^2} \]

例) \[ \left ( \frac{\sin x}{x} \right )' = \frac{x \cos x - \sin x}{x^2}\]
\[ (\tan x)' = \left ( \frac{\sin x}{\cos x} \right )' = \frac{\cos^2 x - (- \sin^2 x)}{\cos^2 x} = \frac{1}{\cos^2 x}\]

合成関数の微分

  • 合成関数の微分: \( (f(g(x)))' = f'(g(x)) \cdot g'(x) \)
  • 別の記述方法: \(\frac{df(g(x))}{dx} = \frac{df(g)}{dg} \cdot \frac{g(x)}{dx} \)

    \[例)\ \ (\sin(x^2))' = \frac{\sin(x^2)}{d(x^2)} \cdot \frac{d(x^2)}{dx} = \cos(x^2) \cdot 2x = 2x \cos(x^2)\]

    \(x^2\) を \(u\) に置き換えると、 \[ \frac{\sin(x^2)}{dx} = \frac{\sin(u)}{du} \frac{du}{dx} = \cos(u) 2x = 2x \cos(x^2)\]

逆関数の微分

  • \( y=f(x) \) の逆関数を \( x = f^{-1}(y) \) とすると、\( \frac{f^{-1}(y)}{dy} = \frac{1}{\frac{f(x)}{dx}} \) \[別の記述方法: \frac{dg(y)}{dy} = \frac{1}{\frac{df(x)}{dx}}, \ \ \frac{dy}{dx} = \frac{1}{\frac{dx}{dy}}\]

例) \( y = \sqrt{x} \) の逆関数は、\(x = y^2\) なので、 \[ (\sqrt{x})' = \frac{1}{\frac{y^2}{dy}} = \frac{1}{2y} = \frac{1}{2 \sqrt{x}} \] \[ 別解: (\sqrt{x})' = (x^\frac{1}{2})' = \frac{1}{2} x^{-\frac{1}{2}} = \frac{1}{2 \sqrt{x}}\]

指数関数

  • \(a\) を正の実数とする。任意の実数 \(x\) について、\(a\) の \(x\) 乗 \(a^x\) の事を指数関数と呼ぶ。
  • 指数関数では以下が成り立つ。 \[ a^0 = 1 , \quad a^{-m} = \frac{1}{a^m} , \quad a^m \cdot a^n = a^{m+n} , \quad (a^m)^n = a^{mn} \] \[ a^\frac{1}{2} = \sqrt{a}, \quad a^\frac{1}{3} = \sqrt[3]{a}, \quad a^\frac{1}{n} = \sqrt[n]{a} \]

指数関数のグラフ

対数関数

  • \(a\) を正の実数で1でないとし、\(x\) を正の実数とする。このとき、\( x = a^y \) を満たすような実数 \(y\) はただひとつ存在し、これを \( \log_{a} x = y \) と書き対数関数と呼ぶ。対数関数は 指数関数の逆関数である。この時の \(a\) は、 「底(てい)」と呼ばれる。底として 10 を使うと、常用関数と呼ばれ、対数の値が1増えると、元の値は10倍になってる。
  • 対数関数では以下が成り立つ。
    1. \(\log_{a}x + \log_{a}y = \log_{a}(xy) \)
    2. \( \log_{a}x - \log_{a}y = \log_{a} \left ( \frac{x}{y} \right ) \)
    3. \( \log_{a} x^b = b \log_{a} x \)
    4. \( \frac{\log_{a} x}{\log_{a} y} = \log_{y}x \)
    5. \( \log_a x = \frac{1}{\log_x a} \)    (4)の \(a = x\) とする

ネイピア数

ネイピア数(ネイピアすう、英: Napier's constant)は数学定数の一つであり、自然対数の底である。記号として通常は e が用いられる。

\(e =\) math.e\(\cdots\)

コンピュータにおける指数表記では、e 又は E がネイピア数ではなく、10の指数表示なで注意が必要。

例: 6.022e23 → \(6.022 \times 10^{23} \) (アボガドロ数)

  1. \( e = \lim_{n \to \infty} \left(1+\frac{1}{n} \right )^n = \lim_{x \to 0}(1+x)^\frac{1}{x}\)
  2. \( e = 1 + \frac{1}{1!} + \frac{1}{2!} + \frac{1}{3!} + \cdots \)
  3. \( \lim_{x \to 0} \frac{e^x-1}{x} = 1 \)
  4. \( (e^x)' = e^x \)

ネイピア数2

  • 対数関数は底として e を用いることが多い。これを自然対数と呼ぶ。常用対数と混合して使われる場合は、\(ln\) と記される場合もあるが、基本的には \(log\) は自然対数であり、10を底とする常用対数の方を \( \log_{10}\) と書く場合が多い。
  • \( i = \sqrt{-1} \) を虚数(imaginary number)と呼ぶ。\(i^2 = -1\)。\( z = a + bi \) を複素数と呼ぶ。 \[ オイラーの公式: e^{ix} = \cos x + i \sin x \] という関係がある。従って、 \(e^{i\pi} = -1 \)となる。これは簡潔な式なのに、数学で重要な4つの定数、\(\pi,e,i,1\) が現れる。小川洋子の小説「博士の愛した数式」はこの式である。

ネイピア数は確率計算にもよく現れる。

  • 1/N の確率で当たるクジを N 回引いて1回以上当たる確率は、Nが大きくなると \(1-\frac{1}{e} = 0.63212\cdots \) に近付く。
  • N人のクラスでランダムに席替えを行った場合、以前の座席と変わらない人が一人もいない確率は、Nが大きくなると \(\frac{1}{e} = 0.36787944117\cdots\) に近付く。

\(\color[rgb]{0.8,0,0}(e^x)' = e^x\)

\[ \begin{align} (a^x)' &= \lim_{h \to 0} \frac{a^{x+h} - a^x}{h} \\ &= \lim_{h \to 0} \frac{a^h - 1}{h} a^x \end{align} \] \(a^h - 1 = m\) とおくと、\(a^h = 1 + m \ \Rightarrow \ h = \log_a(1+m)\) また、\(h \to 0\) のとき \(m \to 0\) \[ \begin{align} \lim_{h \to 0} \frac{a^h - 1}{h} a^x &= \lim_{m \to 0} \frac{m}{\log_a (m+1)} a^x \\ &= \lim_{m \to 0} \frac{1}{\frac{1}{m} \log_a (m+1)} a^x = \lim_{m \to 0} \frac{1}{\log_a \color[rgb]{0,0,1}(m+1)^\frac{1}{m}} \color[rgb]{0,0,0}a^x \\ &= \frac{1}{\log_a e} a^x = a^x \log_e a \end{align} \]

\(a=e\) とすれば、\( (e^x)' = e^x \) が求まる。微分しても、形が変わらない関数は今のところ、この関数のみ。

対数関数のグラフ

例題

  • 利息が年2%のお金を借りた場合。
  • 利息も含めた負債が2倍になるのは、\(1.02^x = 2\) なので、両辺の対数を取ると、\( x \log1.02 = \log 2\) なので、\[ x=\frac{\log 2}{\log 1.02} = \frac{0.693}{0.0198} = 35 \] 35年後となる。
  • 負債が千倍になるのは、 \[ x=\frac{\log 1000}{\log 1.02} = \frac{4.6}{0.0198} = 232.3 \] 230年後。昔は利率がもっと良くて、ご先祖様の200年前の預金が発見されて、利息も含めて巨額で大金持ちになるって小説やドラマがあった。

指数関数の微分

  • \((e^x)' = e^x\) を利用すると、微分の基本公式を使って以下の微分もできる。

\[ \begin{align} (a^x)' &= (e^{\log a^x})' \quad &(対数関数の定義、x = e^{\log x} より) \\\ &= (e^{x \log a})' \quad &(対数の公式 \log x^a = a \log x から) \\\ &= (x \log a)' \cdot e^{x \log a} &(y = e^u, u=x \log a として合成関数の微分公式から) \\\ &= a^x \log a \end{align} \]

対数関数の微分

  • \(e^y=x\) の両辺を \(x\) で微分すると、左辺は合成関数の微分を用いて \(\frac{dy}{dx}e^y = 1\) となり、\(e^y=x\) を再び使うと、\(\frac{dy}{dx} x = 1\) 従って、\((\log x)' = \frac{1}{x} \)
  • \((\log x)' = \frac{1}{x} \) から、以下も導ける。
  • \( \log_a x = \frac{\log x }{\log a} \) の関係から、
    \( \left ( \log_a x \right ) ' = \frac{1}{\log a} (\log x)' \)
    従って、\( (\log_a x)' = \frac{1}{x \log a} \)

微分の例題

\(f(x) = ( \log x)^3 \) を微分する。

  • \(y = u^3\) と \( u = \log x \) に分けて、合成関数の微分を適用する。
  • \( \frac{d}{du} u^3 = 3u^2 = 3 (\log x)^2 \)
  • \( \frac{du}{dx} = \frac{d}{dx} \log x = \frac{1}{x} \)
  • 従って、 \( \frac{dy}{dx} = \frac{dy}{du}\frac{du}{dx} = 3(\log x)^2\frac{1}{x} \)




数式処理ソフト Maxima

数式処理ソフトの利用

  • 世の中には「数式処理システム」というものが存在します。電卓代わりに計算もしてくれますが、重点は様々な数式を、数式として解釈して計算してくれる点です。
  • 微分積分は強力なツールですが、習熟するには時間がかかります。面倒なことは数式処理ソフトを利用して、積極的に手を抜いて、微積分を利用しましょう。
  • 数式処理ソフトは、MathematicaMaple(メイプル)SageMath 等が有名ですが、無料で高機能な Maxima を紹介します。
  • Maxima の紹介

数式処理ソフト Maxima 概要

  • Maxima(マキシマ)は、LISP で記述された数式処理システムである。GNU GPL に基づくフリーソフトウェアであり、現在も活発に開発が続けられている。Maple や Mathematica などの商用の数式処理システムと比べても遜色のない機能を持っている。
  • Maxima の起源は、マサチューセッツ工科大学の MACプロジェクトによって開発され、米国エネルギー省によって配布されていた Macsyma の1982年のバージョンを GNU Common Lisp に移植したものである。
  • 1982年から Macsyma の独自のバージョンを管理・維持していたビル・シェルター が、1998年にエネルギー省から GPLライセンスを適用することを条件に公開の許可を得た。こうして公開されたプログラムは Maxima と呼ばれることになり、2001年のシェルターの死後も開発者や利用者のグループによって独自に開発が続けられている。

Maxima のUSBメモリで起動

  • 以前に作った、USBメモリの PortableApps フォルダに以下のファイルを展開(2重にフォルダを作らないように注意)。アプリの管理→アイコンの更新でメニューに登録される。
  • MaximaPortable.zip

Maxima 基本操作

  • 大文字・小文字は区別しない。
  • 行の終了は ; (セミコロン)。ただし、wxMaxima では省略できる。出力が不要の時は $ で終了。
  • 行の実行は、[Shift] + [Enter] 。代入は、":" (コロン)。
  • プロンプトは、 (%i1) (%o1) の様に、input output ごとに連番が付く。 %i1 等でその文字列を呼び出すことができます。 % のみで、直前の出力を呼び出せます。
  • 終了は quit(); ただし、wxMaxima は、フロントエンドなのでメニューで終了する。
  • コメントは /* */
  • 四則演算: + - * / べき乗: ^ ** 階乗: ! 二重階乗: !!
  • 基本的に分数で計算されるので、小数で求めたい時は float bfloat を使う。
  • bfloat は、fpprec で精度を指定することができます。
  • (%i7) fpprec:50$ bfloat(%pi);
    (%o8) 3.1415926535897932384626433832795028841971693993751b0
    

Maxima 三角関数

式の展開

trigsimp()     三角関数・指数関数を含む式を簡単化する
trigreduce()   三角関数同士の積を減らして簡単化する
trigexpand()   加法定理や倍角公式を使って式を展開する

実行例

(%i29) trigsimp(cos(x)^2 - sin(x)^2);
(%o29) 2*cos(x)^2-1
(%i30) trigreduce(cos(x)^2 - sin(x)^2);
(%o30) (cos(2*x)+1)/2+cos(2*x)/2-1/2
(%i28) trigexpand(sin(x+y));
(%o28) cos(x)*sin(y)+sin(x)*cos(y)
(%i31)  limit(sin(x)/x, x, 0);
(%o31) 1    
\(\cos^2 x + \sin^2 x = 2\cos^2 x - 1 \) \( \cos^2 x - \sin^2 x = \frac{\cos 2x + 1}{2} + \frac{\cos 2x}{2} - \frac{1}{2} \) \( \sin (x+y) = \cos x \sin y + \sin x \cos y \) (加法定理) \( \lim_{x \to 0} \frac{\sin x}{x} = 1 \)

Maxima 行列計算

(%i40) A:matrix([1,2,3],[0,1,2],[0,0,1]);
(%i41) B:matrix([2,0,0],[1,3,0],[1,3,5]);
(%i42) A*B;
(%o42) ┌2 0 0┐
       │0 3 0│
       └0 0 5┘
(%i43) A.B;
(%o43) ┌ 7 15 15┐
       │ 3  9 10│
       └ 1  3  5┘
(%i44) determinant(A);
(%o44) 1
(%i45) invert(A);
(%o45) ┌ 1 -2  1┐
       │ 0  1 -2│
       └ 0  0  1┘
A に、3x3行列を入力。 B に、3x3行列を入力。 AとBの要素同士の乗算。 AとBの行列乗算。(ピリオドが演算子) 行列式 逆行列

Maxima 微分

diff の書式

diff(式 [, 変数1[, 変数1の微分回数[, 変数2, 変数2の微分回数, ...]]])

実行例

(%i1) diff(x^2,x);
(%o1) 2*x
(%i2) diff(x^3+2*x^2,x,2);
(%o2) 6*x+4
(%i3) diff(log(x),x);
(%o3) 1/x
(%i4) diff(cos(x),x);
(%o4) -sin(x)
(%i5) diff(sin(x^2)^2,x);
(%o5) 4*x*cos(x^2)*sin(x^2)
(%i6) diff(log(sin(x)), x);
(%o6) cos(x)/sin(x)
\( \frac{d}{dx} x^2 = 2x \) \( (x^3+2x^2)'' = 6x+4 \) (2階微分) \( (\log x)' = \frac{1}{x} \) \( (\cos x)' = -\sin x \) \( (\sin^2 x^2)' = 4x \cos x^2 \sin x^2 \) \( (\log( \sin x))' = \frac{\cos x}{\sin x} \)

Maxima 積分

integrate の書式

integrate(式, 変数, [開始, 終了])

実行例

(%i18) integrate(x,x);
(%o18) x^2/2
(%i19) integrate(sin(x),x);
(%o19) -cos(x)
(%i20) integrate(sin(x),x,0,%pi);
(%o20) 2
(%i22) integrate(exp(x),x, 0,10);
(%o22) %e^10-1
(%i23) float(%);
(%o23) 22025.46579480673
(%i24) integrate(log(x),x,1,100);
(%o24) 100*log(100)-99
(%i25) float(%);
(%o25) 361.5170185988092
\( \int x dx = \frac{x^2}{2} \) \( \int \sin x dx = -\cos x \) \( \int_0^\pi \sin x dx = 2 \) \( \int _0^{10} e^x dx = e^{10} - 1 \) \( e^{10} - 1 = 22025.46579480673 \) \( \int_1^{100} \log x dx = 100 \log 100 - 99\) \( 100 \log 100 - 99 = 361.5170185988092 \)

Python による数値計算・数式処理

  • Python の 対話インターフェイスを持った IPython 及び jupyter qtconsole は、AI分野で使われている。標準のライブラリでも、ある程度の数値計算はできるが、様々な外部ライブラリにより、科学技術計算、数式処理、行列演算、統計処理などが行えるようになっている。Maxima や R などの便利な部分が取り込まている。

ライブラリ

  • SciPy: 科学技術計算用ライブラリ。以下のライブラリを利用し、協調するためのコアライブラリを提供する。
  • NumPy: 数値計算のためのライブラリ。
  • pandas: Python Data Analysis Library: 行列に入っているデータの解析を行うライブラリ。
  • scikit-learn: 機械学習の様々なアルゴリズムを提供する。
  • Matplotlib: Python plotting: チャートプロットのためのライブラリ。
  • SymPy: 代数計算ライブラリ

Python による数値計算


In [1]: import numpy as np
In [2]: np.pi
Out[2]: 3.141592653589793
In [3]: np.e
Out[3]: 2.718281828459045
In [4]: np.exp(1)
Out[4]: 2.7182818284590451
In [5]: np.sin(1)
Out[5]: 0.8414709848078965
In [6]: np.cos(np.pi/3)
Out[6]: 0.50000000000000011
In [7]: np.log(10)
Out[7]: 2.3025850929940459
np.log2(10)
Out[8]: 3.3219280948873622
np.log10(10)
Out[9]: 1.0
In [10]: np.deg2rad(60)
Out[10]: 1.0471975511965976
numpy のインポート \( \pi = 3.141592653589793\) ネイピア数: 2.718281828459045 \( e^1 = 2.7182818284590451\) \( \sin 1 radian = 0.8414709848078965\) \( \cos \frac{\pi}{3} = 0.50000000000000011\) \( \log 10 = 2.3025850929940459\) \( \log_2 10 = 3.3219280948873622\) \( \log_{10} 10 = 1.0\) \( 60\ degree = 1.0471975511965976\ radian\)

Python による数値計算(2)


In [11]: import matplotlib.pylab as plt
    ...:
    ...: x = np.linspace(-np.pi, np.pi, 201)
    ...: plt.plot(x, np.sin(x))
    ...: plt.xlabel('Angle [rad]')
    ...: plt.ylabel('sin(x)')
    ...: plt.axis('tight')
    ...: plt.show()
    ...:

In [12]: A = np.array([[1,1],[0,1]])
In [13]: B = np.array([[2,0],[3,4]])
In [14]: A*B
Out[14]: array([[2, 0], [0, 4]])
In [15]: A.dot(B)
Out[15]: array([[4, 4], [3, 4]])

In [16]: from numpy import linalg as la
In [17]: la.inv(A)
Out[14]: array([[ 1., -1.], [ 0.,  1.]])
            
チャート表示 matplotlib のインポート チャート表示 行列定義 行列定義 要素ごとの乗算 行列の乗算 行列演算 linalg のインポート 逆行列の計算

Python による数式処理


In [17]: from sympy import *
In [18]: x = Symbol('x')
In [19]: y = Symbol('y')
In [20]: expand((x + y)**4)
Out[20]: x**4 + 4*x**3*y + 6*x**2*y**2 + 4*x*y**3 + y**4
In [21]: expand(cos(x + y), trig=True)
Out[21]: -sin(x)*sin(y) + cos(x)*cos(y)
In [22]: simplify(sin(x)/cos(x))
Out[22]: tan(x)
In [23]: limit(x**x, x, 0)
Out[23]: 1
In [24]: diff(sin(2*x), x)
Out[24]: 2*cos(2*x)
In [25]: diff(tan(x), x)
Out[25]: tan(x)**2 + 1
In [26]: series(cos(x), x)
Out[26]: 1 - x**2/2 + x**4/24 + O(x**6)
              
代数計算 sympy のインポート x を代数計算の変数として登録 x を代数計算の変数として登録 \( (x+y)^4 = x^4 + 4x^3y + 6x^2y^2 + 4xy^3 + y^4\) \( \cos(x+y) = -\sin x \sin y + \cos x \cos y\) \( \sin x / \cos x = \tan x \) \( \lim_{x \to 0} x^x = 1\) \( (\sin 2x)' = 2 \cos(2x)\) \( (\tan x)' = \tan^2 x + 1\) \( \cos x = 1-\frac{x^2}{2} + \frac{x^4}{24} + o(x^6) \) (テイラー展開)




物理と微積分

物理と微積分

  • 高校の教育課程から、微積分は大学で教える分野になった。
  • しかし、物理学というのは極少数の根本原理から、微積分を使って様々な成果を導き出すのが本来の姿である。
  • 力学での根本原理は、\( F = ma \) である。
  • 物体の運動で、変位の時間微分が速度になり、速度の時間微分が加速度になることは既に見てきた。

加速度から積分

  • 速度と加速度が変位の微分であるので、それぞれ以下のように記述します。\( v = \dot x, \quad a = \ddot x\)
  • 加速度が a であるとき、 \( \ddot x(t) = a\) と書けます。これを時間で積分します。
  • \( \dot x (t) = at + C \) この積分定数C は t=0 の時の値なので、初速度を表します。なので、\(v_0\) と書きましょう。更に時間積分します。積分定数は初期位置なので\(x_0\) とします。
  • \( x(t) = \frac{1}{2}at^2 + v_0 t + x_0 \)

運動量と力積

  • 運動の方程式は、\( m \ddot x(t) = F \) 両辺を t で積分します。
  • \( m \dot x = Ft + C\) ここで、Fは時間で変動しない定数としています。
  • 次にこれを\(t_1\) から \(t_2\) までの定積分にしてみます。 \[ \left [ m \dot x(t) \right ]_{t_1}^{t_2} = \left [ Ft \right ]_{t_1}^{t_2}\] \[ m \dot x(t_2) - m \dot x(t_1) = F ( t_2 - t_1) \]
  • 左辺が運動量の変化、右辺は力積を表します。

おまけ

物理学者ファインマンの語っていた話:
「最も感動的な発見の一つは、星たちを燃やし続けるエネルギーがどこから来るかわかったことである。 これを発見した男の一人は、星が輝き続けるために星の中では核反応が起こっているのだと気付いた夜、 ガールフレンドとデートをしていた。彼女は、『見て、星がすごく綺麗に輝いてる!』と言った。 そこで彼は言った。『あぁ、そしてたった今、僕は世界で唯一なぜあの星たちが輝くかを知ってる男なのさ。』 彼女は、彼のことをばかにして笑っただけであった。 彼女は、その瞬間星が輝く理由を知ってる唯一の男とデートしてることに関しては、別に感動しなかったのである。 まぁ、孤独であるというのは悲しいことだが、それがこの世界のありのままの姿である。」