# 基本
sympyは高性能ですが全般的に遅いです．  
巨大な数式のsymplify（整理）等はどんでもない時間がかかります．  


```python
import sympy as sy  # sympyのインポート
```

# シンボリック変数の定義
`変数 = sy.Symbol("変数")`  
または  
`変数1, 変数2 = sy.symbols("変数1, 変数2")`  
で定義する．  


```python
t = sy.Symbol('x')
x, y, z = sy.symbols('x, y, z')
```

シンボリック変数を使って数式を定義できる


```python
expr = x + y**2 + z
expr
```




$\displaystyle x + y^{2} + z$



sin関数などの一般的な関数も使える．


```python
expr2 = sy.sin(x) * sy.exp(y) * x**2
expr2
```




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



## 微分
`sy.diff(数式, 変数)`を使う


```python
sy.diff(expr, y)
```




$\displaystyle 2 y$




```python
sy.diff(expr2, x)
```




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



## 積分
`sy.integrate()`を使う．  


```python
sy.integrate(expr, x)
```




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




```python
sy.integrate(expr2, y)
```




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



****
## ベクトル，行列の定義
numpyと似た形式


```python
X = sy.Matrix([
    [x],
    [y]
])
X
```




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




```python
Y = sy.Matrix([
    [x, x*y],
    [z**3, x*sy.sin(z)],
])
Y
```




$\displaystyle \left[\begin{matrix}x & x y\\z^{3} & x \sin{\left(z \right)}\end{matrix}\right]$



## ヤコビ行列
ヤコビ行列は  
```python
ベクトルA.jacobian(ベクトルB)
```  
で計算できる．  


```python
V = sy.Matrix([
    [x**2 + z*sy.log(z)],
    [x + sy.sin(y)]
])
V.jacobian(X)
```




$\displaystyle \left[\begin{matrix}2 x & 0\\1 & \cos{\left(y \right)}\end{matrix}\right]$



b3363faa1ea7604c1512cf4845e7fd0bda861ed7
ipynb
Jupyter Notebook
symbolic/python_src/basic.ipynb
YoshimitsuMatsutaIe/abc_2022
9c6fb487c7ec22fdc57cc1eb0abec4c9786ad995
MIT
symbolic/python_src/basic.ipynb
YoshimitsuMatsutaIe/abc_2022
9c6fb487c7ec22fdc57cc1eb0abec4c9786ad995
MIT
symbolic/python_src/basic.ipynb
YoshimitsuMatsutaIe/abc_2022
9c6fb487c7ec22fdc57cc1eb0abec4c9786ad995
MIT
Qwen/Qwen-72B
1. YES
2. YES