매트릭스 란?
매트릭스와 m
열 및 n
행 벡터 소비 함수 나타낸다 * 와 m
요소 (또는 좌표)와 함께 벡터 생성 n
요소.
이를 통해 행렬이 정사각형 인 경우에만 벡터의 차원이 변경되지 않음을 알 수 있습니다. 예 : 3D 벡터 변환, 2D에서 2D 등으로 3D 벡터를 얻습니다.
* : 물리학에서 벡터는 일반적으로 속도 나 가속도와 같은 것들을 "이동"하는 힘이나 다른 "영향"을 나타내는 데 사용됩니다. 그러나 벡터를 사용하여 점 또는 임의의 숫자 배열을 나타내는 것을 막을 수는 없습니다 (일부 라이브러리 및 프로그래밍 언어는 "1"배열을 의미하기 위해 "벡터"를 사용하기도합니다). 행렬과 함께 사용하려면 행렬의 요소에 관계없이 벡터를 더하고 빼고 곱하는 방법이 있다면 벡터의 요소 (문자열 또는 색상조차)가 될 수 있습니다. 따라서 "캐리어"를 의미 하는 이름 벡터 는 값을 전달 하거나 보유 합니다.
행렬을 곱하는 것은 무엇을 의미합니까?
행렬이 함수라면 어떤 종류의 함수 입니까? 기능은 무엇을합니까? 그것을위한 레시피는 행렬의 요소에 의해 정의됩니다. input u
, output v
, 행렬 M
(곱셈 M*u=v
은 다음과 동일 f(u)=v
)을 호출하고 th 요소를 u(i)
제공합니다 (예를 들어 두 번째 요소는 y 좌표입니다). 행렬의 경우 row , column을 의미합니다 .i
u
M(i,j)
i
j
v(1)
결과의 첫 번째 요소 인 element의 구성 은 행렬의 첫 번째 행으로 설명됩니다. u(1)
시간 M(1,1)
, 더하기 u(2)
시간 M(1,2)
, ... 더하기 u(i)
시간 M(1,i)
. 행렬은 매우 간단한 프로그래밍 언어와 비슷합니다. 입력 주위를 뒤섞거나 자체에 추가하는 등의 기능을 수행하는 프로그래밍 기능에만 적합합니다. **
한 번에 하나의 출력 요소로 작업하고 있으므로 한 번에 한 행의 행렬 만 사용한다고 상상하는 것이 좋습니다. 당신은 u
수평으로 씁니다 . 당신은 그 M
아래 의 i 번째 줄을 씁니다 . 모든 위 / 아래 쌍을 곱하고 아래에 제품을 작성한 다음 제품을 더합니다. 의 모든 요소를 얻으려면 모든 행에 대해 반복하십시오 v
. 이제 m
by by n
행렬이 m
벡터에서 작동하고 벡터를 생성 해야하는 이유를 알 수 있습니다 n
.
이것에 대해 생각하는 또 다른 방법-우리가 3D에서 3D로 변환하고 있다고 가정 해 봅시다. 그래서 3x3 매트릭스 (또는 종종 "이 기능"은 척도 할 수 있기 때문에 호출되는 3D 변환 은 실제로는 3D 포인트입니다. 그냥 숫자를 변경). 첫 번째 행이라고 가정 해 봅시다 [1 2 0]
. 즉, 결과 x를 얻으려면 입력 x의 1, 입력 y의 2, 입력 z의 0을 가져옵니다. 정말 레시피입니다.
** : 매트릭스가 프로그래밍 언어 인 경우 Turing이 완료되지도 않습니다.
두 행렬을 곱하는 것은 무엇을 의미합니까?
둘 다 적절한 크기의 행렬 이면 " A*B
먼저 적용되는 함수" 를 의미 합니다. 크기가 입력 및 출력 크기를 결정하고 한 행렬이 다른 행렬의 출력을 소비하기 때문에 곱하기 크기에 대한 제약 조건이 존재하는 이유를 알 수 있습니다. 곱셈은 왜 결합 함수를 의미합니까? 그것이 있어야한다는 것을 쉽게 알 수 있습니다. 경우 와 동일합니다 및B
A
A*u
f(u)
B*u
이다 같은 g(u)
후는 f(g(u))
것과 동일하다 f(B*u)
동일하다 A*(B*u)
.
마찬가지로, 동일한 기능을 반복적으로 적용하는 경우는 힘으로 표시 할 수 있습니다 . 3 A*A*A
을 A
나타내는 기능을 적용하는 것을 의미하기 때문 입니다.
행렬은 어떻게 유용합니까?
new_x = 1*x+2*y+0*z
(첫 번째 행이 [1 2 0] 인 경우) 와 같은 변환은 무엇입니까 ? 그다지 명확하지는 않지만 다른 2D 매트릭스를 사용하여 설명하겠습니다. 매트릭스는 다음과 같습니다.
[ 0 1
1 0 ]
또는 [0 1; 1 0]
편리한 Matlab 표기법을 사용하십시오. 이 매트릭스는 무엇을합니까? 다음과 같이 2D 벡터를 변환합니다. 결과의 x에 대해 입력 y의 1을 가져옵니다. 결과 y에 대해서는 입력 x의 1을 취합니다. 입력의 x와 y 좌표를 바 꾸었습니다.이 행렬 은 x = y 선에 대한 점을 반영합니다 . 유용합니다! 확장하면 SW - NE 라인을 따라 1이있는 모든 행렬이 반영됩니다. 항등 행렬이 왜 입력을 돌려 주는지 알 수 있습니다 (x 출력의 경우 x 입력, y 입력의 경우 y 입력 ...).
이제 상징이 왜 그런지 알 수 있습니다. Xx
, Yx
- 그들은 입력의 양을 의미한다 X
,Y
출력에 들어가는 등 x
.
행렬은 어떻게 더 유용합니까?
다른 어떤 변형을 할 수 있습니까? 단위 행렬을 사용하여 크기를 조정할 수 있지만 대각선을 따라 1과 다른 번호를 사용합니다. 예를 들어 [2.5 0; 0 22.5]
입력의 모든 좌표에 2.5를 곱하고이 행렬을 그림의 모든 점에 적용하면 그림의 크기는 2.5가됩니다. 2.5를 하나의 행 ( [2.5 0; 0 1]
) 에만 넣으면 x 좌표 만 곱해 지므로 x를 따라 늘어납니다.
다른 행렬은 다양한 정도의 유용성을 갖는 "꼬임"과 같은 다른 변형을 제공 할 수 있습니다. 개인적으로, 왜곡은 매트릭스가 너무 단순 해 보이지만 변환 자체는 그림 맹 글링을 제외하고는 거의 수행하지 않기 때문에 내가 가장 좋아하는 것입니다. 유용한 것은 "회전"입니다-포인트를 어떻게 회전합니까? 포인트의 위치를 운동 해보십시오(x, y)
을 중심으로 theta
시계 반대 방향으로 회전 한 후 하십시오. 새로운 x와 y 좌표는 오래된 x와 y에 세타의 사인과 코사인을 곱하여 나옵니다. 이 함수에 해당하는 사인과 코사인을 사용하여 회전 행렬을 쉽게 작성할 수 있어야합니다.
정사각형이 아닌 행렬을 사용하면 입력의 차원을 변경할 수도 있습니다. 2D 입력을 3D로 전환하는 것은 새로운 좌표에 넣을 무언가를 "제조"하기가 어렵 기 때문에 매우 유용하지는 않지만 3D는 2D로 매우 유용합니다. 무엇보다도,이 컴퓨터가 프로젝트에 알고있는 방법입니다 *** 모니터에 그리는 2D 이미지로 3D 장면.
벡터는 다른 것을 가질 수 있기 때문에 문자열 n 문자를 한 번에 셔플 링하거나 "곱셈"하여 곱셈 / 더하기 기능을 사용해야하는 행렬을 설명 할 수도 있습니다.
*** : 투사 할 때 조각과 같은 3D 객체를 가져와 빛을 비추고 벽에 어떤 2D 그림자가 떨어지는 지 확인합니다.
행렬의 한계는 무엇입니까?
행렬로 모든 기능을 수행 할 수 있습니까? 그래픽으로 생각하면 매트릭스가 할 수 없었던 것을 상상하기는 어렵습니다 (그러나 존재합니다 : 예를 들어 "소용돌이"효과를 수행 할 수 없습니다). 그러나 다음은 쉬운 예입니다. 함수 f
가 모든 요소를 제곱으로f(u)
되돌려주는 함수라고 가정 해 봅시다 . 행렬을 작성할 수 없다는 것을 알 수 있습니다. 행렬에는 좌표에 상수를 곱하는 레시피를 설명하는 기능 만 있으며, 힘과 같은 다른 멋진 함수는 표현할 수 없습니다.u
**** : 이것은 또한 선형 대수학 이라고 불리는 이유입니다 -거듭 제곱은 비선형 이며, 플롯 할 때 직선을 만들지 않습니다.
4D 행렬의 이상한 추가 행
이제 예제 4의 행렬이 왜 4입니까? 이것이 4 차원 공간을 의미하지 않습니까? 우리는 4D 컴퓨터를 가지고 있지 않습니다. 왜 그렇습니까? 이것은 실제로 선형 연산에 대한 이전 포인트와 관련된 행렬의 흥미로운 트릭입니다.
행렬로 수행 할 수없는 기능과 관련하여 : 2D 점을 2 단위 씩 오른쪽으로 이동하기위한 행렬이란 무엇입니까? (x+2, y)
? ( 합니까? 다시 말하지만 우리는 멈춤. 입력을 곱하는 방법이 있지만 추가 할 수있는 방법은 없습니다 2D 작업의 경우 속임수는 실제로 2D 공간이 아니라 3D 공간에있는 것입니다. 단, 모든 것의 높이 (z 좌표 또는 3 번째 요소)는 항상 1입니다 (2D 유니버스가 3D 유니버스의 바닥을 따라 평평하게 놓인 "플레이트"–이 경우 세 번째 좌표는 항상 0).이 입력 값은 항상 모든 입력에 대해 1이라는 것을 알고 있으므로이 마지막 좌표를 상수로 사용할 수 있습니다.
마찬가지로 3D 점을 이동하려면 4D 좌표가 필요합니다. 그렇기 때문에 모든 3D 변환 행렬이 [0 0 0 1]
마지막 행으로 표시되는 이유도 있습니다. 4 차원을 절대 변경해서는 안됩니다. 그렇지 않으면 결과가 너무 복잡하여 3D로 표현할 수 없습니다!