페이지

2018년 2월 6일 화요일

1.1 벡터와 공간

그럼 바로 벡터부터 시작합니다. 어떤 분야에서라도 '몇 개의 수치를 한 곳에 모아 한 덩어리로 다루고 싶다'라고 생각할 것입니다. 예를 들어 센서 열 개를 탑재한 로봇이라면 거기에서 얻을  수 있는 관측치 열 개를 한 덩어리로 다루고 싶을 것입니다.

1.1.1 우선적인 정의: 수치의 조합을 정리하여 나타내는 기법

수를 나열한 것을 벡터라고부릅니다. 예를 들면 다음과 같습니다.

성분수를 명시하고 싶을 때는 각각 2차원 벡터, 3차원 벡터, 5차원 벡터라고 부릅니다. 벡터라고 하면 특별히 미리 말하지 않는 한 이처럼 세로로 늘어선 '종벡터'라고 약속합니다. (2,3,5,8)처럼 가로로 늘어선 '횡벡터'도 있지만, 이 책에서는 종벡터를 기본으로 합니다. 단 종벡터를 정말로 세로로 표기하면 공간만 차지하므로 다음과 같이 표기하겠습니다.
(2,3,5,8)T

T는 전치를 뜻하는 Transpose의 T입니다.

1.1 왜 그렇게 종벡터를 좋아하나요?
'변수 x에 함수 f를 적용하다'라는 작업을 일반적으로 f(x)라고 씁니다. 이와 같은 어순으로 '벡터 x에 행렬 A(로 나타내지는 함수)를 적용하다'라는 작업을 행렬의 곱으로 Ax라 쓰기 위해서 입니다 (1.2.1절). 만약 x가 횡벡터라3.면 xA처럼 '대상 -> 작업'이라는 어순이 되어 버립니다. 단, 객체지향에 익숙한 사람에게는 f(x)보다는  x.f쪽이 자연스러울지도 모르겠습니다.

1.2 '수'란?

이 책에서는 '실수'또는 '복소수'로 읽어주세요. 실수인지 복소수인지에 따라 이야기가 달라지는 경우에는 정확히 명시해두었습니다. 또한, 성분이 실수인 것을 명시하지 않았다면 '실벡터'나 '실행렬'로 부르고, 성분이 복소수인 것을 명시하지 않았다면 '복소벡터'나 '복소행렬'로 부릅니다. 만약을 대비해 용어를 확인해 둡시다.

자연수        0, 1, 2, 3,.....
정수        ...., -2, -1, 0, 1, 2,.....
유리수      (정수)/(정수)로 표현되는 수
실 수       3.14159265....처럼 (무한)소수로 표현되는 수
복소수    허수 단위 i(i2 = -1)를 사용하여 (실수) + (실수)i로 표현되는 수

i라는 기호는 허수 단위 이외에 단순한 변수명으로 사용됩니다. 물론 문맥상 분명하므로 햇갈릴까 걱정하지 않아도 됩니다.

'데이터 구조'를 정의했으면 그에 대한 연산도 정의합시다. 벡터의 덧셈과 정수배를 다음과 같이 정의합니다.

덧셈   같은 차원의 벡터에 대해

정수배 임의의 수 c 에 대해


덧붙여서 말하자면 횡벡터의 덧셈과 정수배도 똑같이 정의합니다.

벡터는 x,v,e 처럼 두꺼운 글씨로 쓴다고 약속합니다. 그냥 숫자와 벡터를 확실히 구별하고 의식하도록 습관을 들이기 위해서 입니다. 스스로 노트에 정리할 때도 생략하지 말고 x,v,e 처럼 꼭 두꺼운 글자로 쓰도록 합니다. 특히 영벡터(모든 성분이 0인 벡터)를  o = (0, 0, ....0)T라는 기호로 씁니다. 또한, (-1)x 는 -x로 줄여 쓰고, x + (-y) 를 x -y라고 줄여 씁니다. 2x + 3y라고 쓰면 (2x) + (3y)처럼 정수배를 먼저 계산 합니다.

수 c, c'와 벡터 x,y에 대한 다음과 같은 성질은 '한분에' 알 수 있을 것입니다.

1.1.2 '공간'의이미지

2차원 벡터는 모눈종이 위에 점으로 찍을 수 있습니다(그림 1-1), (3,5)T 라면 '가로축 3, 세로축 5'의 위치에, (-2.2, 1.5)T라면 '가로축 -2.2, 세로축 1.5'의 위치에, 영벡터  o=(0,0)는 원점 0과 같은 상태입니다. 이와 같이 3차원 벡터도 3차원 공간 안 어딘가에 한 점으로 나타낼 수 있습니다.

이런 식으로위치에 대응시키는 것을 강조할 때는 '위치 벡터'라고 부르기도합니다.

위치라는 해석 외에 원점 0에서 그 위치를 향하는 '화살표'라는 해석도 있습니다. 덧셈과 정수배를 도형으로 해석하려면 화살표 쪽이 더 잘 어울립니다. 덧셈은 화살표의어어 붙임, 정수배는 길이를 늘이고 줄입니다(그림 1-2). '-3배'라면, 물론 '반대 방향으로 원래 길이의 3배'가 됩니다.

1.5 일차원 벡터란 그냥 숫자인가요?
일차원 벡터(a)와 수 a를 동일시하는 것은 자연스러운 현상이라고 생각합니다. 둘 모두 직선상의 한 점으로 나타나니까요. 단, 단위를 취하는 벙법에 따라 값이 변하는 것에는 주의합시다. 다음 절에서 설명할 '기저'와 관련된 문제입니다. 1.11, 1.20도 참고하세요. 또한, 대부분의 프로그래밍 언어에서는 '크기 1인 배열'과 '수치'는 다른 것이므로 명시적인 변환 작업이 필요할 것입니다.

1.1.3 기저

우주에는 위도 없고 오른쪽도 없다

앞 절에서 2차원 벡터를 평면 위의 점이라고 해석했습니다. 앞에서는 평면에 모눈종이 눈금이 그려져 있었습니다만, 본래 우주에는 위라든지 오른쪽이라든지 특별한 방향이란 게 없을 것입니다. 여기서 마음껏 눈금을 지워봅시다.
눈금도 특별한 방향도 없는 오로지 평평한 평면입니다. 표식이 되는 것은 원점 o하나뿐입니다. 처음에는 조금 불안하지만, 이런 세계에서도 잘 해나갈 수 있습니다. 즉, '덧셈'도 '정수배'도, '화살표 해석'을 하면 수행 기능 합니다. 없어도 해나갈 수 있는 것은 없는 채로 생각하는 것이 스마트하지요. 이처럼 '덧셈'과 '정수배'가 정의된 세계를 선형 공각이라 부릅니다. 벡터 공간이라고 부르는 사람도 있습니다.

이 스마트한 세계에서의벡터는 화살표 해석을 강종하여 x, y, e처럼 표기합니다. 숫자의나열로서의 벡터는 x, 화살표로서의 벡터는 x  로 구분해서 쓰는 것은 이 책에서만 사용하는 약속입니다.

선형 공간은 우리가 사는 현실 공간의 어느 측면을 어느 수준에서 추상화한 것입니다. 완전한 복제가 아닌 '기능 축소판'이므로 오해하지 말아 주십시오. 이 세계에서는 영벡터만 특별하고, 그 외에는 어느 화살표도 대등합니다. 적용되는 것은 덧셈과 정수배뿐입니다. 뭐든지 직선형입니다.

여기서 이 세계에는 '길이'나 '각도'가 정의되지 있지 않다는 것에 주의해 주십시오. 다른 방향의 벡터끼리 대소를 비교하는 방법은 없습니다. '회전(=길이를 유지하며 방향을 바꾸다)'이라는 작업도 정의할 수 없습니다. '본래의' 선형 공간에 이런 기능은 없습니다.

기준을 정하며 번지를 매기자
자, 스마트해진 것은 좃습니다만, 이 상태로는 특정 벡터 v를 지정하는데 '여기'라고 손가락으로 가리킬 수 밖에 없습니다. 역시 조금 불편합니다. 말로도 의치를 전할 수 ㅣㅇㅆ도록 이 세계에서 '번지(좌표)'를 매겨 줍시다.
우선 기준이 되는 벡터 e1, e2가 무엇인지 정합니다. 예를 들어 그림 1-4처럼요, 기준을 정하면 e1를 3보 e2를 2보'처럼 말하여 벡터 v의 위치를 지정할 수 있습니다.
즉, 다음과 같이 말하는 것입니다.
v = 3e1 + 2e2
이런 '기준이 되는 한 쌍의 벡터'를  기저, '각 기준에서 몇 보 나아가는가'를 좌표라고 합니다. 위의 예라면 '기저(e1, e2) 에 대한 벡터 v=(3,2)T입니다., 또한, '기저'라고하면 팀( e1, e2)를 말하며, 팀의 멤버인 e1나 e2는 기저 벡터라고 부릅니다.
기준을 잡는 방법은 여러 가지로 생각할 수 있습니다. 특히 그림 1-5 처럼 잡으면 제일 처음에 생성한 모눈종이 눈금과일치하네요.

단, 벡터를 몇 개쯤 가져와서 묶는 다고 뭐든 기저가 되는 것은 아닙니다. 다음 절에서는 기저라고 부를 수 있는 자격에 대해 이야기 하겠습니다.

1.1.4 기저가 되기 위한 조건
벡터의 조합을 기저라 부르는 것은 다음 두 가지 조건을 만족시켰을 때뿐입니다.

1. (지금 생각하고있는 공간 안의) 어떤 벡터 v라도 라는 형태로 나타낼 수 있다.

2. 게다가 나타내는 방법은 한 가지뿐이다.

조건 1은 당연한 요청입니다. 좌표로 이야기하고 싶은데 나타낼 수 없는 것이 있으면 고란합니다.

조건2도 성가심을 피하기 위해서 꼭 요청하고 싶은 부분입니다. 그렇지 않으면 곤란합니다.

1.1.6 좌표에서의 표현
사실 좌표에'기저'를 지정하지 않으면 의미가 없습니다. 이는 당영한 것으로 "후지산의 높이는 3776이다"라고 하면 무슨 뜻인지 알 수 없습니다. "3776m다"라고 단위를 붙이고 나서야 의미를 지니는 것과 같습니다. 이때 값'3776'이 좌표, 단위'm'가 기저에 해당합니다.
그렇다고 해도 매번 기저를 쓰는 것은 귀찮고 위압적인 느낌이 듭니다. 다음 절 이후부터는 기저를 생략하고 좌표 v만 표시하도록 하니다. 어떤 기저를 정하여 계속 고정시키 두므로 일일이 쓰지 않는 다는 입장입니다. 평소에는 좌표 v를 '벡터'라고 생각해도 상관없습니다만, 마음에 여유가 생겼을 때는 배후에 있는 기저를 의힉하고 봐 주십시오.
좌표만으로 이야기하려면 "덧셈과 정수배를 좌표로 말하면 어찌되는가"를 확인해 두어야 합니다. 결과는 별 것 없어서 "어떤 기저를 취하여 좌표를 표시해도 덧셈과 정수배는 식(1.1)과 식 (1.2)처럼 좌표 성분마다 덧셈과 정수배가 된다"입니다. 실제로 벡터 과 수 에 대해 다음 내용을 바로 확인 할 수 있습니다.

또한, 두 가지 이상의 기저가 등장하는 경우도 가끔 있습니다. 이 경우에도 물론 기저를 명시합니다. 두 기정에 대해 한 쪽의 좌표에서 다른 쪽의 좌표를 구하는 '좌표 변화' 이야기는 '행렬'을 도입한 후 1.2.11절에 설명합니다.

1.2 행렬과 사상
벡터라는 '대상'을 알았으니 다음 관심읔 대상 간의 '관계'입니다. 이 관계를 나타내기 위해 행렬이 등장합니다.

1.2.1 우선적인 정의: 순수한 관계를 나타내는 편리한 기법

수를 직사각형 형태로 나열한 것을 행렬이라고 부릅니다.
크기를 명시하고 싶은 경우에는 각각 2*2 행렬, 2*3행렬, 5*3 행렬처럼 부릅니다. '행렬'이므로 '행'과 '열'의 순으로 표기한다고 기억해 주십시오. 특히 행 수와 열 수가 같은 행렬을 정방행렬이라고 부릅니다. 크기를  명시하고 싶은 경우는 2*2 또는 2차 정방행렬, 3*3 또는 3차 정방행렬이라 부릅니다.
행렬 A의 i행과 j열의 값을 A의(i,j)성분이라고 합니다. 예를 덜어 앞에서 제시한 세 행렬 중 중아의 행렬에서  (2,1) 성분은 \sqrt{7}\ 이고, (1,3) 성분은 1/7입니다. (i, j) 성분이라 할 때의 순서도 '행', '열'입니다. 또한 다음과같이 쓸때 첨자 순서도 일반적으로 '행','열'입니다.

귀찮아서 이를 '3*4 행렬 A=(aij)'등으로 줄여 쓰는 경우도 있습니다. 일반적으로 행렬은 알파벳 대문자로, 성분은 소문자로 씁니다.

행렬의 덧셈과 정수배를 다음과 같이 정의합니다.
덧셈같은 크기의 행렬에 대해

정수배 임의의 수 c에 대해

다음과 같은 표기법 약속은 벡터의 경우와 같습니다.
또한, 행렬과 벡터의 곱을 정의하겠습니다. 그 전에 잠시 다음과 같은 산수 문제를 생각해 주십시오.
고기를 x그램, 콩을 x그램, 쌀을 x그램 샀습니다. 합계는 얼마일까요? 또한, 총 몇 칼로리일까요?

각각의 답인  y(돈), y(칼)은 다음과 같습니다.

y(돈) = a(돈고)x(고) + a(돈콩)x(콩) + a(돈쌀)x(쌀)
y(칼) = a(칼고)x(고) + a(칼콩)x(콩) + a(칼쌀)x(쌀)

식에서 a(돈고)는 고기 1그램당 가격, a(칼고)는 고기 1그램당 칼로리입니다.
이 식들을 정리하면 다음과 같이 쓸 수 있습니다.
'요인'인 x(고),x(콩),x(쌀)과 '요소'인 a가 각각 하나에 정리되어 깔끔하게 보기 좋아집니다. 이것이 '행렬과 벡터의 곱'입니다.
곱 m*n행렬과 n차원 벡터에 대해

곱에 대해서는 다음 사항을 주의합니다.
- 행렬과 벡터의 곱은 벡터
- 행렬의 열 수(가로폭)가 '입력'의 차원 수, 행 수(높이)가 '출력'의 차원 수
- 입력의 종벡터를 가로로 넘겨 딱딱 계산하는 느낌

자, 식(1.5)와 식(1.6)을 다시 새겨둡시다. 이 식들이 나타내는 것은 요인 x(고), x(콩), x(쌀)에서 결과 y(돈), y(칼)이 결정될 때 상승 효과(세트 할인)나 규모에 의한 변화(대량 매수 할인)등이 없는 '순수'한 관계입니다. 그 덕분에 a(돈고)x(고) + a(돈콩)x(콩) + a(돈쌀)x(쌀)과 같은 형태의 식은 다루기 쉽고, 예측하기도 좋아 깔끔하게 노의할 수 있습니다. 이 '순수함'을 멋있게 바꿔 말하면 "정의한 '벡터의 덧셈과 정수배'를 제대로 유지하다"라고 표현됩니다. 이는 행렬 A에 대해 ' x + y = z 에서 Ax+ Ay= Az' , 'cx = y에서 c(Ax) = Ay'라는 의미입니다.
정리하면 행렬이란 순수한 관곌르 나타내는 편리한 기법입니다.

1,15 행렬이 '순수한 관계'라는 것을 알았습니다. 반대로 '순순한 관계'는 모두 행렬이라 생각해도 될까요?
일반ㄴ적으로 f(x + y) = f(x) + f(y), f(cx) = cf(x)라는 성질을 지닌 사상 f를 선형 사상이라고 합니다(x, y는 같은 크기의 벡터, c는 수, f(x)의 값은 벡터라고 합니다). 즉, 본문을 고쳐 말하면 '행렬  A를 곱한다는 사상은 선형 사상이다'라는 것입니다. 그 반대로 말할 수 있어서 임의의 선형 사상f는 '행렬을 곱한다'는 형태로 반드시 쓸 수 있습니다. 실제로 e1 = (1,0,0,0,....,0)T, e2=(0,1,0,0,....,0)T.....를 각각 입력한 때의 출력을 ai = f(ei) 로 두면 입력 x=(x1, ...,xn)T에 대한 출력은  f(x) = x1a1+....+xnan이 됩니다. 종벡터 a1, ....an을 나열한 행렬 A = (a1, a2,....,an)를 사용하면 이것은 f(x)= Ax로 쓸 수 있습니다(1.2.9절 '블록행렬'). 멋있게 말하면 행렬이란 '선형 사상을 좌표 성분으로 표시한 것'입니다.

1.2.2 여러 가지 관계를 행렬로 나타내다(1)
앞 절에서 설명했듯이 "행렬을 곱하다"는 순수한 관계'를 나타냅니다. "상승 효과나 규모 효과가 없고, 단순히 가 요인의 합계다'라는 순수한 관계는 여기저기서 맞딱드리게 됩니다. 대상 자체가 곧은 경우도 있고, 복잡한 것에 대한 근사 모델로 가정된 경우로 있는 것은 0.2절 '근사 수단으로 사용하기 편리하다'에 서술한 대로입니다.

학 거북이 계산
학이 x(학)마리, 거북이가  x(거북)마리 있다면 머리의 개수  y(머리)와 다리의 개수  y(다리)는 다음과 같습니다.
 y(머리) = a(학머리)x(학) + a(거북머리)x(거북) = x(학) + x(거북)
 y(다리) = a(학다리)x(학) + a(거북다리)x(거북) = 2x(학) + 4x(거북)
 a(학머리)=1 은 학 한 마리의 머리 개수,  a(거북다리) = 4는 거북이 한 머리의 다리 개수라는 형태 입니다. 이를 행렬로 쓰면 다음과같습니다.
이것도 상승 효과나 규모 효과가 없는 순수한 관꼐네요. 학 열 마리의 다리 개수는 학 한 마리의 다리 개수를 단순히 10배하면 됩니다. 집단 A와 집단B를 합쳐 놓은 머리의 총 개수는 A의 머리 개수와 B의 머리 개수를 단순히 더하면 됩니다.

제품과 필요 원료
다음과같은 예도 생각할 수 있습니다.
- 제품 1을 한개 만드는 데는 원료 1, 2, 3이 각각 a11, a21, a31 그램씩 필요
- 제품 2을 한개 만드는 데는 원료 1, 2, 3 이 각각 a12, a22, a32 그램씩 필요

지금 제품 1,2를 각각 x1, x2개 만든다면 원료 1,2,3의 필요량 y1,y2,y3은 다음과 같이 구할 수 있습니다.

그 외 여러 가지
그 외에도 다양한 경우에서  y = Ax 형태의 관계를 만나게 됩니다. 자세히 설명하려면 각 분야의 전문 지식이 필요하므로 여기서는 예만 들어 보겠습니다. 다음과 같은 것이 있습니다.

- 회로망 이론( LCR 회로의 전류와 전압)
- 신호 처리(선형 필터, 푸리에 변환, 웨이블릿 변환)
- 제어 이론(선형 시스템)
- 통계 분석(선형 모델)

y= Ax라는 형태로 노골적으로 쓰진 않아도 그렇게 해석 가능한 경우도 있습니다.

1.2.3 행렬은 사상이다.
n차원 벡터 x에 m*n 행렬 A를 곱하면 m차원 벡터 y = Ax가 얻어집니다. 즉, 행렬A를 지정하면 벡터를 다른 벡터에 옮기는 사상이 결정됩니다. 사실 이것이야말로 행렬의 가장 중요한 기능입니다. 지금부터는 행렬을 보면 단순히 '수가 나열되어 있다'라고 생각하지 말고, '사상이 주어졌다'고 생각해 주십시오. 계속해서 강조하겠습니다.
행렬은 사상이다.
사상이라는 언어는 조금 위압감이 있을지도 모릅니다. 일반적으로 쓰이는 '변환'이란 말도 있지만, 수학용어로서의 변환에는 '대등한 것에 이동한다'라는 의미가 있습니다. n차원 공간에서 m차원 공간이라는 다른 세계에 옮기는 것을 변환이라고 부를 수 없으므로 사상이라는 조금 더 넓은 언어를 사용했습니다.

자, 이 설명만으로는 아직 '점을 점으로옮긴다'는 이미지겠지요. 여기서 조금 더 힘을 내 '공간 전체가 어떻게 변하는 가'를 떠올릴 수 있다면 선형대수가 매우 알기 쉬워질 것입니다. '백문이 불여일견, 이 장에서는 이 변형을 애니메이션 프로그램으로 실제로 관찰해 봅시다.

1.2.4 행렬의 곱 = 사상의 합성
행렬끼리의 곱을 다음과 같이 정의 합니다.
곱 k*m 행렬 B = (bij)와 m*n 행렬 A = (ajp)에 대해

각 행렬의 크기에 주의합니다. k * m 행렬의 곱이 k * n 입니다.

계산은 다음 방법을 추천합니다.
1. 오른쪽 행렬을 세로 단락으로 분해한다.
2. 분해한 각각에 왼쪽 행렬을 곱한다(행렬과 벡터의 곱으로서).
3. 결과를 접착

구체적으로는 다음과 같은 요령입니다.

처음 보면 "이건 뭐야"라는 반응이 보통입니다. 이는 '사상의 합성'을 나타냅니다. 벡터 x를 우선 사상 A로 날려버리고, 목적한 곳 y = Ax역시 사상 B 로 날렸다고 합시다. 최종 종착지는 z = B(Ax) 입니다. 여기서 행렬의 곱 BA는 x를 z에 단숨에 날리는 사상인 것입니다.
요약하면 'A하고, B한다'가 곱 BA인 것입니다. 식으로 쓰면 다음과 같습니다.
(BA)x = B(Ax)
어떠한 x에도 성립합니다. 일단 이해가 되면 같은 것을 굳이 구별할 필요가 없으므로 보통은 괄호를 생략하고 BAx처럼 씁니다. (BA)x로 해석해도,  B(Ax)로 해석해도 답은 같습니다.
이 '의미'와 '계산법'의 관계는 그림 1-13을 보면서 이미지화 해보세요.  B의 폭(열수)과 A의 높이(행 수)가 맞지않으면 안되는 것도 이 그림을 보고 이해할 수 있을 것입니다.

1.17 A하고, B한다면  AB가 아닌가요?
'f한 것을 g한다'는 g(f(x))이지요, 옐르 들어 '대문자로 출력한다'라면 putchar(toupper(x))입니다. 이와 같은 의미로  BAx가 정답입니다. 이 스타일로 쓰는 한 조각 순서와 표기 순서가 반대인 것은 어쩔 수 없습니다.

다음으로 세 행렬 A, B, C의 곱도 생각해 봅시다. 예상대로 'A하고, B하고,  C하는 것은  CBA'입니다. 여기서 포인트는 다음 어느 것이어도 결과가 같다는 것입니다.

- 'A하고, B한다'를 하고 나서 C를 한다.
- A를 하고 나서 'B하고,  C한다'를 한다.
식으로 쓰면 다음과 같습니다.
C(BA) = (CB)A
마찬가지로 행렬이 네 개인 경우를 봅시다.
D(C(BA)) = D((CB)A) = (D(CB))A = (DC)(BA)
이렇게 괄호를 붙여도 결국 같습니다. 그러므로 보통은 괄호 따위 붙이지 않고 CB
A 나 DCBA처럼 씁니다.
그러나 BA와 AB는 같지 않습니다. 우선 A,B의 크기에 따라 처음부터 곱이 정의되지 않습니다.
또한, 만약 가능해도 결과는 대부분 다릅니다.
사실 행렬 A는 공간을 '돌린다', 행렬 B는 공간을 '가로로 넓히다'라는 효과가 있습니다. A와  B의 곱은 BA라면 돌려서 가로로 늘리고, AB라면 가로로 넓혀서 돌리는 것이 됩니다. 결과는 서로 다릅니다.

1.18 곱의 정의식(1.9)의 어디를 어떻게 보면 '이것은 사상의 합성이다' 라고 알 수 있나요?

행렬의 각 열은 각 축 방향의 단위 벡터 e1, .... em의 목적지가 된다는 지적을 우선 떠올려주세요(1.2.3절 '행렬은 사상이다'). 지금 'A하고, B한다'에 대응하는 행렬을 C라고 합시다. C의 1열인 c1을 알기 위해서는 e1 = (1,0,,,,,0)T가 C에서 어디로 갈지를 알아보면 됩니다. 즉, e1에 A를 고하여 거기에 더욱이 B를 곱한 어느 곳에 가는가 입니다.

1스텝의 Ae1은 물론 A의 1열a1이 됩니다. 그러므포 2스텝의 목적지는 c1 = Ba1입니다. 다른 것도 같으므로 C의 i열 ai에 B를 곱한 것디 됩니다. 다시 말해서  C=BA를 구하기 위해서는 행렬과 벡터의 곱 Ba1, ,,,, Bam을 계산해 두고, 그 결과를 나열하여 붙이면 됩니다. 이것은 좀 전에 서술한 '암기법' 그 자체입니다. 그러므로 '곱은 사상의 합성이다'라고 할 수 있습니다. 1.2.9절에서는 '열벡터'라는 언어를 사용하여 같은 내용을 한번 더 확인합니다.

1.2.5 행렬 연산의 성질

기본적인 성질
수 c, c', 벡터 x, 행렬 A, B, C에 대해 다음 성질이 성립합니다. 벡터나 행렬의 크기는 연산되도록 설정했습니다.

- (cA)x = c(Ax) = A(cx)

- (A + B)x = Ax + Bx

- A + B = B + A

- (A + B) + C = A + (B + C)

- (c + c')A = cA + c'A

- (cc')A = c(c'A)

- A(B + C) = AB + AC

- (A + B)C = AC + BC

- (cA)B = c(AB) = A(cB)

벡터도 행렬의 일종?
이미 잠깐 설명했듯이 n차원 벡터를 n * 1행려로 간주하여 덧셈, 정수배, 곱을 계산해도 결과는 같습니다.

1.2.6  행렬의 거듭제곱 = 사상의 반복
숫자에서와 같은 방식으로 정방행렬 A에 대해 다음과 같이 씁니다(정방이 아니면 처음부터 곱 AA가 정의되지 않습니다(크기가 맞지 않습니다.)).
사상으로 A2은 'A하고 한층 더 A한다', A3은 'A하고 A하고 A한다', An은 'A를 n번 반복 적용한다' 입니다. 거듭제곱은 가감승제보다도 먼저 계산하는 규칙입니다.


1.2.7 영행렬, 단위행렬, 대각행렬
특별한 행렬에는 이름을 붙여 둡시다.

- 영행렬
모든 성분이 0인 행렬을 영행렬이라 하고, 기호 O로 나타냅니다. 크기를 명시하고 싶을 때는 m*n 영행렬 Omn이나 n차 정방영행렬 On처럼 쓰기도 합니다.

영행렬이 나타내는 사상은 모든 것을 원점으로 이동시키는 사상입니다. 임의의 벡터 x에 대해 Ox = o이기 때문입니다.

- 단위행렬
정방행렬에서 대각선 위만 1이고 다른 것은 0인 행렬을 단위행렬이라고 하고, 기호 I로 나타냅니다. 크기를 명시하고 싶을때는 n차 단위행렬 In처럼 쓰기도 합니다.

'모든 성분이 1인 행렬'은 아니므로 주의합시다. 사상으로서의 의미를 보면 이해될 것입니다. 단위행렬이 나타내는 사상은 '아무것도 하지 않는' 사상입니다. 임의의 백터 x에 대해 Ix = x이므로 x를 원래 x 그래도 이동한다는 것을 알 수 있습니다. ㄱ

- 대각행렬
정방행렬의 대각선상의 값을 대각성분이라고 합니다.
대각성분 이외의 값은 비대각성분이라고 합니다.
비 대각성분이 모두 0인 행렬을 대각행렬이라 부릅니다.
거의 대부분 0인데 지면을 소비하면 아까우므로 다음과 같이 줄여서 씁니다. diag는 diagonal(대각선)의 줄임말입니다.

대각행렬이 나타내는 사상은 '축에 따르는 신축(늘고 줄음)이고, 대각성분이 각 축의 늘고 주는 배율이 됩니다. 따라서 대각성분 여하에 따라 공간이 변하는 모습도 다릅니다.

1.2.8 역행렬 = 역사상
다음은 A에 이동시킨 것을 원래대로 돌려 놓은 이야기입니다. 이 이야기는 2장에서 설명할 '결과에서 원인을 구한다'라는 주제와도 관련이 있습니다.

정의
정방행렬 A에 대해 그 역사상에 대응하는 행렬을 'A의 역행렬'이라고 하고, 기소 A-1이라 씁니다. 어떠한 x를 가져와도 'Ax = y 또는 A-1y = x'이고, 반대로 어떠한 y를 가져와도 A-1y = x또는 Ax =y'가 되는, 그런 행렬 A-1입니다. 대략 '이동점 y를 갖고 원래의 점 x를 구하다'라는 사상에 대응하는 행렬이 A-1입니다.
다르게 표현하면 A하고 A-1하면 원래대로 돌아가고, A-1하고 A해도 원래대로 돌아갑니다. 즉 다음과 같습니다.

A-1A = AA-1 = I

역행렬은 있을 수도, 없을 수도 있습니다. 직관적으로 말하면 '납작하게 눌리는' 경우는 역행렬이 존재하지 않습니다. 왜냐하면, '눌린다'는 것은 '서로 다른 두 점 x, x'가 A를 적용하면 같은 점 y = Ax = Ax'로 이동한다'라는 것이기 때문입니다. 그렇게 되면 '이동점이y'라고 주어져도 원래가 x였는지 x'였는지 구별이 안 됩니다. 즉, '이동점y를 들고 원래의 점 x를 답하는 사상'이라 만들수가 없습니다.

1.2.9 블록행렬
'큰 문제를 작은 부분 문제로 분할하는 것'은 복잡합에 대처하는 수단으로 효과가 있습니다. 행렬 연산에도 실은 그런 분할이 가능합니다.

정의와 성질
행렬의 종횡에 단락을 넣어 각 구역을 작은 행렬로 간주한 것을 블록행렬이라고 합니다.
쉬운 선형대수 책에는 그다지 실리지 않는 소재입니다만, 응용할 때 자주 사용하는 테크닉이므로 설명해 두겠습니다.
크기가 같은 블록 행렬 A=(Aij)와 B=(Bij), 수 c에 대해 다음 성질이 성립합니다.

행벡터, 열벡테
블록행렬의 특별한 경우로 다음과같이 한 방향으로만 작게 나누는 것도 생각해 볼 수 있습니다.
단락지어진 각 단편의 크기가 n*1이나 1*n'이므로 각 단락을 벡터라고 간주하는 것도 가능합니다. 그런 이유로 위 행렬처럼 나타났을 때 a1, a2...am을 'A의 열벡터'라고 하고,


댓글 없음: