SymPyとチャート式で復習する高校数学I - PyLadies Tokyo Meetup #6 LT

お前だれよ?

本日のテキスト

数学1の範囲

  1. 式の計算
  2. 実数, 一次不等式
  3. 集合と命題
  4. 2次関数
  5. 2次方程式と2次不等式
  6. 三角比
  7. 三角形への応用
  8. データの分析

本日の復習範囲

  • 式の計算
  • 一次不等式
  • 2次関数
  • 2次方程式と2次不等式

SymPyとは

SymPyとは、数式処理(symbolic mathematis)を行うためのパッケージです。

pipインストール可能です。

pip install sympy

次のような計算が数式処理の最もベーシックなものです。


In [1]:
import sympy

# 記号の定義
x, y = sympy.symbols('x y')

# 式の定義
expr = 2 * x + y
print('定義された式:\n', expr)

# x, y に数値を代入
a1 = expr.subs([(x, 4), (y, 3)])
print('\nx=4, Y=3の場合:\n', a1)

a2 = expr - y
print('\nexpr から y をマイナス:\n', a2)


定義された式:
 2*x + y

x=4, Y=3の場合:
 11

expr から y をマイナス:
 2*x

式の計算

次の計算をせよ。(13頁, 基礎例題5)

(1) $(5x^3+3x-2x^2-4)+(3x^3-3x^2+5)$


In [2]:
l = 5 * x ** 3 + 3 * x - 2 * x ** 2 - 4
r = 3 * x ** 3 - 3 * x ** 2 + 5
l + r


Out[2]:
8*x**3 - 5*x**2 + 3*x + 1

答え: $8x^3-5x^2+3x+1$

式の展開

次の式を展開せよ。(20頁, 基礎例題10)

(1) $(x-2y+1)(x-2y-2)$

(2) $(a+b+c)^2$


In [3]:
sympy.expand((x-2*y+1)*(x-2*y-2))


Out[3]:
x**2 - 4*x*y - x + 4*y**2 + 2*y - 2

答え: $x^2-4xy-x+4y^2+2y-2$


In [4]:
a, b, c = sympy.symbols('a b c')

sympy.expand((a+b+c)**2)


Out[4]:
a**2 + 2*a*b + 2*a*c + b**2 + 2*b*c + c**2

答え: $a^2+b^2+c^2+2ab+2bc+2ca$

因数分解

次の式を因数分解せよ(26頁, 基礎例題14)

(1) $x^2+8x+15$


In [5]:
sympy.factor(x**2+8*x+15)


Out[5]:
(x + 3)*(x + 5)

答え: $(x+3)(x+5)$

不等式

次の不等式を解け。(58頁, 基礎例題35)

(1) $4x+5>2x-3$


In [6]:
from sympy.solvers.inequalities import reduce_rational_inequalities

reduce_rational_inequalities([[4 * x + 5 > 2 * x -3]], x)


Out[6]:
And(-4 < re(x), im(x) == 0, re(x) < oo)

答え: $x > -4$

二次関数

次の二次関数のグラフをかけ。(109頁, 基礎例題66)

(1) $y = 2x^2-4x-1$


In [7]:
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np 

x = np.arange(-1.8, 4 , 0.2) 
y = 2 * x ** 2 - 4 * x - 1

plt.style.use('ggplot')

plt.plot(x,y) 
plt.axhline(y=0, color='gray')
plt.axvline(x=0, color='gray') 
plt.xlabel("x")
plt.ylabel("y")

plt.show()


(SymPyは出てきませんでした..)

2次方程式

次の2次方程式を解け。(141頁, 基礎例題85)

(1) $x^2-x-20$

(2) $x^2-12x-36$


In [45]:
import sympy
from sympy.solvers import solve

x = sympy.symbols('x')

expr = x**2 - x - 20
solve(expr, x)


Out[45]:
[-4, 5]

答え: $x = -4, 5$


In [43]:
expr = x**2 - 12 * x + 36
solve(expr, x)


Out[43]:
[6]

答え: $x = 6$