中高数学のための Sympy のサンプル集/Python で数学を

この記事は17分で読めます

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては中高数学駆け込み寺,
大学数学に関しては現代数学観光ツアーという無料の通信講座があります.
ご興味のある方はぜひお気軽にご登録ください!

諸注意

ここまでの記事はタグ Pythonでの数学物理 を参考にしてほしい.
特に Jupyter のインストールを前提にしている.
今回の分は GitHub のこのページを見てもらうと早い.

GitHub 上の ipynb をダウンロードし,
Jupyter を実行してローカルで実行しながら遊ぶのが楽だろう.

またコードの 2 重管理はしんどいので,
いったんここに書いたコードは更新しない.
最新版コードは直接 GitHub を見てほしい.
時間が経つと動かなくなることもあるだろう.
そのときはご指摘頂けると嬉しい.

はじまる前に

この Web 上の連続記事は現代数学観光ツアーで中高の数学をやってほしいという要望がいくつかあったので,
それへの対応としてプログラミングとの連携も絡めた展開としてはじめている.
その中で numpy, scipy 以上に sympy がよさそうなことに気付き,
それで sympy の勉強をはじめた.

今回は sympy でどんなことができるかのイメージ作りのため,
コードサンプルを載せていく回だ.
これなら中高の数学との連携が取りやすいことをイメージしてもらえるだろう.

一応 Jupyter 利用を前提にしているので,
まずは Jupyter 上での TeX 出力のためのコードを置いておく.

次のコードを読み込ませてほしい.
ついでに Sympy で使うシンボルも定義している.
シンボルといった言葉も追々説明していく.
要は方程式の未知変数みたいなものだと思ってほしい.

from sympy import *
from IPython.display import display
init_printing(use_unicode=True)

 # シンボル定義
x = Symbol('x')
y = Symbol('y')

サンプル

 # display で出力すると mathjax 連携してくれて素敵
display(x + y + x - 4 * y)

a = Integral(cos(x)*exp(x), x)
display(Eq(a, a.doit()))

結果は次の通り.

$$2 x – 3 y$$

$$\int e^{x} \cos{\left (x \right )}\, dx = \frac{e^{x}}{2} \sin{\left (x \right )} + \frac{e^{x}}{2} \cos{\left (x \right )}$$

参考サイト

何と言ってもまずは公式だろう.

次のサイトは sympy の結果をランダムで色々教えてくれる。
適当に眺めるのにすごくいい。

次のサイトにアクセスすれば sympy をインストールしなくてもオンラインで使える。

単純なサンプルその 2

今回はとにかくコードをずらずらと並べている.
まずはこれでどんなことをやれるのか,
やれそうか感じ取ってほしい.
細かい解説は今後の記事を楽しみにしていてほしい.

import sympy
display(sympy.sqrt(3))

 # 勝手に計算やってくれるので素敵
display(sympy.sqrt(8))

from sympy import symbols
x, y = symbols('x y')
expr = x + 2*y
display(expr)
display(expr + 1)
display(expr - x)
display(x*expr)

from sympy import expand, factor
expanded_expr = expand(x*expr)
display(expanded_expr)
display(factor(expanded_expr))

from sympy import *
x, t, z, nu = symbols('x t z nu')

print('計算: diff(sin(x)*exp(x), x)')
display(diff(sin(x)*exp(x), x))

print('計算: integrate(exp(x)*sin(x) + exp(x)*cos(x), x)')
display(integrate(exp(x)*sin(x) + exp(x)*cos(x), x))

print('計算: integrate(sin(x**2), (x, -oo, oo))')
display(integrate(sin(x**2), (x, -oo, oo)))

print('計算: limit(sin(x)/x, x, 0)')
display(limit(sin(x)/x, x, 0))

print('計算: solve(x**2 - 2, x)')
display(solve(x**2 - 2, x))

print('微分方程式の解: y" - y = e ** t')
f = Function('f')
display(dsolve(Eq(f(t).diff(t, t) - f(t), exp(t)), f(t)))

print('行列の固有値: Matrix([[1, 2], [2, 2]]).eigenvals()')
display(Matrix([[1, 2], [2, 2]]).eigenvals())

print('ベッセル関数を球ベッセル関数で書く')
print('besselj(nu, z).rewrite(jn)')
display(besselj(nu, z).rewrite(jn))

print('LaTeX にする')
print('latex(Integral(cos(x)**2, (x, 0, pi)))')
display(latex(Integral(cos(x)**2, (x, 0, pi))))

結果は次の通りだ.

$$\sqrt{3}$$

$$2 \sqrt{2}$$

$$x + 2 y$$

$$x + 2 y + 1$$

$$2 y$$

$$x \left(x + 2 y\right)$$

$$x^{2} + 2 x y$$

$$x \left(x + 2 y\right)$$

計算: diff(sin(x)*exp(x), x)

$$e^{x} \sin{\left (x \right )} + e^{x} \cos{\left (x \right )}$$

計算: integrate(exp(x)*sin(x) + exp(x)*cos(x), x)

$$e^{x} \sin{\left (x \right )}$$

計算: integrate(sin(x**2), (x, -oo, oo))

$$\frac{\sqrt{2} \sqrt{\pi}}{2}$$

計算: limit(sin(x)/x, x, 0)

$$1$$

計算: solve(x**2 - 2, x)

$$\left [ – \sqrt{2}, \quad \sqrt{2}\right ]$$

微分方程式の解: y" - y = e ** t

$$f{\left (t \right )} = C_{2} e^{- t} + \left(C_{1} + \frac{t}{2}\right) e^{t}$$

行列の固有値: Matrix([[1, 2], [2, 2]]).eigenvals()

$$\left { \frac{3}{2} + \frac{\sqrt{17}}{2} : 1, \quad – \frac{\sqrt{17}}{2} + \frac{3}{2} : 1\right }$$

ベッセル関数を球ベッセル関数で書く
besselj(nu, z).rewrite(jn)

$$\frac{\sqrt{2} \sqrt{z}}{\sqrt{\pi}} j_{\nu – \frac{1}{2}}\left(z\right)$$

LaTeX にする
latex(Integral(cos(x)**2, (x, 0, pi)))

'\\int_{0}^{\\pi} \\cos^{2}{\\left (x \\right )}\\, dx'

数値の計算

任意精度での計算ができる.
無限大もシンボリックに表現できるのも便利.
あとで紹介するように極限も取れる.

display(pi**2)
display(pi.evalf())
display((pi + exp(1)).evalf())

print('sqrt(2) を 100 桁まで評価')
display(sqrt(2).evalf(100))

print('無限大')
display(oo)
display(oo > 99999)
display(oo + 1)

上記のコード片の実行結果は次の通り.

$$\pi^{2}$$

$$3.14159265358979$$

$$5.85987448204884$$

$$1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573$$

無限大

$$\infty$$

$$\mathrm{True}$$

$$\infty$$

展開

ここでは三角や複素数への展開だけだが,
もちろん多項式の展開もできる.
テイラー展開や漸近展開もある.
これも今後の解説を楽しみにしていてほしい.
三角関数の展開があるというだけでもかなり可能性を感じてもらえると思っている.

display(expand(x + y, complex=True))
display(I*im(x) + I*im(y) + re(x) + re(y))
display(expand(cos(x + y), trig=True))
display(cos(x)*cos(y) - sin(x)*sin(y))

上記のコード片の実行結果は次の通り.

$$\Re{x} + \Re{y} + i \Im{x} + i \Im{y}$$

$$\Re{x} + \Re{y} + i \Im{x} + i \Im{y}$$

$$- \sin{\left (x \right )} \sin{\left (y \right )} + \cos{\left (x \right )} \cos{\left (y \right )}$$

$$- \sin{\left (x \right )} \sin{\left (y \right )} + \cos{\left (x \right )} \cos{\left (y \right )}$$

多項式

というわけでお待ちかねの多項式の処理だ.
展開だけではなく因数分解もある.
多項式の割り算や最大公約元などの処理も一通りある.

expr = (x + y)**5
display(expr)
print('多項式を展開してくれる: (x + y)**5')
display(expand(expr))

a = (x + x**2)/(x*sin(y)**2 + x*cos(y)**2)
print('式を単純化: (x + x**2)/(x*sin(y)**2 + x*cos(y)**2)')
display(simplify(a))

print('多項式の割り算: div(x**2 - 4 + x, x-2)')
display(div(x**2 - 4 + x, x-2))
print('最大公約数: gcd(2*x**2 + 6*x, 12*x)')
display(gcd(2*x**2 + 6*x, 12*x))
print('最小公倍数: lcm(2*x**2 + 6*x, 12*x)')
display(lcm(2*x**2 + 6*x, 12*x))
print('因数分解: factor(x**4/2 + 5*x**3/12 - x**2/3)')
display(factor(x**4/2 + 5*x**3/12 - x**2/3))
print('多変数の因数分解: factor(x**2 + 4*x*y + 4*y**2)')
display(factor(x**2 + 4*x*y + 4*y**2))
print('根を求める: solve(x**2 + 4*x*y + 4*y**2)')
display(solve(x**2 + 4*x*y + 4*y**2))
print('根を求める: solve(x**2 + 4*x*y + 4*y**2, y)')
display(solve(x**2 + 4*x*y + 4*y**2, y))
print('複雑な根を求める: solve(x**2 + 4*x + 181, x)')
display(solve(x**2 + 4*x + 181, x))
print('無理数解: solve(x**3 + 4*x + 181, x)')
display(solve(x**3 + 4*x + 181, x))
print('多変数多項式を解く: solve_poly_system([y**2 - x**3 + 1, y*x], x, y)')
display(solve_poly_system([y**2 - x**3 + 1, y*x], x, y))

ちょっと長いけれども上記のコード片の実行結果は次の通り.

$$\left(x + y\right)^{5}$$

多項式を展開してくれる: (x + y)**5

$$x^{5} + 5 x^{4} y + 10 x^{3} y^{2} + 10 x^{2} y^{3} + 5 x y^{4} + y^{5}$$

式を単純化: (x + x**2)/(x*sin(y)**2 + x*cos(y)**2)

$$x + 1$$

多項式の割り算: div(x**2 - 4 + x, x-2)

$$\left ( x + 3, \quad 2\right )$$

最大公約数: gcd(2*x**2 + 6*x, 12*x)

$$2 x$$

最小公倍数: lcm(2*x**2 + 6*x, 12*x)

$$12 x^{2} + 36 x$$

因数分解: factor(x**4/2 + 5*x**3/12 - x**2/3)

$$\frac{x^{2}}{12} \left(2 x – 1\right) \left(3 x + 4\right)$$

多変数の因数分解: factor(x**2 + 4*x*y + 4*y**2)

$$\left(x + 2 y\right)^{2}$$

根を求める: solve(x**2 + 4*x*y + 4*y**2)

$$\left [ \left { x : – 2 y\right }\right ]$$

根を求める: solve(x**2 + 4*x*y + 4*y**2, y)

$$\left [ – \frac{x}{2}\right ]$$

複雑な根を求める: solve(x**2 + 4*x + 181, x)

$$\left [ -2 – \sqrt{177} i, \quad -2 + \sqrt{177} i\right ]$$

無理数解: solve(x**3 + 4*x + 181, x)

$$\left [ \frac{4}{\left(- \frac{1}{2} – \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}}} – \frac{1}{3} \left(- \frac{1}{2} – \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}}, \quad – \frac{1}{3} \left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}} + \frac{4}{\left(- \frac{1}{2} + \frac{\sqrt{3} i}{2}\right) \sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}}}, \quad – \frac{1}{3} \sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}} + \frac{4}{\sqrt[3]{\frac{4887}{2} + \frac{3 \sqrt{2654409}}{2}}}\right ]$$

多変数多項式を解く: solve_poly_system([y**2 - x**3 + 1, y*x], x, y)

$$\left [ \left ( 0, \quad – i\right ), \quad \left ( 0, \quad i\right ), \quad \left ( 1, \quad 0\right ), \quad \left ( – \frac{1}{2} – \frac{\sqrt{3} i}{2}, \quad 0\right ), \quad \left ( – \frac{1}{2} + \frac{\sqrt{3} i}{2}, \quad 0\right )\right ]$$

関数の評価

関数のある点での値を求めることもできる.
代入 (substitution) をしていると思ってほしい.

f = x**2 + 3*x + 2
display(f)
f1 = f.subs([(x, 1)])
display(f1)

上記コード片の実行結果は次の通り.

$$x^{2} + 3 x + 2$$

$$6$$

方程式をある変数で解く

ある範囲の方程式をある範囲で解くことができる.
いまのところ偏微分方程式の厳密解は 1 階線型までのようだ.
2 階の線型の厳密解表示があると便利ではある.
もちろん境界条件の指定などあってかなり難しいとは思っている.
Sympy 利用の有限要素法ライブラリもあるようだし,
それを紹介していこうとも思っている.
そこまで含めれば大学水準の話もかなりできそうで,
私自身勉強を進めていて楽しみでならない.

expr = cos(x) * ln(y) + 2/y
display(expr)
display(solve(expr, x))
display(solve(x**4 - 1, x))
display(solve([x + 5*y - 2, -3*x + 6*y - 15], [x, y]))

f = x**4 - 3*x**2 + 1
display(factor(f))
display(factor(f, modulus=5))

print('超越方程式も一部サポート')
display(solve(exp(x) + 1, x))

上記コード片の実行結果は次の通り

$$\log{\left (y \right )} \cos{\left (x \right )} + \frac{2}{y}$$

$$\left [ – \operatorname{acos}{\left (- \frac{2}{y \log{\left (y \right )}} \right )} + 2 \pi, \quad \operatorname{acos}{\left (- \frac{2}{y \log{\left (y \right )}} \right )}\right ]$$

$$\left [ -1, \quad 1, \quad – i, \quad i\right ]$$

$$\left { x : -3, \quad y : 1\right }$$

超越方程式も一部サポート

$$\left [ i \pi\right ]$$

$$\left(x^{2} – x – 1\right) \left(x^{2} + x – 1\right)$$

$$\left(x – 2\right)^{2} \left(x + 2\right)^{2}$$

論理式

よく論理的思考を学ぶには数学をやるのがいいと言われる.
その有効性に疑問をもってはいるが,
そういう勉強にも役立つライブラリではあるだろう.

display(satisfiable(x & y))
display(satisfiable(x & ~x))

上記コード片の実行結果は次の通り.

{y: True, x: True}

False

連立方程式を解く

連立方程式だって解けてしまう.
大学レベルから言えば行列で何とかしたいところだ.
そしてもちろん行列系の演算もある.
楽しみにしていてほしい.

x, y, z = symbols('x y z')
eq1 = x * y * z + 234
eq2 = x + y + z - 20
eq3 = 5 * x - y + 2 * z - 85
display(eq1)
display(eq2)
display(eq3)
solve([eq1,eq2,eq3], [x,y,z])

上記コード片の実行結果は次の通り.

$$x y z + 234$$

$$x + y + z – 20$$

$$5 x – y + 2 z – 85$$

$$\left [ \left ( 13, \quad -2, \quad 9\right ), \quad \left ( – \frac{9 \sqrt{17}}{4} + \frac{39}{4}, \quad – \frac{9 \sqrt{17}}{4} – \frac{21}{4}, \quad \frac{31}{2} + \frac{9 \sqrt{17}}{2}\right ), \quad \left ( \frac{9 \sqrt{17}}{4} + \frac{39}{4}, \quad – \frac{21}{4} + \frac{9 \sqrt{17}}{4}, \quad – \frac{9 \sqrt{17}}{2} + \frac{31}{2}\right )\right ]$$

線型代数

というわけで線型代数関係.

from sympy import Matrix
display(Matrix([[1,0], [0,1]]))

print('Numpy と違ってシンボルを含む行列が書ける')
x = Symbol('x')
y = Symbol('y')
A = Matrix([[1,x], [y,1]])
display(A)
display(A**2)

上記コード片の実行結果は次の通り.

$$\left[\begin{matrix}1 & 0\0 & 1\end{matrix}\right]$$

Numpy と違ってシンボルを含む行列が書ける

$$\left[\begin{matrix}1 & x\y & 1\end{matrix}\right]$$

$$\left[\begin{matrix}x y + 1 & 2 x\2 y & x y + 1\end{matrix}\right]$$

微分積分

極限

高校水準の微分積分をやるのに便利だと思ったのはこれを見たからだ.
もはやその筋 (計算機関係の人達) には当たり前のことなのだろう.
しかし最初に見るとけっこう感動する.
「こんな便利なものがフリーで使えるのか」と.
中高生はもちろんのこと, 大人もガンガン使ってほしい.

display(limit(tan(x), x, pi/2))
display(limit(tan(x), x, pi/2, dir="-"))
display(limit(sin(x)/x, x, 0))
 # 無限大は oo で
display(limit(sin(x)/x, x, oo))

上記コード片の実行結果は次の通り.

$$-\infty$$

$$\infty$$

$$1$$

$$0$$

微分

微分の結果も厳密にシンボリックに計算できる.
この辺が numpy, scipy よりも中高数学をやるのに優れた点.

display(diff((sin(x) * x**2) / (1 + tan(cot(x)))))
display(diff(cot(x*y), y))
display(diff(y(x)**2 - 5* sin(x), x))
f = x**2 / y + 2 * x - ln(y)
display(diff(f,x))

$$\frac{x^{2} \cos{\left (x \right )}}{\tan{\left (\cot{\left (x \right )} \right )} + 1} – \frac{x^{2} \sin{\left (x \right )}}{\left(\tan{\left (\cot{\left (x \right )} \right )} + 1\right)^{2}} \left(\tan^{2}{\left (\cot{\left (x \right )} \right )} + 1\right) \left(- \cot^{2}{\left (x \right )} – 1\right) + \frac{2 x \sin{\left (x \right )}}{\tan{\left (\cot{\left (x \right )} \right )} + 1}$$

$$x \left(- \cot^{2}{\left (x y \right )} – 1\right)$$

$$2 y{\left (x \right )} \frac{d}{d x} y{\left (x \right )} – 5 \cos{\left (x \right )}$$

$$\frac{2 x}{y} + 2$$

高階微分

高階微分も一気に計算できる.

print('第 3 引数で指定する')
display(diff(sin(2*x), x, 1))
display(diff(sin(2*x), x, 2))
display(diff(sin(2*x), x, 3))

上記コード片の実行結果は次の通り.

第 3 引数で指定する

$$2 \cos{\left (2 x \right )}$$

$$- 4 \sin{\left (2 x \right )}$$

$$- 8 \cos{\left (2 x \right )}$$

微分方程式

常微分方程式ならけっこういろいろ解ける.
ある程度は非線型もいけるし超幾何関数も扱える.
これも楽しみに待っていてほしい.

 # 未定義の関数を定義
f, g = symbols('f g', cls=Function)
display(f)
display(f(x))
display(f(x).diff(x, x) + f(x))

diffeq = f(x).diff(x) + f(x)
display(dsolve(diffeq, f(x)))

diffeq = f(x).diff(x, x) + f(x)
display(dsolve(diffeq, f(x)))

diffeq = f(x).diff(x, x, x) + f(x)
display(dsolve(diffeq, f(x)))

 # キーワード引数を使ってヒントを出すこともできる。
 # 方程式が可分離であることを知っていルナらキーワードとして hint='separable'
display(dsolve(sin(x)*cos(f(x)) + cos(x)*sin(f(x))*f(x).diff(x), f(x), hint='separable'))

display(dsolve(x * f(x).diff(x) + f(x) - f(x) ** 2))
display(dsolve(x * f(x).diff(x) + f(x) - f(x) ** 2, hint='Bernoulli'))

上記コード片の実行結果は次の通り.
ちょっと長い.

f

$$f{\left (x \right )}$$

$$f{\left (x \right )} + \frac{d^{2}}{d x^{2}} f{\left (x \right )}$$

$$f{\left (x \right )} = C_{1} e^{- x}$$

$$f{\left (x \right )} = C_{1} \sin{\left (x \right )} + C_{2} \cos{\left (x \right )}$$

$$f{\left (x \right )} = C_{3} e^{- x} + \left(C_{1} \sin{\left (\frac{\sqrt{3} x}{2} \right )} + C_{2} \cos{\left (\frac{\sqrt{3} x}{2} \right )}\right) \sqrt{e^{x}}$$

$$\left [ f{\left (x \right )} = – \operatorname{asin}{\left (\sqrt{\frac{C_{1}}{\sin^{2}{\left (x \right )} – 1} + 1} \right )} + \pi, \quad f{\left (x \right )} = \operatorname{asin}{\left (\sqrt{\frac{C_{1}}{\sin^{2}{\left (x \right )} – 1} + 1} \right )} + \pi, \quad f{\left (x \right )} = – \operatorname{asin}{\left (\sqrt{\frac{C_{1}}{\sin^{2}{\left (x \right )} – 1} + 1} \right )}, \quad f{\left (x \right )} = \operatorname{asin}{\left (\sqrt{\frac{C_{1}}{\sin^{2}{\left (x \right )} – 1} + 1} \right )}\right ]$$

$$f{\left (x \right )} = – \frac{C_{1}}{- C_{1} + x}$$

$$f{\left (x \right )} = \frac{1}{x \left(C_{1} + \frac{1}{x}\right)}$$

テイラー展開

お待ちかねテイラーて展開.

display(sin(x).series(x))
display(series(sin(x), x, pi/2))

上記コード片の実行結果は次の通り.

$$x – \frac{x^{3}}{6} + \frac{x^{5}}{120} + \mathcal{O}\left(x^{6}\right)$$

$$1 – \frac{1}{2} \left(x – \frac{\pi}{2}\right)^{2} + \frac{1}{24} \left(x – \frac{\pi}{2}\right)^{4} + \mathcal{O}\left(\left(x – \frac{\pi}{2}\right)^{6}; x\rightarrow\frac{\pi}{2}\right)$$

積分

不定積分も定積分もある.
出せるときには厳密解が出るので,
そこは numpy, scipy よりも便利.
もちろん実際にはきちんとした使い分けが必要だ.
中高の数学をやるならやはり sympy に軍配が上がるだろう.

print('積分')
print('integrate(6*x**5, x)')
display(integrate(6*x**5, x))

display(integrate(sin(x), x))
display(integrate(log(x), x))
display(integrate(2*x + sinh(x), x))

expr = cos(x) * ln(y) + 2/y
display(integrate(expr, x))
display(integrate(tan(x)))
display(integrate(2*x + y, y))
display(integrate(2*x + y, (x, 1, 3)))
display(integrate(2*x + y, (x, 1, 3), (y, 2, 4)))

print('特殊関数もいける')
display(integrate(exp(-x**2)*erf(x), x))

print('定積分')
display(integrate(x**3, (x, -1, 1)))
display(integrate(sin(x), (x, 0, pi/2)))
display(integrate(cos(x), (x, -pi/2, pi/2)))

print('広義積分')
display(integrate(exp(-x), (x, 0, oo)))
display(integrate(exp(-x**2), (x, -oo, oo)))
display(integrate(tan(x), (x, 0, pi/2)))

print('積分の厳密解')
display(integrate(1/(x**2 + 1), (x, 0, oo)))
display(integrate(exp(x) / (1 + exp(2 * x))))
display(integrate((2 * x+3)**7))

上記コード片の実行結果は次の通り.

積分
integrate(6*x**5, x)

$$x^{6}$$

$$- \cos{\left (x \right )}$$

$$x \log{\left (x \right )} – x$$

$$x^{2} + \cosh{\left (x \right )}$$

$$\frac{2 x}{y} + \log{\left (y \right )} \sin{\left (x \right )}$$

$$- \frac{1}{2} \log{\left (\sin^{2}{\left (x \right )} – 1 \right )}$$

$$2 x y + \frac{y^{2}}{2}$$

$$2 y + 8$$

$$28$$

特殊関数もいける

$$\frac{\sqrt{\pi}}{4} \operatorname{erf}^{2}{\left (x \right )}$$

定積分

$$0$$

$$1$$

$$2$$

広義積分

$$1$$

$$\sqrt{\pi}$$

$$\infty + \frac{i \pi}{2}$$

積分の厳密解

$$\frac{\pi}{2}$$

$$\operatorname{RootSum} {\left(4 z^{2} + 1, \left( i \mapsto i \log{\left (2 i + e^{x} \right )} \right)\right)}$$

$$16 x^{8} + 192 x^{7} + 1008 x^{6} + 3024 x^{5} + 5670 x^{4} + 6804 x^{3} + 5103 x^{2} + 2187 x$$

まとめ

まずは Sympy の射程距離や威力を知ってもらおうと思い,
サンプル集という形で出した.
これだけでも大人の復習というところでは遊び所がわかる人も多いだろう.
あなたは十分に可能性を感じてくれたかもしれない.

もちろんまだ「これをどう使っていけばいいの?」と思っている方もいるだろう.
あなたもそうかもしれない.
まずは私自身の勉強もあるので,
具体的な中高数学の復習などに入る前にライブラリの様子を細かく知る部分で記事を書いていく.
ぜひ今後も記事を追いかけてきてほしい.

今回の分は GitHub のこのページに ipython notebook としてまとまっているので,
ぜひそちらを Jupyter で実行しながら遊んでほしい.

Python で数学をするシリーズはタグにまとめている.
ぜひタグ Pythonでの数学物理を定期的に巡回して更新チェックや面白そうなところのつまみぐいをしてほしい.
かなり長いシリーズになりそうなので, まずは面白そうなところをつまみぐいして,
そこから徐々に体系的なところに入っていくのがいいだろう.
なるべく最初の負荷は楽にするべきだ.
楽しく勉強を続けるために工夫をしてみてほしい.


中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては中高数学駆け込み寺,
大学数学に関しては現代数学観光ツアーという無料の通信講座があります.
ご興味のある方はぜひお気軽にご登録ください!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

このサイトについて

はじめまして。相転移Pです。数学・物理の情報を中心にアカデミックな話題を発信しています。このサイトを見て興味があればぜひご連絡ください。 mail: phasetr@gmail.com LINE: oxg2753d
  • このエントリーをはてなブックマークに追加
  • LINEで送る

YouTube チャンネル登録

講義など動画を使った形式の方が良いコンテンツは動画にしています。ぜひチャンネル登録を!

メルマガ登録

メルマガ登録ページからご登録ください。 数学・物理の専門的な情報と大学受験向けのメルマガの 2 種類があります。

役に立つ・面白い記事があればクリックを!

記事の編集ページから「おすすめ記事」を複数選択してください。