---
title: "Systems of Linear Equations with Matrix 行列で連立方程式"
author: "ryamada"
date: "2016年12月24日"
output:
html_document:
toc: true
toc_depth: 6
number_section: true
---
```{r setup, include=FALSE}
library(knitr)
opts_chunk$set(echo = TRUE)
library(rgl)
knit_hooks$set(rgl = hook_webgl)
```
変数の数と等式の数が等しいとき(一次独立なら)解が求まる。
それは、線形回帰において、Xが正方行列である、ということと、
Xに逆行列が存在するということに対応し、
解が求まるとは、$\sum_{i=1}^n (y_i-\hat{y_i})2 = 0$になるということ。
$$
y = X \mathbf{a}\\
\mathbf{a} = X^{-1}y
$$
```{r}
d <- 10
n <- 10
X <- matrix(rnorm(d*n),ncol=d)
a <- rnorm(d)
a
y <- X %*% a
a.est <- solve(X) %*% y
a.est
```
線形回帰では以下の計算をした。
$$
a = (X^TX)^{-1}X^T y
$$
やってみる。
```{r}
a.est2 <- solve(t(X)%*%X)%*%t(X)%*%y
a.est
a
```
確かに結果は同じ。
残差も0になっている。
```{r}
y.hat <- X %*% a.est
y-y.hat
sum((y-y.hat)^2)
```
つまり、
$$
X^{-1} = (X^TX)^{-1}X^T
$$
なわけである。
計算してみる。
```{r}
X1 <- solve(X)
X2 <- solve(t(X)%*%X) %*% t(X)
round(X1,8)
round(X2,8)
round(X1-X2,8)
```
確かにそうなっている。
もう一度式を見てみる。
$$
X^{-1} = (X^TX)^{-1}X^T
$$
両辺に右から$(X^T)^{-1}$を掛けて
$$
X^{-1}(X^T)^{-1} = (X^T X)^{-1}
$$
となる。
これは逆行列の一般的な性質
$$
(AB)^{-1} = B^{-1}A^{-1}
$$
について、$A=X^T$,$B=X$と置いたものである。
ちなみに、$AB$の逆行列$(AB)^{-1}$が$B^{-1}A^{-1}$であることは
$$
ABB^{-1}A^{-1}
$$
を二通りでかっこで区切ることで解る。
$$
ABB^{-1}A^{-1} = (AB)(B^{-1}A^{-1}) = A(BB^{-1})A^{-1}
$$
右辺は、
$$
A(BB^{-1})A^{-1} = A I A^{-1} = A A^{-1}=I
$$
これから中辺が
$$
(AB)(B^{-1}A^{-1})=I
$$
となるから、この式の意味することは
$AB$の逆行列が$B^{-1}A^{-1}$であることである。
連立方程式
$$
3a_1 + 2a_2 - 4a_3 = 4\\
2a_1 - 6a_2 + 3 a_3 = -1\\
5a_1 + a_2 + 4 a_3 = 3
$$
は
$$
\begin{pmatrix}4\\-1\\3 \end{pmatrix} = \begin{pmatrix}3,2,-4\\2,-6,3\\5,1,4\end{pmatrix}\begin{pmatrix}a_1\\a_2\\a_3\end{pmatrix}
$$
$$
y = \begin{pmatrix}4\\-1\\3 \end{pmatrix}\\
X = \begin{pmatrix}3,2,-4\\2,-6,3\\5,1,4\end{pmatrix}
$$
と置けば
$$
y = X\mathbf{a}
$$
となり、線形回帰の形である。
これを利用して、上の連立方程式を解け。
変数の数と等式の数が等しい連立方程式を作って、連立方程式として書き、それを行列を使って解け。