2021년 2월 23일 화요일

CalculusMadeEasy_CH1

1-6

a=np.array([[1],[2],[3]])
la.norm(a)
3.7416573867739413

b=np.array([[-1],[-3],[-4]])
la.norm(b)
5.0990195135927845

c=np.array([[1],[-2],[4]])
la.norm(c)
4.58257569495584

1-7

a=np.array([[1],[2],[-3]])
b=np.array([[-4],[-3],[6]])
ab_dot=np.dot(a.T, b)
ab_dot
array([[-28]])
cos_ab=ab_dot/(la.norm(a)*la.norm(b))
cos_ab
array([[-0.95814028]])
rad=np.arccos(cos_ab)
rad
array([[2.85123057]])
theta=np.rad2deg(rad)
theta
array([[163.36347829]])

1-8

t=symbols("t")
A=Matrix([[2,2],[-3,-3],[4,4]])
B=Matrix([[2,1],[4,-1],[5,-1]])
x=Matrix([[1],[t]])
A*x
$\left[\begin{matrix}2 t + 2\\- 3 t - 3\\4 t + 4\end{matrix}\right]$
B*x
$\left[\begin{matrix}t + 2\\4 - t\\5 - t\end{matrix}\right]$
eq=(A*x).T*(B*x)
eq
[(4−𝑡)(−3𝑡−3)+(5−𝑡)(4𝑡+4)+(𝑡+2)(2𝑡+2)]
eq=expand(eq)
eq
[𝑡2+13𝑡+12]
solve(eq)
[{t: -12}, {t: -1}]

선형대수코드_CH2

2-4

다음 행렬 A, B에 대해 AB=BA가 성립하도록 a, b, c, d를 계산하세요.

a,b,c,d=symbols("a b c d")
A=Matrix([[a, b],[c,d]])
B=Matrix([[1, 2], [3, 4]])
ab=A*B
ab
$\left[\begin{matrix}a + 3 b & 2 a + 4 b\\c + 3 d & 2 c + 4 d\end{matrix}\right]$
ba=B*A
ba
$\left[\begin{matrix}a + 2 c & b + 2 d\\3 a + 4 c & 3 b + 4 d\end{matrix}\right]$
Eq(ab,ba)
$\left[\begin{matrix}a + 3 b & 2 a + 4 b\\c + 3 d & 2 c + 4 d\end{matrix}\right] = \left[\begin{matrix}a + 2 c & b + 2 d\\3 a + 4 c & 3 b + 4 d\end{matrix}\right]$
solve(Eq(ab,ba))
{a: -c + d, b: 2*c/3}


2-11

2$\times$2 정방행렬이 가역행렬이기 위해서는 다른 동일차원의 행렬과의 곱으로 항등행렬이 존제해야 합니다. 즉, 다음이 성립해야 합니다.

$\left[\begin{matrix}a&b\\c&d\end{matrix}\right] \left[\begin{matrix}x&y\\z&w\end{matrix}\right]=\left[\begin{matrix}1&0\\0&1\end{matrix}\right]$

위 선형 결합의 선형독립이 성립하기 위해서는 확대행렬의 rref에서 해의 존재를 보여야 합니다.

a,b,c,d,x,y,z,w=symbols("a,b,c,d,x,y,z,w")
A=Matrix([[a, b],[c,d]])
B=Matrix([[x, y], [z, w]])
I2=eye(2)
A

$\left[\begin{matrix}a & b\\c & d\end{matrix}\right]$

I2
$\left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]$

au=A.row_join(I2)
au
$\left[\begin{matrix}a & b & 1 & 0\\c & d & 0 & 1\end{matrix}\right]$

au.rref()
(Matrix([[1, 0, d/(a*d - b*c), -b/(a*d - b*c)],
        [0, 1, -c/(a*d - b*c), a/(a*d - b*c)]]),
        (0, 1))

위 결과는 다음과 같이 정리되므로 역행렬이 존재하기 위해서는 $ad-bc \neq 0$ 이어야 합니다.
$\begin{align}x&=\frac{d}{(ad - bc)}\\w&=\frac{a}{(ad - bc)} \end{align}$

2_12

다음 선형시스템의 해?

2x1 + 5x2 − 8x3 + 2x4 + 2x5  =  0
6x1 + 2x2 − 10x3 + 6x4 + 8x5  =  6
3x1 + 6x2 + 2x3 + 3x4 + 5x5  =  6
3x1 + x2 − 5x3 + 2x4 + 2x5  =  3
6x1 + 7x2 − 3x3 + 6x4 + 9x5  =  9
A=Matrix([[2,5,-8,2,2],[6,2,-10,6,8],[3,6,2,3,5],[3,1,-5,2,2],[6,7,-3,6,9]])
C=Matrix(5, 1, [0,6,6,3,9])
A
$\left[\begin{matrix}2 & 5 & -8 & 2 & 2\\6 & 2 & -10 & 6 & 8\\3 & 6 & 2 & 3 & 5\\3 & 1 & -5 & 2 & 2\\6 & 7 & -3 & 6 & 9\end{matrix}\right]$

C
$\left[\begin{matrix}0\\6\\6\\3\\9\end{matrix}\right]$

au=A.row_join(C)
au
$\left[\begin{matrix}2 & 5 & -8 & 2 & 2 & 0\\6 & 2 & -10 & 6 & 8 & 6\\3 & 6 & 2 & 3 & 5 & 6\\3 & 1 & -5 & 2 & 2 & 3\\6 & 7 & -3 & 6 & 9 & 9\end{matrix}\right]$

au.rref()
(Matrix([[1, 0, 0, 0, -3/7, 12/7],
        [0, 1, 0, 0, 0, 0],
        [0, 0, 1, 0, 1/7, 3/7],
        [0, 0, 0, 1, 2, 0],
        [0, 0, 0, 0, 0, 0]]),
        (0, 1, 2, 3))

위 결과를 정리하면 다음과 같습니다.

$\begin{align}x_1&=\frac{3}{7}x_5+\frac{12}{7}\\ x_2&=0\\x_3&=-\frac{1}{7}x_5+\frac{3}{7}\\x_4&=-2x_5\end{align}$

선형대수코드_CH3

3-1

(a)

A=Matrix([[1,2,4,4,-7], [0,1,1,2,-3],[1,0,2,0,-1]])
A.rref()
(Matrix([[1, 0, 2, 0, -1],
        [0, 1, 1, 2, -3],
        [0, 0, 0, 0, 0]]),
        (0, 1))

(b) 이 rref로부터 선도변수가 2개, 3개의 자유변수가 존재함을 알 수 있습니다. 그러므로 위 결과를 정리하면 다음과 같습니다. 즉, x1, x2는 자유변수 x3, x4에 따라 다양한 해를 가집니다. 즉, 자명하지 않은 해를 가지므로 선형 종속입니다.

$\begin{align}x_1&=-2x_3+1\\x_2&=-x_3-2x_4+3\end{align}$

(c)위 시스템이 자명한 해를 갖는 선형독립이기 위해서는 자유변수로 이루어진 방정식이 선형독립인 경우입니다. 다음과 같이 이 식은 선형독립이며 $x_3=-\frac{1}{2}$와 $x_4=-\frac{4}{5}$인 경우 선형독립이 됩니다.

B=Matrix([[-2, 0, -1], [-1, -2, -3]])
B.rref()
(Matrix([[1, 0, 1/2],
        [0, 1, 5/4]]),
        (0, 1))

3-2

x1,x2,x3,x4=symbols('x:4')
A=Matrix([[1,1,2,-1],[1,3,-1,2],[1,1,1,3],[1,2,1,1]])
x=Matrix([[x1],[x2],[x3],[x4]])
A*x
$\left[\begin{matrix}x_{0} + x_{1} + 2 x_{2} - x_{3}\\x_{0} + 3 x_{1} - x_{2} + 2 x_{3}\\x_{0} + x_{1} + x_{2} + 3 x_{3}\\x_{0} + 2 x_{1} + x_{2} + x_{3}\end{matrix}\right]$
b=Matrix([[0],[0],[0],[0]])
Au_a=A.row_join(b)
Au_a
$ \left[\begin{matrix}1 & 1 & 2 & -1 & 0\\1 & 3 & -1 & 2 & 0\\1 & 1 & 1 & 3 & 0\\1 & 2 & 1 & 1 & 0\end{matrix}\right]$
Au_a.rref()
(Matrix([[1, 0, 0, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 0, 0],
        [0, 0, 0, 1, 0]]),
        (0, 1, 2, 3))


B=Matrix([[1,2,3],[0,1,0],[1,0,3]])
x=Matrix([[x1],[x2],[x3]])
B*x
$\left[\begin{matrix}x_{0} + 2 x_{1} + 3 x_{2}\\x_{1}\\x_{0} + 3 x_{2}\end{matrix}\right]$
c=Matrix([[0],[0],[0]])
Au_b=B.row_join(c)
Au_b
$\left[\begin{matrix}1 & 2 & 3 & 0\\0 & 1 & 0 & 0\\1 & 0 & 3 & 0\end{matrix}\right]$
Au_b.rref()
(Matrix([[1, 0, 3, 0],
        [0, 1, 0, 0],
        [0, 0, 0, 0]]),
        (0, 1))


C=Matrix([[1,2,-1],[2,-1,3],[5,-4,3]])
x=Matrix([[x1],[x2],[x3]])
C*x
$\left[\begin{matrix}x_{0} + 2 x_{1} - x_{2}\\2 x_{0} - x_{1} + 3 x_{2}\\5 x_{0} - 4 x_{1} + 3 x_{2}\end{matrix}\right]$
c=Matrix([[0],[0],[0]])
Au_c=C.row_join(c)
Au_c
$\left[\begin{matrix}1 & 2 & -1 & 0\\2 & -1 & 3 & 0\\5 & -4 & 3 & 0\end{matrix}\right]$
Au_c.rref()
(Matrix([[1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 0]]),
        (0, 1, 2))

3-7

a=symbols('a')
A=Matrix([[1,1,1],[2,3,2],[2,3,a**2-5]])
b=Matrix([[2],[3],[a]])
solve(A.det())
[-sqrt(7), sqrt(7)]

aug=A.row_join(b)
print(aug)
Matrix([[1, 1, 1, 2],
        [2, 3, 2, 3],
        [2, 3, a**2 - 5, a]])


aug.rref()
(Matrix([[1, 0, 0, (3*a**2 - a - 18)/(a**2 - 7)],
        [0, 1, 0, -1],
        [0, 0, 1, (a - 3)/(a**2 - 7)]]),
        (0, 1, 2))


solve(3*a**2 - a - 18)
[1/6 - sqrt(217)/6, 1/6 + sqrt(217)/6]

3-9

다음 선형시스템의 해의 수를 결정
$\begin{align}x+2y-3z&=4\\4x+y+2z&=6\\x+2y+(a^2-19)z&=a\end{align}$

a=symbols("a", real=True)
A=Matrix([[1, 2, -3],[4, 1, 2],[1, 2, a**2-19]])
C=Matrix(3,1,[4, 6, a])
A
$\left[\begin{matrix}1 & 2 & -3\\4 & 1 & 2\\1 & 2 & a^{2} - 19\end{matrix}\right]$

au=A.row_join(C)
au
$\left[\begin{matrix}1 & 2 & -3\\4 & 1 & 2\\1 & 2 & a^{2} - 19\end{matrix}\right]$

au.rref()[0]
$\left[\begin{matrix}1 & 0 & 0 & \frac{k \left(- k \left(k + 2\right) - 4 k - 5\right) - \left(k + 2\right) \left(k \left(k + 2\right) - k \left(4 k + 4\right) + 1\right)}{- k \left(k + 2\right) - 4 k - 5}\\0 & 1 & 0 & \frac{- k \left(k + 2\right) + k \left(4 k + 4\right) + k \left(- k \left(k + 2\right) - 4 k - 5\right) - 1}{- k \left(k + 2\right) - 4 k - 5}\\0 & 0 & 1 & \frac{k \left(k + 2\right) - k \left(4 k + 4\right) + 1}{- k \left(k + 2\right) - 4 k - 5}\end{matrix}\right]$

solve(112 - 7*a**2, a)
[-4, 4]
sol=au.rref()[0][:,3]
sol
$\left[\begin{matrix}\frac{- 8 a^{2} + 7 a + 100}{112 - 7 a^{2}}\\\frac{- 10 a^{2} - 14 a + 216}{112 - 7 a^{2}}\\\frac{a - 4}{a^{2} - 16}\end{matrix}\right]$

sol.subs(a, 4)
$\left[\begin{matrix}\text{NaN}\\\text{NaN}\\\text{NaN}\end{matrix}\right]$

sol.subs(a, -4)
$\left[\begin{matrix}\tilde{\infty}\\\tilde{\infty}\\\tilde{\infty}\end{matrix}\right]$
  • a = 4 인 경우 해가 없음
  • a = -4 인 경우 무한히 많은 해가 존재
  • $a \neq \pm 4$인 경우 단일한 해 존재

3_10

u=Matrix([[5],[10]])
v=Matrix([[3], [11]])
w=Matrix([[-1],[-12]])
au=(u.row_join(v)).row_join(w)
au
$\left[\begin{matrix}5 & 3 & -1\\10 & 11 & -12\end{matrix}\right]$
latex(au.rref())


$\left( \left[\begin{matrix}1 & 0 & 1\\0 & 1 & -2\end{matrix}\right], \ \left( 0, \ 1\right)\right)$

벡터 u, v, w의 선형결합은 선형독립입니다. 즉, u, v는 w의 기저.
a=False
b=True

선형대수코드_CH6

1

 1. 행렬 A에 대해
(a) 0벡터에 대응하는 모든 정의역의 벡터?

A=np.array([[3,-2, 1, -1], [-3, 5, 2, 4],[-9, 12, 3, 11],[3, -8, -5, -7]])
print(A)
[[ 3 -2 1 -1]
   [-3 5 2 4]
   [-9 12 3 11]
   [ 3 -8 -5 -7]]


b=np.array([[0],[0],[0], [0]])
print(b)
[[0]
   [0]
   [0]
   [0]]


au=np.hstack([A, b])
print(au)
[[ 3 -2 1 -1 0]
   [-3 5 2 4 0]
   [-9 12 3 11 0]
   [ 3 -8 -5 -7 0]]


Matrix(au).rref()
(Matrix([[1, 0, 1, 0, 0],
        [0, 1, 1, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 0, 0, 0]]),
        (0, 1, 3))

Matrix(A).nullspace()
[Matrix([[-1],
        [-1],
        [ 1],
        [ 0]])]

위 코드에서 나타낸 것과 같이 Ax=b의 확대행렬 au의 기약행사다리꼴로부터 선형종속임을 알 수 있습니다. 그러므로 이 시스템의 해집합의 기저에 대한 스칼라배한 결과가 모두 x벡터가 될 수 있습니다.

$scalar \cdot \left[\begin{matrix}-1\\-1\\1\\0\end{matrix}\right]$

(b) 다음 벡터 b가 치역에 존재합니까?
$b = \left[\begin{matrix}-2\\14\\36\\-27\end{matrix}\right]$

b=np.array([[-2],[14],[36],[-27]])
print(b)
[[ -2]
   [ 14]
   [ 36]
   [-27]]


Matrix(np.hstack([A, b])).rref()
(Matrix([[1, 0, 1, 0, 0],
        [0, 1, 1, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 0, 0, 1]]),
        (0, 1, 3, 4))

위 결과에 의하면 4행 즉, $0x_1+0x_2+0x_3+0x_4=1$은 성립하지 않습니다. 그러므로 T(x)=b는 존재할 수 없습니다.

2

T: ℝ2  → ℝ2에서 벡터 u, T(u), v, T(v)는 다음과 같습니다.
(a) T(2u)?
 (b)변환 T의 표준행렬인 A?

(a) 선형변환의 경우 다음 두 조건이 만족합니다.
T(a+b)=T(a)+T(b)
T(ca)=cT(a), c: 스칼라
그러므로 T(2u)=2T(u)

u=Matrix([[-2], [2]])
v=Matrix([[-1],[-3]])
Tu=Matrix(2,1,[6,4])
Tv=Matrix(2,1, [7, 6])
2*Tu
$\left[\begin{matrix}12\\8\end{matrix}\right]$

(b) 표준행렬 A의 경우 다음 코드와 같이 sympy 모듈의 symbols() 함수를 사용하여 생성할 수 있습니다. 이 행렬을 사용하여 Au=Tu, Av=Tv의 식들을 계산하여 미지수 4개의 해를 결정합니다. 이 과정에서 solve() 함수를 적용합니다.

x1,x2,x3,x4=symbols('x1 x2 x3 x4', real=True)
A=Matrix([[x1, x2],[x3, x4]])
A
$\left[\begin{matrix}x_{1} & x_{2}\\x_{3} & x_{4}\end{matrix}\right]$

eq1=Eq(A*u, Tu)
eq1
$\left[\begin{matrix}- 2 x_{1} + 2 x_{2}\\- 2 x_{3} + 2 x_{4}\end{matrix}\right] = \left[\begin{matrix}6\\4\end{matrix}\right]$

eq2=Eq(A*v, Tv)
eq2
$ \left[\begin{matrix}- x_{1} - 3 x_{2}\\- x_{3} - 3 x_{4}\end{matrix}\right] = \left[\begin{matrix}7\\6\end{matrix}\right]$

sol=solve((eq1, eq2), (x1, x2, x3, x4))
sol
{x1: -4, x2: -1, x3: -3, x4: -1}

A1=A.subs(sol)
A1
$\left[\begin{matrix}-4 & -1\\-3 & -1\end{matrix}\right]$

#위 (a)를 확인
A1*2*u
$\left[\begin{matrix}12\\8\end{matrix}\right]$

3

다음 행렬 A의 대각화가 가능합니까?

다음 코드에서 각각의 결과 객체는 latex형태로 나타내기 위해 sympy의 Matrix() 객체로 전환하였습니다.

A=np.array([[6,-2, 0],[0, 6, 2],[0,0,6]])
Matrix(A)
$\left[\begin{matrix}6 & -2 & 0\\0 & 6 & 2\\0 & 0 & 6\end{matrix}\right]$
val, vec=la.eig(A)
D=np.diag(val)
Matrix(D)
$\left[\begin{matrix}6.0 & 0.0 & 0.0\\0.0 & 6.0 & 0.0\\0.0 & 0.0 & 6.0\end{matrix}\right]$

P=vec
Matrix(np.around(P, 10))
$\left[\begin{matrix}1.0 & 1.0 & -1.0\\0.0 & 0.0 & 0.0\\0.0 & 0.0 & 0.0\end{matrix}\right]$

Matrix(np.dot(np.dot(P, D), la.inv(P)))
$\left[\begin{matrix}6.0 & 0.0 & 0.0\\0.0 & 6.0 & 0.5\\0.0 & 0.0 & 6.0\end{matrix}\right]$

위 결과는 행렬 A와 같지 않습니다. 즉, 대각화는 가능하지 않습니다. 유사변환에 의한 분해에서 P는 가역행렬이어야 하지만 생성된 행렬 P의 경우 비가역행렬입니다.

np.around(la.det(P), 10)
0.0

4

다음 벡터들의 집합 {u1, u2, u3}는 직교집합입니까? 그렇다면 이 벡터들의 배수들로 이루어진 직교행렬을 나타내십시요?
$u_1=\left[\begin{matrix}2\\1\\-2\end{matrix}\right]\quad u_2=\left[\begin{matrix}1\\2\\2\end{matrix}\right]\quad u_3=\left[\begin{matrix}2\\-1\\1\end{matrix}\right]$
각 벡터가 직교 관계이면 내적이 0이므로 이들의 계산을 위해 각 벡터를 결합하여 행렬로 전환한 후 계산합니다. 또한 직교관계인 벡터들의 선형결합은 선형독립입니다.

x=np.array([[2,1,2],[1,2,-2],[-2,2,1]])
for i in range(2):
for j in range(i+1, 3):
print(f'{i} and {j}: {np.dot(x[:,i], x[:,j].T)}')
0 and 1: 0
   0 and 2: 0
   1 and 2: 0

Matrix(x).rref()
(Matrix([[1, 0, 0],
      [0, 1, 0],
      [0, 0, 1]]),
      (0, 1, 2))

위 결과에 의하면 위 벡터 집합은 직교집합입니다. 이들 벡터의 배수로 형성된 직교행렬은 각 벡터를 단위 행렬로 전환한 후 결합한 행렬로 나타낼 수 있습니다.

x=np.array([[2,1,2],[1,2,-2],[-2,2,1]], dtype=np.float64)
print(x)
[[ 2. 1. 2.]
   [ 1. 2. -2.]
   [-2. 2. 1.]]


x_n=la.norm(x, axis=0)
x_n
array([3., 3., 3.])
for i in range(3):
 x[:,i]=x[:, i]/x_n[i]
print(np.around(x, 3))
[[ 0.222 0.111 0.222]
   [ 0.111 0.222 -0.222]
   [-0.222 0.222 0.111]]

5

다음 행렬 A는 직교행렬입니까?

U=np.array([[2,5],[-5, 2]])
print(U)
[[ 2 5]
   [-5 2]]


print(U.T)
[[ 2 -5]
   [ 5 2]]


print(la.inv(U))
[[ 0.06896552 -0.17241379]
   [ 0.17241379 0.06896552]]

6

다음 부분공간 W의 직교 기저를 발견하세요?
$W=\left\{ \left[\begin{matrix}3\\-1\\2\\-1\end{matrix}\right], \quad \left[\begin{matrix}-5\\9\\-9\\3\end{matrix}\right] \right\}$

x1=np.array([[3, -1, 2, -1]]).reshape(4,1)
x2=np.array([[-5, 9, -9, 3]]).reshape(4,1)
print(x1)
[[ 3]
   [-1]
   [ 2]
   [-1]]


print(x2)
[[-5]
   [ 9]
   [-9]
   [ 3]]


v1=x1
v2=x2-np.dot(v1.T, x2)/np.dot(v1.T, v1)*v1
print(v2)
[[ 4.]
   [ 6.]
   [-3.]
   [ 0.]]

7

다음 행렬은 정규직교입니까?

A=Matrix([[Rational('4/5'), 0, Rational('3/5')], [Rational('3/5'), 0, -Rational('4/5')],[0,1,0]])
A
$ \left[\begin{matrix}\frac{4}{5} & 0 & \frac{3}{5}\\\frac{3}{5} & 0 & - \frac{4}{5}\\0 & 1 & 0\end{matrix}\right]$

A.det()
1
A.T
$\left[\begin{matrix}\frac{4}{5} & \frac{3}{5} & 0\\0 & 0 & 1\\\frac{3}{5} & - \frac{4}{5} & 0\end{matrix}\right]$

A.inv()
$ \left[\begin{matrix}\frac{4}{5} & \frac{3}{5} & 0\\0 & 0 & 1\\\frac{3}{5} & - \frac{4}{5} & 0\end{matrix}\right]$

위 결과와 같이 행렬은 선형독립이며 전치행렬과 역행렬이 같으므로 정규직교 행렬입니다.

CalculusMadeEasy_CH1

1-6 a=np.array([[1],[2],[3]]) la.norm(a) 3.7416573867739413 b=np.array([[-1],[-3],[-4]]) la.norm(b) 5.0990195135927845 c=np.array([[...