# 行列表示の導出

吉田勝俊（宇都宮大学）

## 参考情報
- [SymPyで代数演算してみる - Qiita](https://qiita.com/zawawahoge/items/1be137a8147902a5e6cb)
- [Matrices (linear algebra) &#8212; SymPy 1.6.2 documentation](https://docs.sympy.org/latest/modules/matrices/matrices.html)


```python
import sympy as sym #数式処理ライブラリ
sym.init_printing() #数式を綺麗に表示する設定
```

## Sympy 変数・関数


```python
x1, x2, x3 = sym.symbols('x_1 x_2 x_3')
a1, a2, a3 = sym.symbols('a_1 a_2 a_3')
th = sym.Symbol(r'\theta') #\t が予約後なので，rをつけてraw文字列とした．

xx = sym.Matrix([x1,x2,x3]) #xベクトル
aa = sym.Matrix([a1,a2,a3]) #aベクトル
```


```python
display(xx) #printの代わりにdisplayを使うと，数式を綺麗に表示してくれる．
display(aa)
display(th)
```


```python
#数ベクトル空間の標準基底ベクトル
ee1 = sym.Matrix([1,0,0])
ee2 = sym.Matrix([0,1,0])
ee3 = sym.Matrix([0,0,1])

ee1,ee2,ee3
```

## 算法4.2 （外積の行列表示）

外積で作った関数


```python
def F(xx):
  return aa.cross(xx)

display(F(xx))
```

標準基底を代入した値


```python
F(ee1), F(ee2), F(ee3)
```

行列表示（以上を列ベクトルとする行列）


```python
CrossMatrix = sym.Matrix([[F(ee1),F(ee2),F(ee3)]])

CrossMatrix
```

## 算法4.5 （正射影の行列表示）

正射影ベクトルを求める関数


```python
def F(xx):
  return ( aa.dot(xx) )*aa

display(F(xx))
```

標準基底を代入した値


```python
F(ee1), F(ee2), F(ee3)
```

行列表示（以上を列ベクトルとする行列）


```python
ProjMatrix = sym.Matrix([[F(ee1),F(ee2),F(ee3)]])

ProjMatrix
```

テンソル積$\boldsymbol{a}\boldsymbol{a}^T$に一致するか


```python
aaT = aa*( aa.transpose() )

aaT
```


```python
sym.simplify(ProjMatrix - aaT) #テンソル積との差をチェック
```

## 算法4.7 （回転行列）

回転変換を表す関数


```python
def R(xx):
  axa = ( aa.dot(xx) )*aa
  return axa + sym.cos(th)*(xx - axa) + sym.sin(th)*( aa.cross(xx) )

display(R(xx))
```

標準基底を代入した値


```python
R(ee1), R(ee2), R(ee3)
```

行列表示（以上を列ベクトルとする行列）


```python
RotMatrix = sym.Matrix([[R(ee1),R(ee2),R(ee3)]])

RotMatrix
```

62b5daf14bd61c6c6b05653c9be82666a848c5a9
ipynb
Jupyter Notebook
m3d/Colab/Python_4.1.ipynb
ktysd/_colab_test
0ffc4a63dce926e21647f4497269ac90f4eaa941
MIT
m3d/Colab/Python_4.1.ipynb
ktysd/_colab_test
0ffc4a63dce926e21647f4497269ac90f4eaa941
MIT
m3d/Colab/Python_4.1.ipynb
ktysd/_colab_test
0ffc4a63dce926e21647f4497269ac90f4eaa941
MIT
Qwen/Qwen-72B
1. YES
2. YES