중고생들을 위한 매스매티카 기초#40:
오늘의 주제: Array 생성과 간단한 Matrix 연산
(명령어: Array)
-
* 이 영상은 콩글리쉬와 브로큰 잉글리쉬/코리안, 그리고 주변잡음을 포함하고 있습니다.
나레이터: John Lee
학생: 존리
선생님: Jon Lee
* 매스매티카는 무료 로 온라인에서 TRY할 수 있습니다. 자세한 내용은 이 화면 또는 설명에 있는 링크를 참고하세요. - JohnLeeEdu.Tistory.Com/28
Array again
Table을 사용해서 Array를 만들었었다.
In[490]:= Table[i + j, {i, 3}, {j, 5}]
Out[490]= {{2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}}
Array라는 명령어를 써보자
In[491]:= Array[f, 5]
Out[491]= {f[1], f[2], f[3], f[4], f[5]}
In[492]:= Array[f, {3, 5}]
Out[492]= {{f[1, 1], f[1, 2], f[1, 3], f[1, 4], f[1, 5]},
{f[2, 1], f[2, 2], f[2, 3], f[2, 4], f[2, 5]}, {f[3, 1], f[3, 2], f[3, 3], f[3, 4], f[3, 5]}}
In[493]:= Array[Plus, {3, 5}]
Out[493]= {{2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}}
In[494]:= Array[2 # &, 5]
Out[494]= {2, 4, 6, 8, 10}
In[495]:= Array[10 # &, 5]
Out[495]= {10, 20, 30, 40, 50}
In[496]:= Array[10 # &, {3, 5}]
Out[496]= {{10, 10, 10, 10, 10}, {20, 20, 20, 20, 20}, {30, 30, 30, 30, 30}}
In[497]:= Array[10 #1 &, {3, 5}]
Out[497]= {{10, 10, 10, 10, 10}, {20, 20, 20, 20, 20}, {30, 30, 30, 30, 30}}
In[498]:= Array[{#1, #2} &, {3, 5}]
Out[498]= {{{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}},
{{2, 1}, {2, 2}, {2, 3}, {2, 4}, {2, 5}}, {{3, 1}, {3, 2}, {3, 3}, {3, 4}, {3, 5}}}
In[499]:= Array[#1 + #2 &, {3, 5}]
Out[499]= {{2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}}
In[500]:= Table[i + j, {i, 3}, {j, 5}]
Out[500]= {{2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}}
In[501]:= Array[#1 + #2 &, {3, 5}]
Out[501]= {{2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}, {4, 5, 6, 7, 8}}
In[502]:= Array[Subscript[a, #1, #2] &, {3, 5}] // Grid
Out[502]=
a1,1 a1,2 a1,3 a1,4 a1,5
a2,1 a2,2 a2,3 a2,4 a2,5
a3,1 a3,2 a3,3 a3,4 a3,5
In[503]:= Table[Prime[i], {i, 5}]
Out[503]= {2, 3, 5, 7, 11}
In[504]:= Array[Prime, 5]
Out[504]= {2, 3, 5, 7, 11}
In[505]:= Array[Prime[#] &, 5]
Out[505]= {2, 3, 5, 7, 11}
In[506]:= Array[Times, {9, 9}] // Grid
Out[506]=
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
Matrix in 매스매티카
결국 Matrix도 Array이다. 모두다 리스트 또는 리스트안 리스트다.
결국 Matrix도 Array이다. 모두다 리스트 또는 리스트안 리스트다.
2 x 3 Matrix는 원소가 3개인 순서쌍이 2개가 있는 것과 같다.
In[507]:= {{1, 2, 3}, {4, 5, 6}} // Grid
Out[507]= 1 2 3 4 5 6
매스매티카에서 1 x 3 Matrix 와 3 x 1 Matrix는 둘 다 그냥 가로로 된 리스트로 사용한다.
In[508]:= {1, 2, 3}
Out[508]= {1, 2, 3}
Matrix 연산 (더하기/빼기)
크기가 같은 Matrix는 그냥 더할 수있다. 다음과 같은 덧셈을 하고 싶으면 1 2 3
4 5 6 + 10 20 30
100 200 300 = 11 22 33 104 205 306
In[509]:= {{1, 2, 3}, {4, 5, 6}} + {{10, 20, 30}, {100, 200, 300}}
Out[509]= {{11, 22, 33}, {104, 205, 306}}
{{11, 22, 33}, {104, 205, 306}} // MatrixForm 11 22 33
104 205 306
In[510]:= {{1, 2, 3}, {4, 5, 6}} - {{10, 20, 30}, {100, 200, 300}} // MatrixForm
Out[510]//MatrixForm=
-9 -18 -27 -96 -195 -294
Matrix 연산 (곱하기)
교과서에 나오는 다음과 같은 Matrix는 곱하기는 Dot (.)을 이용하자 1 1 1
10 10 10
1 2 3 4 5 6
= 9 12 90 120
In[511]:= {{1, 1, 1}, {10, 10, 10}}.{{1, 2}, {3, 4}, {5, 6}}
Out[511]= {{9, 12}, {90, 120}}
교과서에 나오지 않는 크기가 같은 두 Matrix의 원소별 곱하기는 *를 사용하자 1 1 1
10 10 10 * 1 2 3
4 5 6 = 1 2 3 40 50 60
In[512]:= {{1, 1, 1}, {10, 10, 10}} * {{1, 2, 3}, {4, 5, 6}}
Out[512]= {{1, 2, 3}, {40, 50, 60}}
두 벡터의 내적도 Dot으로 구한다.
In[513]:= {a, b, c}.{x, y, z}
Out[513]= a x + b y + c z
Matrix 역행렬/Diterminant 구하기
In[514]:= Inverse[{{a, b}, {c, d}}] // MatrixForm
Out[514]//MatrixForm=
d
-b c+a d - b
-b c+a d
- c
-b c+a d a -b c+a d
In[515]:= Inverse[{{1, 2}, {3, 4}}] // MatrixForm
Out[515]//MatrixForm=
-2 1
3 2 -1
2
In[516]:= Det[{{1, 2}, {3, 4}}]
Out[516]= -2
In[517]:= {2, 4}.{1, 1}
Out[517]= 6