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

## お前だれよ？

- [@iktakahiro](https://twitter.com/iktakahiro)
- blog: https://librabuch.jp
- [PyData.Tokyo](https://pydata.tokyo) オーガナイザー
- Python 2014 チュートリアル PyData 担当
- Pythonエンジニア養成読本 第四章PyData入門 執筆

<a href="http://www.amazon.co.jp/gp/product/4774173207/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4774173207&linkCode=as2&tag=librabuch-22"></a>

## 本日のテキスト

<a href="http://www.amazon.co.jp/gp/product/4410102044/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4410102044&linkCode=as2&tag=librabuch-22"></a>

## 数学1の範囲

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

## 本日の復習範囲

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

## SymPyとは

[SymPy](http://www.sympy.org/en/index.html)とは、数式処理（symbolic mathematis）を行うためのパッケージです。

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

```sh
pip install sympy
```

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


```python
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)$


```python
l = 5 * x ** 3 + 3 * x - 2 * x ** 2 - 4
r = 3 * x ** 3 - 3 * x ** 2 + 5
l + r
```




    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$


```python
sympy.expand((x-2*y+1)*(x-2*y-2))
```




    x**2 - 4*x*y - x + 4*y**2 + 2*y - 2



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


```python
a, b, c = sympy.symbols('a b c')

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




    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$


```python
sympy.factor(x**2+8*x+15)
```




    (x + 3)*(x + 5)



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

## 不等式

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

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


```python
from sympy.solvers.inequalities import reduce_rational_inequalities

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




    And(-4 < re(x), im(x) == 0, re(x) < oo)



答え: $x > -4$

## 二次関数

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

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


```python
%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$


```python
import sympy
from sympy.solvers import solve

x = sympy.symbols('x')

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




    [-4, 5]



答え:　$x = -4, 5$


```python
expr = x**2 - 12 * x + 36
solve(expr, x)
```




    [6]



答え:　$x = 6$

15cee8b8db1145ff1096111c209fbd737fe81958
ipynb
Jupyter Notebook
pyladies/pyladies-tokyo-6-lt-sympy.ipynb
iktakahiro/ipython-notebook-sample
80789b4aa2fcde0b6464b80a360eaefe3b9dc90d
MIT
pyladies/pyladies-tokyo-6-lt-sympy.ipynb
iktakahiro/ipython-notebook-sample
80789b4aa2fcde0b6464b80a360eaefe3b9dc90d
MIT
pyladies/pyladies-tokyo-6-lt-sympy.ipynb
iktakahiro/ipython-notebook-sample
80789b4aa2fcde0b6464b80a360eaefe3b9dc90d
MIT
Qwen/Qwen-72B
1. YES
2. YES