선형대수학 Linear Algebra | |||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <colbgcolor=#006ab8> 기본 대상 | 일차함수 · 벡터 · 행렬 · 선형 변환 | |
대수적 구조 | 가군(모듈) · 벡터 공간 · 내적 공간 · 노름 공간 | ||
선형 연산자 | <colbgcolor=#006ab8> 기본 개념 | 연립방정식(1차 · 2차) · 행렬곱 · 단위행렬 · 역행렬과 크라메르 공식 · 가역행렬 · 전치행렬 · 행렬식(라플라스 전개) · 주대각합 | |
선형 시스템 | 기본행연산과 기본행렬 · 가우스-조르당 소거법 · 행사다리꼴 · 행렬표현 · 라그랑주 보간법 | ||
주요 정리 | 선형대수학의 기본정리 · 차원 정리 · 가역행렬의 기본정리 · 스펙트럼 정리 | ||
기타 | 제곱근행렬 · 멱등행렬 · 멱영행렬 · 에르미트 행렬 · 야코비 행렬 · 방데르몽드 행렬 · 아다마르 행렬 변환 · 노름(수학) | ||
벡터공간의 분해 | 상사 · 고유치 문제 · 케일리-해밀턴 정리 · 대각화(대각행렬) · 삼각화 · 조르당 분해 | ||
벡터의 연산 | 노름 · 거리함수 · 내적 · 외적(신발끈 공식) · 다중선형형식 · ∇ · 크로네커 델타 | ||
내적공간 | 그람-슈미트 과정 · 수반 연산자(에르미트 내적) | ||
다중선형대수 | 텐서 · 텐서곱 · 레비치비타 기호 | }}}}}}}}} |
1. 개요
行列 / matrix선형대수학에서 선형 변환을 간단히 나타내기 위해 1개 이상의 수나 식을 직사각형의 배열로 나열한 것을 말한다. 이때, 가로줄을 행(行, row), 세로줄을 열(列, column)[1]이라고 부른다.
2. 상세
행렬은 아서 케일리와 윌리엄 로원 해밀턴이 발명했으며, 역사적으로 본다면 행렬은 '연립일차방정식의 풀이를 어떻게 하면 될까?'라고 고민한 데서 시작했다. 아서 케일리가 연구하던 중에 행렬식의 값에 따라 연립방정식의 해가 다르게 나오는 것을 보고 이것이 해의 존재 여부, 즉 행렬의 가역 여부(invertibility)를 판별한다는 관점에서 determinant라고 부른 데서 행렬식이 탄생했고, 윌리엄 로원 해밀턴이 '야, 그러면 연립 방정식의 계수랑 변수를 따로 떼어내서 쓰면 어떨까?'라는 생각에서 행렬이 탄생했다. 즉, 역사적으로 보면 행렬식이 행렬보다 먼저 탄생했다.사실 그 존재가치는 함수 내지는 사상(寫像, map)을 표현하기 위한 도구라는 데 있다. 모든 선형 변환은 행렬로 표현할 수 있고 그 역도 성립한다. 즉, 행렬은 선형 변환과 같다. 이를 선형대수학의 기본정리라고[2] 한다. 행렬의 곱셈을 덧셈이나 뺄셈처럼 안 하고 복잡하게 정의해 놓은 이유도 여기 있다. 참고로 정확히 말하면 차원이 [math(n)]인 [math(F)]-벡터공간에서 차원이 [math(m)]인 [math(F)]-벡터공간으로 가는 선형변환의 집합과 [math(F)] 위의 [math(n\times m)] 행렬의 집합이 [math(F)]-대수(algebra)로서 동형(isomorphic)인 것인데, 선형대수학 수준에서는 증명은 다 하면서도 어물쩡 넘긴다.
독립변수 1개, 종속변수 1개인 일반적인 일변수함수는 행렬 개념을 쓰지 않고도 수로 직관적으로 설명할 수 있지만, 정의역이나 공역의 차원이 둘 이상(= 이변수 함수 이상)이 되기 시작하면 그때부터는 수가 아니라 행렬로 함수를 표현해야 한다.[3] 예컨대 정의역이 2차원이고 공역이 3차원인 함수(대응)를 표현하는 행렬은 [math(3 \times 2)] 행렬이다. 중·고급 수학의 핵심 개념.
보통 이과 학생들은 대학에서 선형대수학을 배우면서 미지수가 2개 이상인 방정식이나, 둘 이상의 변수로 정의되는 함수를 표현하려면 행렬이 필수적이다. 이공계에서 선형대수학은 정말 활용도가 높은 과목이기에 몇몇 특수한 학과[4]가 아닌 이상 전부 이를 배우게 된다. 상경계 학과들 중 경제학과도 선형대수학을 배우는데, 왜냐하면 실제 세계를 수식으로 모델링 할 때는 필연적으로 여러 개의 방정식을 동시에 만족시키는 해 또는 근사를 구해야 하고, 이를 위한 방법론 중 가장 대표격이 선형대수학이기 때문이다. 물론 수학과 학생들은 이런 '행렬 활용법'에 가까운 공대 선형대수 이상의 더 원론적인 개념, 즉 추상대수학적인 관점으로 행렬에 대해 접근하게 된다.
3. 표기법
아래와 같이 하나의 행으로만 구성되면 행벡터(가로 방향 벡터), 하나의 열로 구성되면 열벡터(세로 방향 벡터),라고 한다. 이들 벡터에 대해 보통 책에는 조판이 귀찮아서 열벡터는 행벡터를 전치(transpose)를 이용해 나타내는 경우가 있다.[math(\displaystyle \mathbf{x} = \begin{bmatrix} x_1 & x_2 & \cdots & x_m \end{bmatrix} \qquad \qquad \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_m \end{bmatrix} = \begin{bmatrix} x_1 & x_2 & \cdots & x_m \end{bmatrix}^T)]
행렬은 보통 다음 형태들 중 하나로 표기한다.
[math(\displaystyle \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{bmatrix} \qquad \qquad \begin{pmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{pmatrix} \qquad \qquad \begin{vmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{vmatrix} )]
공통수학과정이 아닌 선형대수학에서 행렬을 쓸 때는 보통 왼쪽의 형태를 많이 쓴다. 행렬 연산의 중첩이 많기도 하고, 표기가 같은 치환이나 조합과의 혼동이 있다 보니 일반 괄호 '( )'와 헷갈림을 방지하기 위해서이다. 오른쪽 표기법은 행렬식과 헷갈리기 때문에 행렬 표기로는 거의 쓰이지 않는다.
또한, 행렬 [math(A)]의 [math(i)]번째 행, [math(j)]번째 열의 원소를 [math( A_{ij})]로 나타낸다. 처음보면 헷갈릴 수 있기에 [math( A_{행열})] 순으로 보면 된다. 행 자리엔 행(가로 방향 벡터) 값이, 열 자리엔 열(세로 방향 벡터) 값이 들어간다.
참고로 공과 계열에서는 벡터 형태의 변수를 나타낼 때에는 일반 괄호를 쓰고 함수를 의미하는 행렬을 나타낼 때에는 대괄호를 씀으로써 항의 의미를 명확히 하는 경우도 종종 있다.
예컨대 연립일차상미분방정식이나 고차상미분방정식에서 볼 수 있는 [math( \dot{x} = A x )] 꼴의 수식을
[math(\displaystyle \begin{pmatrix}\dot{x}_{1}\\\dot{x}_{2}\end{pmatrix} = \begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix}\begin{pmatrix}x_1\\x_2\end{pmatrix} )]
로 나타내곤 한다.
4. 행렬의 연산
4.1. 덧셈
행렬의 크기가 서로 같은 경우에만 할 수 있으며, 대응하는 원소끼리 더하고 뺀다.임의의 크기가 같은 두 행렬 [math(A)], [math(B)]에 대하여
[math(A+B=[A_{ij}+B_{ij}] )]
로 정의된다.
4.2. 실수배
모든 원소에 해당 실수를 곱한 형태가 된다. 즉, 임의의 한 행렬 [math(A)]에 대하여 임의의 실수 [math(k)]에 대한 실수배에 대하여[math( kA=[kA_{ij}] )]
로 정의된다.
가끔씩 실수를 행렬표현으로 바꾸어서 두 행렬과의 곱으로 정의하는 경우도 있다.
4.3. 행렬곱
자세한 내용은 행렬곱 문서 참고하십시오.4.4. 전치
자세한 내용은 전치행렬 문서 참고하십시오.기호로 [math( \square^{\sf T} )]로 표기한다. 예: [math(A^{\sf T})]
4.4.1. 수반 연산자
자세한 내용은 수반 연산자 문서 참고하십시오.기호로 [math( \square^{\ast} )] 또는 [math( \square^{\dag} )]로 표기한다. 예: [math(A^{\ast})] 또는 [math(A^{\dag})]
4.5. 행렬식
자세한 내용은 행렬식 문서 참고하십시오.기호로 [math( \det )]로 표기한다. 예: [math(\det(A))] 또는 [math(\det A)]
4.6. 주대각합
자세한 내용은 주대각합 문서 참고하십시오.기호로 [math( \operatorname{tr} )]로 표기한다. 예: [math(\operatorname{tr}(A))] 또는 [math(\operatorname{tr}A)]
4.7. 주의점
- [math(\boldsymbol{1 \times 1})] 행렬은 스칼라가 아니다.
행렬에 관해서, 특히 프로그래밍으로 행렬 개념에 입문한 사람들이 자주 하는 오해 중 하나이다. 하지만 위에 나온 행렬 곱과 스칼라 곱의 정의를 보면 알겠지만, 스칼라를 [math({1 \times 1})] 행렬과 같은 것으로 생각하면 두 정의가 서로 충돌한다! 때문에 둘은 수학적으로 완전히 다른 개념으로 사용해서 모호함을 피하는 편이다. 애초에 속한 집합부터 다르다. 행렬의 곱셈법도 사실 행렬곱과 행렬-스칼라 곱은 정의된 집합부터 완전히 다를 수밖에 없다.
다만 MATLAB이나 NumPy 코딩은 Broadcasting이라는 개념을 통해 행렬과 [math({1 \times 1})] 행렬 사이의 곱셈이나, 수와 [math({1 \times 1})] 행렬 사이의 덧셈 같은 것들이, 프로그래밍적 상황에서는 효율적이거나 유용하다는 이유로 정의되어 있다는 점에 유의하자. 이때의 덧셈과 곱셈은, 일반적 의미로의 행렬의 덧셈과 곱셈과는 다르다.
- 행렬곱과 내적은 다른 것이다.
백터를 행렬처럼 기술하는 경우가 많기 때문에, 행렬곱과 내적을 같은 기호를 쓰면 모호해지게 되니 주의하자. 두 벡터를 열벡터로 생각했을 때, 내적을 행렬곱으로 바꾸려면, 앞의 벡터에는 전치가 따라붙게 된다([math(\bold{A} \cdot \bold{B} = \det (\bold{A}^T \bold{B}))]).[5] 특히 복소수 벡터의 경우 전치가 켤레 전치가 되기 때문에, 해당 개념을 혼동한 채 계산한다거나 프로그래밍을 하게 되면 큰 실수를 할 수 있다. 이러한 성질은 사원수의 행렬 표현에서 더욱 두드러진다.
5. 별도의 이름이 있는 행렬
5.1. 역행렬
자세한 내용은 역행렬 문서 참고하십시오.기호로 [math( \square^{-1} )]로 표기한다. 예: [math(A^{-1})]
5.2. 고전적 수반 행렬
자세한 내용은 수반 행렬 문서 참고하십시오.기호로 [math( \operatorname{adj} )]로 표기한다. 예: [math(\operatorname{adj}(A))] 또는 [math(\operatorname{adj}A)]
5.3. 영행렬
零行列 / zero matrix모든 성분이 0인 행렬이다. 기호로는 [math(O)]로 적는다. 이 영행렬은 행렬의 덧셈의 항등원이므로 크기가 같은 임의의 행렬 [math(A)]에 대하여 다음이 성립한다.
[math(A+O=O+A=A)]
곱셈에서는 영정사각행렬이 항등원이 아닌 멱등원이 된다.
5.4. 정사각행렬
正四角行列 / square matrix정방(正方)행렬이라고도 한다. [math(n \times n)] 행렬을 의미한다. 정사각행렬을 모두 모으면 행렬환 [math(M_{n}(F))]을 이룬다. 특히, 이 행렬환은 수학사적으로 의미가 매우 깊다. 흔히 대수학의 해방이라 일컬어지는 대수학의 인식전환의 계기가 되었다. 그전까지 모든 대수적 대상에서 교환법칙이 성립하는 줄 알았는데, 해밀턴의 사원수와 더불어 교환법칙이 성립하지 않는 대수였기 때문이다.[6] 그리고, 행렬환은 환들 중에서 조건이 가장 열악하기 때문에, 많은 반례들을 여기서 찾을 수 있다.
아래에 등장하는 모든 행렬은 전부 정사각행렬에 해당한다.
5.4.1. 단위 행렬
單位行列 / identity matrix주대각성분은 모두 1이고 나머지 성분은 모두 0인 행렬이다. 기호로는 [math(I)], [math(E)][7] 등으로 적으며, 다음이 성립한다.
[math(\displaystyle I_{ij}=\delta_{ij} )]
여기서 [math(\delta_{ij})]는 크로네커 델타이다.
즉,
[math(\displaystyle I_n=[\delta_{ij}] )]
단위 행렬은 행렬환의 단위원, 즉, 행렬곱의 항등원이 된다. 특성상 주대각합은 행렬의 크기와 동치이다.
수치 프로그래밍에서는 [math(b)]차 단위행렬 [math(I_n)]을 나타내는 함수로 [math(I)]와 발음이 같은 eye를 많이 사용한다.
5.4.2. 대칭 행렬
對稱行列 / symmetry matrix[math(n)]차 정사각행렬 중에서, 자신의 전치행렬과 같은 행렬.
[math(A=A^{\sf T})]
인 행렬이다. 즉,
[math(A_{ij}=A_{ji})]
의 성질을 만족시키는 행렬이다.
5.4.2.1. 에르미트 행렬
실수 대칭행렬을 복소수 범위로 일반화시킨 행렬로, 전치행렬의 각 원소의 켤레를 취한 행렬[8]과 본 행렬이 같은 행렬(자기 수반 행렬)을 의미한다. 즉,[math(A_{ij}=\overline{{A}_{ji}})]
의 성질을 만족시키는 행렬이다. 행렬 중에서도 매우 특이한 성질이 존재[9]하여, 선형대수에서도 매우 특별하게 취급되는 행렬이다. 자세한 것은 해당 문서를 참고하자.
5.4.3. 대각행렬
자세한 내용은 대각행렬 문서 참고하십시오.기호로 [math( \operatorname{diag} )]로 표현한다. 예: [math(\operatorname{diag}(A))] 또는 [math(\operatorname{diag}A)]
5.4.4. 멱등 행렬
자세한 내용은 멱등행렬 문서 참고하십시오.6. 교과 관련
수학과 고등학교 과정에서 2007 개정 교육과정까지는 고등학교 일반계 과정에 문이과 공통으로 포함되어 있었다가, 2009 개정 교육과정이 적용된 2014학년도 고1 입학생부터는 일반계 과정에서 제외됐다.[10] 하지만 자연·공학계 대학 교수들이 '이런 기본적인 것도 안 배우고 오면 어떡하냐'고 지속적으로 큰 불만을 표출해 오고 있었고, 2020년부터 인공지능 수학이라는 과목을 중간에 신설함으로서 일반계 고등학교 과정에서 행렬의 간단한 표현법을 도입하였다. 하지만 전국 개설율이 1%도 안 되어서 사실상 의미없는 행정이 되었다. 사실상 페이퍼 과목에 불과했기에, 교육부는 고심 끝에 2022 개정 교육과정(2025년 첫 적용) 고1 수학(공통수학)부터 행렬을 11년 만에 부활시켰다.[11] 이마저도 행렬의 크기는 대부분 2×2로 제한되어 있으며, 행렬식, 역행렬, 연립일차방정식과 행렬, 그래프 이론과 행렬, 일차변환 등은 다루지 않고 연산 위주만 다루는 것이다.[12]한편 행렬이 11년 동안 일반계 고등학교 교육과정에서 제외될 수 있었던 사유는 ‘명제 합답형’이라는 특정 평가 문항 유형이 지나치게 어려웠고,[13] 나아가 행렬의 실용성과도 동떨어졌다는 의견에 동조되면서부터였다.[14] 다만, 순수 교육학적 기제에 걸맞은 사고 방식을 함양시키는 측면에서 볼 때, 학교 수학이 무조건 실무나 노동에 쓸모 있어야 할 당위성은 없다. 게다가 당시 행렬 제외 결정에는 20%밖에 동의를 얻지 못했는데도 일반 과정에서 빠졌던 게 논란이 되기도 했다.
시간이 지나면서 교과와 수능 간의 분별 없이 지나치게 수능 평가 및 그 출제 범위에만 집착하는 개정 방식 또한 그동안 잘못되어 왔다는 분위기가 교육계 내부에서도 움트기 시작했고, 이 점을 되돌아볼 필요가 있었다는 자성의 목소리도 함께 제기되면서 행렬은 재포함될 수 있게 됐다.
7. 프로그래밍
- Dense Matrix
사각형 모양의 배열에 행렬의 모든 값을 담는 것으로, 수학에서 사용되는 행렬과 똑같이 사용할 수 있기 때문에, 알고리즘도 그대로 적용 가능하고 프로그래밍하기 쉽다. 다만, 행렬에 0이 많으면 메모리를 많이 잡아먹고 쓸데없는 계산도 늘어나기 때문에 비효율적이라는 단점이 존재한다. 그런데, GPGPU의 압도적인 계산 능력을 활용할 수 있다면, 그냥 0은 무시하고 배열을 써서 쉽게 구현하고 모든 계산은 GPGPU 에게 맡겨 버리는 것이 여러 모로 유리하다.
- Sparse Matrix
- CSR Matrix
- CSC Matrix
- DOK Matrix
- Banded Matrix
Dense Matrix와 달리 Ragged Array나 Hash Table형의 자료 구조를 이용해 필요한(0이 아닌) 숫자만 압축해서 기술하는 방법이다. 행렬의 구성요소에 접근하는 방법이 아예 달라지니, Decomposition 같은 알고리즘을 구현하려면 머리를 좀 써야 한다.
Finite Difference 같은 유형의 문제를 풀다 보면 알겠지만, 행렬로 모델링 했을 때 대각선 부분에 0이 아닌 숫자가 집중되는 경우가 많고, 이런 경우 특수한 알고리즘을 이용해 Gaussian Elimination 같은 문제를 효율적으로 풀 수 있다. 과학이나 공학 문제에는 이런 유형의 문제가 스케일만 커진 채로 자주 등장하기 때문에, 행렬의 특성을 잘 공부해서 위에 나온 다양한 종류의 Sparse Matrix 중 하나로 모델링 하면 문제를 더 효율적으로 풀 수 있다.
다만 행렬의 모양이 위에 말한 Sparse Matrix마다의 권장되는 규격과 다르거나, 0이 별로 없는 행렬이 나온다면 Sparse Matrix를 이용하는 것이 오히려 더 비효율적일 수 있으므로 주의하도록 하자.
8. 기타
- 계산 노가다가 행 하나, 열 하나 더해질 때마다 무지막지하게 늘어난다. 예를 들어 행렬식을 구하는 경우, 3차 정사각행렬은 2차의 3배의 계산을, 4차 정사각행렬은 3차의 4배의 계산을 필요로 한다. 5차 정도 되면 맨손으로는 도저히 못 푼다. 뭐 다행스럽게도 실제로 풀 때는 그렇게 계산하라고 하진 않고, "기본행연산으로 만들어진 상삼각행렬의 대각성분의 곱"으로 어찌저찌 잘 풀 수는 있다. 물론 머리 아프기는 마찬가지. 다만 컴퓨터 연산에 매우 친화적이라서 슈퍼컴퓨터의 점수놀음은 대부분 행렬 연산에 기반을 둔 애플리케이션의 실행 시간으로 행해진다. 이를테면 [math(y=ax²+bx+c)]와 같은 기본적인 이차방정식도 이를 컴퓨터로 하여금 계산하게 하는 것은 매우 난감하다. 사람은 직관적으로 이런 식을 이해할 수 있지만, 컴퓨터는 그렇지가 못하기 때문이다. 그러나 이를 행렬식으로 표현하면 문제는 아주 간단해진다. 그냥 곱하기 더하기 연산만 여러 번 반복하면 그게 곧 결과값이 되니까. 이는 컴퓨터에서 하나의 연산을 빠르게 하는 건 어렵지만 같은 시간에 더 많은 데이터에 대해 동일한 연산을 일률적으로 처리하는 건 쉽기 때문이다. 대표적인 예로 인텔 CPU의 MMX나 SSE, 요즘 슈퍼컴퓨팅에서 핫한 GPGPU와 FPGA가 그런 전략을 쓴다. 이런 것과 별도로 병렬 프로그래밍을 써서 멀티코어나 MPI나 Hadoop MapReduce 등을 활용하는 것도 결국 이 원리에 해당한다.
- 행렬(行列)은 일본식 표현으로, 일본에서는 교-레츠(行列)라고 읽는다. 중국어로는 구진(矩阵, 쥐전)이라고 부른다. 다만 행렬식이나, (행렬을 구성하는) 행, 열의 경우 한중일의 표기가 동일하다.
- 현대 프로그래밍 및 딥러닝 방식의 인공지능 발전에 꽤 기여했다. 구글의 알파텐서를 보자.
9. 관련 문서
[1] column에는 기둥이라는 뜻도 있다는 것을 알면 세로줄이라는 뜻도 쉽게 이해가 된다.[2] 대수학의 기본 정리, 산술의 기본 정리, 미분적분학의 기본 정리와 함께 4대 정리라고 부르는 사람도 있다. 사실 이 4개의 정리 모두 대수학, 선형대수학, 해석학, 정수론 등에서 중요하고 기본이 되는 정리들이다.[3] 행렬로 연립방정식을 풀어 본 사람이라면 감이 올 것이다. 이게 정의역이 두 개 이상인 함수의 맛보기이다.[4] 예를 들어 산업 디자인 학과. 이 학과의 경우 행렬은커녕 수포자 수준으로 고등학교 수학을 몰라도 전공을 배우는 데 문제가 없다 카더라.[5] 행벡터인 경우 [math(\mathrm{tr}(\bold{A}^T \bold{B}))][6] 사실 머리를 좀 굴려보면 사원수는 물론이고 복소수, 이원수, 분할복소수 모두를 실행렬만으로 표현하는게 가능하다.[7] 독일어 Einheitsmatrix에서 유래했다. 그러나 고등학교 과정에서 한정적으로 사용되며, 대학교 이상으로는 보통 E 대신 I를 쓰게 된다.[8] 약칭으로 전치 켤레 행렬이라고도 한다[9] 예를 들어서, 모든 에르미트 행렬은 그 고유값이 반드시 실수가 되며, 서로 다른 고유벡터를 취하면 반드시 서로 직교하게 되는 등 여러 독특한 성질을 지니고 있다.[10] 이와 연계되었던 기저 개념인 이항연산, 항등원과 역원도 같이 빠지게 되었다.[11] 새 고교 수학 교육과정서 '행렬' 남기고 '외분' 뺀다[12] 일단 교과과정상 이렇다는 것이고, 시중에 공개된 문제집에서는 2007 개정처럼 위의 내용을 전부 다루고 심지어 선형변환의 행렬 표현을 암시하는 문제와 케일리-해밀턴 정리까지 당당히 서술되기도 한다. 다만, 과학고등학교 등에서 채택한 '고급 대수'에서는 위에서 제거된 내용이 전부 일반화되어 서술되어 있으며, 선형대수학 개론으로 충분히 사용할 수 있게 짜여져 있다.[13] 위에서 살펴본 바와 같이, 중학교에서 배운 실수체 및 직전에 배운 복소수체와는 달리, 행렬은 '벡터 공간'의 원소지만 크기가 다르면 연산이 불가능하고, 행렬의 곱셈은 선형 변환의 합성과 같고 이를 함수로 해석했을 때 함수 합성의 교환법칙이 성립하지 않으므로 행렬곱의 교환법칙이 성립되지 않는 특이한 성질을 지녔기 때문이다. 그래서 옳은 명제를 증명하는 것은 물론 틀린 명제를 반증하기 위해 반례를 제시해야 했지만 이 과정이 학생들 입장에서는 극단적으로 어려웠다는 평가가 나왔다.[14] 하지만 21세기 들어 인공지능 및 컴퓨터과학의 발전 또한 행렬곱 연산이 핵심인데 실용성이 떨어진다는 건 납득하기 어려운 이유다. 실용성이나 실무적인 부분으로 접근할 경우 미분이 오히려 더 쓸모가 없고 난이도 면에서도 훨씬 어렵다. 당장에 행렬을 못한다는 이야기는 데이터라는 개념 전체를 다룰 수 없다는 이야기와 같다. 괜히 이공계 교수들이 수학 교과에 대해 한탄하는 것이 아니다.