1. 벡터와 행렬의 관계

1) 점 P(3, 2)와 행렬A([2, 0],

                            [1, 2])를 곱하면 새로운 행렬 B가 나옴 

① import numpy as np ← numpy 모듈을 np로 불러오겠음

 

② p = np.matrix([[3], [2]]) ← 2 x 1의 행렬이므로 점 P를 행렬(matrix)로 표시 

    A = np. matrix)[[2, 0], [1, 2]]) ← 행렬 A 입력

 

③ A * P ← 행렬의 곱 

 

④ matrix([[6], [7]]) ← 새로운 행렬 B 나옴. 즉, 벡터의 끝 점이 바뀐 것 

 

 

 

2. 도형의 대칭이동 

1) x축에 대해 선대칭으로 변환

  - x축에 대해 선 대칭은 x값의 부호는 그대로, y값의 부호는 반대가 됨 

  - 따라서 변환 행렬(단위 행렬)을 가지고 오고, y값이 부호가 반대이므로 A = ([1, 0],

                                                                                                     [0, -1])을 곱해야 함 

 

 

① %matplotlib inline 

    import numpy as np ← numpy 모듈을 np로 불러오겠음

    import matplotlib.pyplot as plt ← pyplot을 plt로 불러오겠음

 

② p = np.matrix([[1, 3, 3, 1], [1, 1, 2, 1]])  ← <A → B → C → A> 순서로 그림을 그렸으므로 이 순서로 좌표 입력

    A = np.matrix([[1, 0], [0, -1]]) ← x축 대칭인 변환행렬 

 

③ p2 = A * p ← 변환한 행렬 

    print(p2) ← x축에 대해 대칭으로 변환된 행렬 p2를 보여라 

 

④ p= np. array(p) 

    p2 = np.array(p2) ← p와 p2를 이차원 행렬로 배열하라

                                (원래 2 x 4 였음 따라서 우린 x와 y만 있는 2차원에 이것을 그릴것)

   

⑤ plt.plot(p[0, :], [p[1, :]) ← 배열 p의 첫 번째 행과 두 번째 행을 그려라

                                     (즉 x좌표와 y좌표, 코딩에서 숫자는 항상 0부터 시작)

    plt.plot(p2[0, :], p2[1, :]) ← 배열 p2의 첫 번째 행과 두 번째 행을 그려라  

    plt.axis('equal') ← x와 y축을 동등한 크기로 맞춰라 

    plt.grid(color='0.8') ← 간격을 0.8의 굵기로 그려라 

    plt.show( ) ← 보여줘라 

     

 

 

 

2) y축에 대해 선대칭

  - y축에 대해 선 대칭은 y값의 부호는 그대로, x값의 부호는 반대가 됨 

  - 따라서 변환 행렬(단위 행렬)을 가지고 오고, x값이 부호가 반대이므로 A = ([-1, 0],

                                                                                                     [0, 1])을 곱해야 함 

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② p = np.matrix([[1, 3, 3], [1, 1, 2]]) ← 삼각형 ABC의 좌표 넣어 행렬 입력

    A = np. matrix)[[-1, 0], [0, 1]]) ← y축에 선대칭인 변환행렬 입력

 

③ A * P ← 선대칭한 행렬 

 

④ matrix([[-1, -3, -3], [1, 1, 2]])

 

 

 

3) 원점에 대해 선대칭

① (import numpy as np) ← numpy모듈을 np로 불러오겠음

 

② p = np.matrix([[1, 3, 3], [1, 1, 2]]) ← 삼각형 ABC의 좌표를 입력한 행렬 입력

    A = np. matrix)[[-1, 0], [0, -1]]) ← 원점이므로 모든 부호가 바뀐 변환행렬 입력

 

③ A * P ← 원점에 대해 선대칭된 행렬을 구해라 

 

④ matrix([[-1, -3, -3], [-1, -1, -2]])

 

 

 

4) 직선 y = x에 대해 선대칭

① (import numpy as np) ← numpy 모듈을 np로 불러와라

 

② p = np.matrix([[1, 3, 3], [-1, -1, 0]]) ← 삼각형 ABC의 좌표를 입력한 행렬을 입력해라 

    A = np. matrix)[[0, 1], [1, 0]]) ← y=x에 대한 선대칭으므로 둘의 위치가 바뀐 변환 행렬을 입력하라 

 

③ A * P ← y = x에 대해 선대칭된 행렬을 구하라 

 

④ matrix([[-1, -1, 0], [1, 3, 3]])

 

 

 

3.  도형을 확대하고 축소하기 

① %matplotlib inline 

    import numpy as np ← numpy 모듈을 np로 불러오겠음

    import matplotlib.pyplot as plt ← pyplot을 plt로 불러오겠음

 

② p = np.matrix([[1, 1, 2, 1], [3, 1, 1, 3]]) ← 삼각형 ABC (그리는 순서대로 좌표 입력) 좌표를 입력한 행렬 입력

    A = np.matrix([[3, 0], [0, 3]]) ← 3배를 확대시키고 싶은 것이므로 변환행렬에 실수배 3을 곱하면 됨. 

 

③ p2 = A * p ← 3배 확대된 행렬 구해라

    print(p2) ← 3배 확대된 행렬을 보여줘라 

 

④ p= np. array(p) ← p의 배열을 이차원으로 나타내라 

    p2 = np.array(p2) ← p2의 배열을 이차원으로 나타내라 

 

⑤ plt.plot(p[0, :], [p[1, :]) ← 배열 p의 첫 번째 행과 두 번째 행을 그려라 (x좌표, y좌표)

    plt.plot(p2[0, :], p2[1, :]) ← 배열 p2의 첫 번째 행과 두 번째 행을 그려라 

    plt.axis('equal') ← x와 y의 크기는 균일하게 맞춰라 

    plt.grid(color='0.8') ← 0.8의 굵기로 격자무늬를 그려라 

    plt.show( ) ← 보여줘라 

 

 

 

4. 도형을 회전시키기 

1) 회전 행렬을 만드는 방법

① %matplotlib inline

    import numpy as np ← numpy모듈을 np로 불러와라

    import matplotlib.pyplot as plt ← pyplot을 plt로 가져와라 

 

② p = np.matrix([[3, 3, 5, 5, 3], [3, 1, 1, 3, 3]]) ← 사각형 ABCD의 좌표를 행렬로 입력해라 

 

③ th = np.radians(45) ← 반 시계방향으로 45도 회전해라 (도수법을 호도법으로 전환) 

    A = np.matrix([[np.cos(th), np.sin(-th)], [np.sin(th), np.cos(th)]]) ← 위의 회전행렬을 입력

 

④ p2 = A * p ← 반 시계방향으로 45도 회전한 행렬 구하기

    print(p2) ← 반 시계방향으로 45도 회전한 행렬을 나타내라 

 

⑤ p = np.array(p) ← p를 이차원 배열로 나타내라 

    p2 = np.array(p2) ← p2를 이차원 배열로 나타내라

    plt.plot(p[0, :], [p[1, :]) ← 배열 p의 첫번째, 두번째 행을 그려라 

    plt.plot(p2[0, :], p2[1, :]) ← 배열 p2의 첫번째, 두번째 행을 그려라 

    plt.axis('equal') ← x축과 y축을 균일하게 맞춰라 

    plt.grid(color='0.8') ← 0.8의 굵기로 격자 무늬를 넣어라 

    plt.show( ) ← 보여줘라 

 

 

5. 2 X 2 행렬이 아닌 3 X 3 행렬 사용하기

1) 대칭 이동이나 확대 및 축소할 땐 변환 행렬을 2x2 행렬을 사용했지만 평행 이동시 3x3의 행렬을 이용해야 함

   (평행 이동은 덧셈이기 때문)

 

2) 그렇기 때문에 동차 좌표 방식을 도입

  - 일반적인  이차원 좌표 (x, y)에 매개변수 w 도입하여 (wx, wy, w)라고 표현 

  - 매개변수 w 값은 항상 1이므로 x와 y값은 변화하지 않음 

 

 

3) 삼각형 ABC를 x축 방향으로 2만큼 평행이동, y축 방향으로 3만큼 평행이동 하는 방법 

  - 동차좌표로 표현하면 → ([1, 0, 2], 

                                    [0, 1, 3],

                                    [0, 0, 1]) 

① %matplotlib inline 

    import numpy as np → numpy모듈을 np로 불러오겠음

    import matplotlib.pyplot as plt → pyplot을 plt로 불러오겠음 

 

② p = np.matrix([[1, 3, 3, 1], [1, 1, 2, 1], [1, 1, 1, 1]]) ← 삼각형 ABC (그리는 순서대로) 행렬 입력

    A = np.matrix([[1, 0, 2], [0, 1, 3], [0, 0, 1]]) ← 동차좌표를 이용해 평행이동을 하는 변환 행렬 입력

 

③ p2 = A * p ← 변환된 행렬 구하기 

    print(p2) ← 변환된 행렬 나타내라 

 

④ p = np.array(p) ← 행렬 p를 이차원 배열로 나타내라

    p2 = np.array(p2) ← 행렬 p2를 이차원 배열로 나타내라 

    plt.plot(p[0, :], [p[1, :]) ← 배열 p의 첫번째, 두번째 행을 그려라

    plt.plot(p2[0, :], p2[1, :]) ← 배열 p2의 첫번째, 두번째 행을 그려라 

    plt.axis('equal') ← x축과 y축의 크기를 균일하게 맞추어라 

    plt.grid(color='0.8') ← 격자무늬를 0.8의 굵기로 그려라 

    plt.show( ) ←보여줘라 

 

 

 

6. 일차변환의 조합 

 

1) 삼각형 ABC를 x축 방향으로 2만큼, y축 방향으로 3만큼 평행이동한 후에 반 시계 방향으로 90도 회전시키기 

① %matplotlib inline

    import numpy as np ← numpy 모듈을 np로 불러와라

    import matplotlib.pyplot as plt ← pyplot을 plt로 불러와라 

 

② p = np.matrix([[1, 3, 3, 1], [1, 1, 2, 1], [1, 1, 1, 1]]) ← 삼각형ABC의 좌표를 행렬로 입력하라 

 

A = np.matrix([[1, 0, 2], [0, 1, 3], [0, 0, 1]]) ← 동차좌표에서 평행이동하여 행렬을 입력해라 

    th = np.radians(90) ← 도수법을 호도법으로 전환함 

    A = np.matrix([[np.cos(th), np.sin(-th), 0], [np.sin(th), np.cos(th), 0], [0, 0, 1]]) A

         ← 동차좌표가 원래 ([1, 0, 0], [0, 1, 0], [0, 0, 1]) 이었으므로 동차좌표를 이용해 회전 행렬 입력 

 

④ p2 = B * A * p ← 평행이동하고, 회전까지 한 행렬 구하기 

    print(p2) ← 평행이동하고 회전한 행렬을 나타내라 

 

⑤ p = np.array(p) ← 행렬 p를 이차원 배열로 나타내라 

    p2 = np.array(p2) ← 행렬 p2를 이차원 배열로 나타내라 

    plt.plot(p[0, :], [p[1, :]) ← 배열 p의 첫번째, 두번째 행을 그려라 

    plt.plot(p2[0, :], p2[1, :]) ← 배열 p2의 첫번째, 두번째 행을 그려라 

    plt.axis('equal') ← x축과 y축의 크기를 균일하게 해라 

    plt.grid(color='0.8') ← 0.8의 굵기로 격자무늬를 그려라 

    plt.show( ) ← 보여줘라 

 

1. 행렬의 덧셈과 뺄셈 

 

1) 아침 운동 횟수

이름 스쿼트 팔굽혀펴기
철수 50번 40번
영희 10번 10번

 

2) 밤 운동 횟수

이름 스쿼트 팔굽혀펴기
철수 30번 100번
영희 20번 15번

① import numpy as np ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[50, 40], [10, 10]]) ← 아침 운동 횟수인 A 행렬 입력

    B = np.matrix([[30, 100], [20, 15]]) ← 밤 운동 횟수인 B 행렬 입력

 

③ A + B ← A와 B행렬의 합  

 

 

3) 하루 총 운동 횟수

이름 스쿼트 팔굽혀펴기
철수 80번 140번
영희 30번 25번

 

 

 

2. 행렬의 실수배

 

1) 하루 총 운동 횟수, 다음날 이 횟수의 80%를 목표한 경우 

이름 스쿼트 팔굽혀펴기
철수 30번 100번
영희 20번 15번

 

 

① import numpy as np ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[80, 140], [30, 25]]) ← 하루 총 횟수인 A 행렬을 입력

   

③ 0.8 * A ← 목표를 80% 했으므로 실수인 0.8을 곱해야 함

 

④ matrix([[64, 112], [24, 20]]) ← 다음 날 80% 목표치 

 

 

 

3. 행렬의 곱셈

 

1) 두 사람이 구입할 개수

이름 사과 바나나
철수 1개 3개
영희 2개 1개

2) 편의점과 백화점에서 파는 가격

이름 편의점 백화점
사과 1500원 2500원
바나나 1300원 2300원

 

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[1, 3], [2, 1]]) ← 철수와 영희가 구입할 바나나와 사과의 개수인 A 행렬 입력

    B = np.matrix([[150, 250], [130, 230]]) ← 편의점과 백화점에서 파는 바나나와 사과의 값이 있는 B 행렬 입력 

 

③ A * B ← A행렬과 B행렬을 곱하라 

 

④ matrix([[540, 940], [430, 730]])

 

 

3) 두 사람이 지불할 가격

이름 편의점 백화점
철수 5400원 9400원
영희 4300원 7300원

 

 

 

4. 곱셈규칙

 

1) 칼로리 표 

음식명  칼로리
사과 145kcal/1개
바나나 72kcal/1개

 

2) 두 사람이 섭취한 양 

이름 사과 바나나
철수 1개 3개
영희 2개 1개

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[1, 3], [2, 1]]) ← 섭취한 양이 나온 A 행렬

    B = np.matrix([[145], [72]]) ← 음식의 칼로리가 나온 B 행렬

 

③ A * B ← A 행렬과 B 행렬의 곱 

 

④ matrix([[361], [362]])

 

 

 

5. 단위 행렬

 

1) 단위행렬E란? 

      : 대각선상에 있는 요소가 모두 1이고, 그 외의 값은 0인 행렬 

 

2) 단위행렬의 규칙

   - AE = EA = A

 

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[1, 3], [2, 1]]) ← A행렬 입력

    E = np.matrix([[1, 0], [0, 1]]) ← 단위행렬 E 입력

 

③ A * E ← A행렬과 단위행렬 E의 곱

    matrix([[1, 3], [2, 1]]) 

 

④ E * A ← E행렬과 단위행렬 A의 곱

    matrix([[1, 3], [2, 1]])

 

- 두 곱은 순서 상관 없이 A 행렬 값과 같다는 것을 알 수 있음 

 

 

 

6. 역행렬

1) 역행렬이란?

      : AB = BA = E 일 때, B는 A의 역행렬임 

      : 어떤 행렬에 곱한 답이 단위행렬이 되는 행렬을 말함 

 

2) 역행렬을 구할 때 대각선 곱이 0이 아님을 먼저 확인해야 함 

 

 

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[5, 3], [2, 1]]) ← A행렬 입력

    B = np.linalg. inv(A) ← A행렬의 역행렬 B를 구해라 

 

③ B ← A행렬의 역행렬은?

 

④ matrix([[-1., 3], [2., -5]]) ← A행렬의 역행렬 

 

⑤ (A * B) .astype(np. int64) ← <linalg. inv(A)>는 부동 소수점으로 표현되므로 astype.int를 통해 정수형태로 나타내라고 명령 

    matrix([[1, 0], [0, 1]], dtype=int64)

 

 

 

7. 역행렬과 연립방정식

1) 5x + 3y = 9, 2x + y = 4 두 개의 연립방정식 역행렬로 풀기 

① (import numpy as np) ← numpy 모듈을 np로 불러오겠음

 

② A = np.matrix([[5, 3], [2, 1]]) ← 좌변의 행렬 A 입력

   

③ inv_A = np.linalg. inv(A) ← A행렬의 역행렬 구하기 

 

④ B = np.matrix([[9], [4]]) ← 우변의 행렬 B 입력

 

⑤ inv_A * B ← A의 역행렬 * 행렬 B

 

⑥ matrix([[3], [-2]])  ← 연립 방정식의 해 

 

+ Recent posts