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]])  ← 연립 방정식의 해 

 

1. 벡터의 외적 구하기 

1) 3차원에서의 벡터, 나머지 하나의 성분은 다른 두 벡터의 성분의 수직인 벡터가 됨 

 

2) 

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

 

② a = np.array([0, 1, 2])

    b = np.array([2, 0, 0]) → 벡터 a와 b의 성분 입력 (3차원이기 때문에 좌표가 3개)

 

③ np.cross(a,b) → 벡터 a와 b를 외적해라 

 

 

2. 삼각형의 면적 구하기 

1) 벡터의 외적 공식 

- a벡터 크기 * b벡터 크기 * sin각도 

- 이 공식 자체로 외적공식의 크기는 평생사변형 넓이임 

 

2)

① a = np.array([2,4])

    b = np.array([3,1]) → 벡터 a와 b의 성분 입력 

 

② cross_ab = np.cross(a, b) → 벡터 a와 b의 외적을 구하라 

 

③ s = np.linalg.norm(cross_ab) ← 벡터 a와 b를 외적한 값의 크기를 구하라 그리고 그것은 넓이(s)이다.

 

④ s / 2 ← 평행사변형 넓이 s를 반으로 나눠야 삼각형의 넓이가 됨 

 

 

1. 철수의 기여도 구하기 (각도=60, 철수가 끄는 힘 = 10)

1) 철수와 영희가 각각의 벡터로 어떤 물체를 당긴다고 할 때, 철수의 기여도를 알아보는 문제

(둘의 벡터의 방향이 다르기 때문에 단순히 더할 수 없음)

 

2) 

① import math ← 사칙연산 math 모듈을 불러오겠음

 

② 10 * math.cos(math.radians(60)) → 벡터 a는 힘 * 각도임 

 

③ 5.0 → 결국 철수는 10의 힘으로 끌었지만 영희를 도와주는데는 반 정도만 기여를 했음 

 

 

2. 두 직선이 이루는 각도 구하기 

1) 벡터의 내적 공식 이용하여 cos 각도 알기 

- 위 철수와 영희 그림에서 알 수 있듯이 벡터의 내적 공식은 

- 벡터 a ·b = 벡터a의 크기 * cos각도 * 벡터 b의 크기 

- 일의 양 = 힘의 크기 x 이동 거리 (벡터a의 크기 * cos각도 = 힘, 벡터b의 크기 = 이동거리)

 

 

2) 

① import math → math 모듈을 불러오겠음

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

 

② a = np.array([2,7]) 

    b = np.array([6,1])

    c = np.array([2,3])

    d = np.array([6,5]) ← 각각 점의 좌표 입력

 

왜 벡터 구할땐 array로 표현하는지?

 

③ va = b - a

    vb = d - c

      → 각각의 a, b 벡터의 성분 표시

 

④ norm_a = np.linalg.norm(va)

    norm_b = np.linalg.norm(vb)

      → linalg.norm함수는 벡터의 크기를 구하라는 명령어

 

⑤ dot_ab = np.dot(va, vb) ← 벡터의 내적을 구하라 

 

⑥ cos_th = dot_ab / (norm_a * norm_b) ← cos각도 구하는 벡터의 내적 공식을 변형한 것  

    rad = math.acos(cos_th) → cos역함수의 각도를 라디안의 단위로 구하기 

    deg = math.degrees(rad) → 라디안값의 단위를 도수로 표현하기 

    print(deg) → 각도를 보여라 

1. 두 점 (1,2)와 (2,4)를 잇는 직선의 방정식 (벡터 방정식으로 푼 값과 동일한지 비교하기 위해)

 

1) 벡터의 방정식 이용

- 벡터p = 벡터a + k*벡터v

- y = ax + b

 

2)

① from sympy import Symbol, solve → sympy를 Symbol로 지정하여 풀겠다

 

② a = Symbol('a')

    b = Symbol('b') → a와 b의 심볼을 각각 a, b로 정의하겠다

 

③ ex1 = -1*a + b-2

    ex2 = 2*a + b-4

     → 좌표(-1,2)와 좌표(2,4)를 가지고 만들어낸 방정식 두 개

 

③ solve((ex1, ex2)) → 연립방정식 2개를 풀어라 

 

 

2. 두 벡터의 교점 풀기 

1)각 좌표 

- A(2,7)

- B(6,1)

- C(2,3)

- D(6,5)

 

2) 연립방정식

- 벡터OP = k * 벡터AB + 벡터 OA

- 벡터 OP = t * 벡터CD + 벡터 OC

 

3) 

① from sympy import Symbol, solve → sympy를 Symbol로 지정하여 풀겠다

 

② k = Symbol('k')

    t = Symbol('t') → k와 t의 심볼을 각각 k, t로 정의하겠음

 

③ ex1 = 4*k - 4*t

    ex2 = -6*k -2*t + 4 → 연립 방정식 

 

④ solve((ex1,ex2)) → 연립방정식 두 개를 풀어라

 

 

 

1. 벡터 OA 의 방향 구하는 방법 

1) atan(tan의 역함수)를 사용하는 이유

- tan(각도) = 높이/밑변 → atan(높이/밑변) = 각도 

 

2)

① import math ← 사칙연산을 하는 math 모듈을 불러오겠음 

 

② rad = math.atan2(3, 2)

     → tan의 역함수 명령문을 통해 라디안 단위값을 구해라 

     → 밑변이 분모이므로 y값이 먼저 나와야 함  

 

③ th = math.degrees(rad) → 라디안 값을 도수법으로 변환해라 

 

④ th ← 저 사진의 각도는?

 

 

2. 벡터의 연산 (a성분은 (2,2) b성분은 (2,-1))

① 배열 Numpy를 np로 불러오겠음

 

② a = np.array([2,2])

    b = np.array([2.-1)] →벡터 a, b의 성분을 array 배열 명령문을 통해 표현했음

 

③ a+b

    array([4,1]) → 벡터 a와 벡터 b를 더해라 

 

④ a-b

   array([0,3]) → 벡터 a와 벡터 b를 빼라

 

⑤ 2*a

    array([4,4]) → 벡터 a 성분에 상수 2를 곱해라 

 

 

 

1. 변수를 대입, 비교, 판단하기 

 

① a=5 ← 변수 a를 5로 지정하겠다

    a ← a는? (맞게 세이지를 했다면 5가 나와야 함)

 

② 2 == 2 ← 2가 2인지 판단하라 (참이라면 TRUE, 거짓이면 FALSE)

 

③ 2 == 3 ← 2가 3인지 판단하라 

 

 2 < 3 ← 2가 3보다 작은지 판단하라 ( A<B, A가 B보다 작다는 비교 명령문) 

 

⑤ a == 5 ← 아까 지정했던 변수a의 값이 5가 맞는지 판단하라

 

 

2. 수학 계산 

① 2**3 ← 2를 3제곱 하라 

 

② 2^3 ← 2를 3제곱 하라 

 

③ 10%3 ← 10을 3으로 나눴을 때의 나머지를 나타내라 

 

④ 10/4 ← 10을 4로 나눠라 

 

⑤ 10//4 ← 10을 4로 나눴을 때의 몫을 나타내라 

 

⑥ sqrt(3.4) ← 루트 3.4를 구해라 

 

⑦ exp(2) ← 자연상수 e의 2제곱을 구해라 

 

 

3. 실수, 유리수, 정수의 유형 구분 

① x=1

    type(x) → x를 1로 지정했을 때 x의 유형은 어떤 것인가? (integer = 정수)

 

② x=1/2

    type(x) → x를 1/2로 지정했을 때 x의 유형은 무엇인가? (rational = 유리수)

 

③ x = 'hello'

    type(x) → x 변수에 hello라는 배열을 만들건데, 이건 무슨 유형인가? (string = 배열)

 

 

4. 여러 식 함께 쓰기 

① ;(세미콜론)을 이용하면 여러식을 함께 사용할 수 있음

 

② a=5; b=6; c=a+b ← a를 5로, b를 6으로, c를 a+b라고 지정할 것임

    c ← 그렇다면 c 값은? 

 

 

5. 방정식의 해를 구하기 

① x = var('x') ← x를 변수로 지정하겠음

    solve(x^2 + 3*x + 2, x) ← x^2 + 3*x + 2 이 식을 x에 관해서 풀어라 

 

 

 

'스튜어트 미분적분학 (sage) > 0장 : sage 시작' 카테고리의 다른 글

1. sage 사용하기  (0) 2021.01.20

1. 굳이 다운로드 받지 않고 사이트에서 이용하는 방법 

sagecell.sagemath.org/

 

Sage Cell Server

Type some Sage code below and press Evaluate. About SageMathCell About SageMathCell project is an easy-to-use web interface to a free open-source mathematics software system SageMath. You can help SageMath by becoming a . It allows embedding Sage computati

sagecell.sagemath.org

 

2. 다운로드를 통해 sage를 이용하는 방법 (용량때문에 포기)

www.sagemath.org/

 

SageMath Mathematical Software System - Sage

SageMath is a free and open-source mathematical software system.

www.sagemath.org

 

3. 강원대학교 서버를 이용해 sage 이용하기 (해당 교수님 성함 찾아서 들어가야함. 아이디비번 까먹음, 교수님의 승인이 필요..)

sagemath.kangwon.ac.kr/

 

KNU JupyterHub

 

sagemath.kangwon.ac.kr

4. 이 사이트를 로그인하고 이용하기 (가장 편한 방법)

cocalc.com/projects?session=default

 

https://cocalc.com/app#projects?session=default

 

cocalc.com

위 모든 사이트는 크롬에서만 작동함. 

1. 점(1,6)과 직선 y=3/4x - 1 사이의 거리 구하기

1) 일반적인 공식 : |ax1 + by1 + c|/sqrt(a^2+b^2)

 

2)python을 통해 

① import math ← 사칙연산 코드를 불러오겠음 

 

② x=1 ← x좌표 1

    y=6 ← y좌표 6

    a=3 ← 선분에 4를 곱해서 정수 형태로 변환한 것, 즉 x의 계수                                                                                            

    b=-4 ← y의 계수

    c=-4 ← 상수 

 

③ math.fabs(a*x + b*y +c)/math.sqrt(a**2 + b**2)

     ← fabs()는 절댓값을 표현 

     ← 직선과 점 사이의 거리 구하는 공식을 통해 거리를 계산해라 

 

 

2. 직선으로 둘러싸인 영역의 면적을 구하시오. 

1) 헤론의 공식  : S = sqrt(s(s-a)(s-b)(s-c), s = (a+b+c)/2

 

2) python을 이용해 삼각형의 면적 구하기 

 

① import math ← 사칙연산 코드를 불러오겠음

 

② x = [1, 3, 6]

    y = [5, 1, 4]

      → x와 y의 좌표를 [A, B, C]순서로 입력했음

 

③  a = math.sqrt((x[1]-x[0])**2 + (y[1]-y[0])**2) ← 변 AB의 길이 

     b = math.sqrt((x[2]-x[1])**2 + (y[2]-y[1])**2) ← 변 BC의 길이

     c = math.sqrt((x[2]-x[0])**2 + (y[2]-y[0])**2) ← 변 AB의 길이 

        ← 0,1,2는 자리 순서임. 숫자 대입하는거 아님 

 

④ s = (a+b+c)/2

    math.sqrt(s * (s-a) * (s-b) * (s-c)) ← 헤론의 공식을 이용해서 세 직선에 둘러싸인 삼각형의 면적을 계산해라 

1. 반지름이 300인 원 그리기 (y>=0)

① %matplotlib inline

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

    import numpy as np ←numpy를 np로 불러오겠다 

 

② r = 300 ← 원의 방정식은 300으로 정한다

   x = np.arange(-r, r+1) ← x의 값의 범위를 -300 ~ 300으로 정하겠음   

   y = np.sqrt(r**2 - x**2) ← r^2 = x^2 + y^2인 원의 방정식을 이용한 것, sqrt는 루트임 

 

③ plt.plot(x, y)

    plt.axis('equal')

    plt.grid(color='0.8')

    plt.show()

 

(y의 범위를 0보다 크게 설정했으므로!)

 

 

2. 반지름이 300이고 중심이 (200, 300)인 원 그리기

① %matplotlib inline 

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

    import numpy as np ← numpy를 np로 불러오겠음 

 

② a = 200

    b = 300

      → 원의 중심 (200,300)을 (a,b)로 표현 

 

③ r=300 → 반지름을 300으로 정하겠음

    x = np.arange(a-r, a+r+1)

      → x 값의 범위를 -100~500로 설정, 위의 1번은 그냥 -300~300이었지만 이것은 중점이 다르기때문에 중점을 중심으로 옮겨주는 것

    

④ y = np.sqrt(r**2 - (x-a)**2) + b → 원의 방정식에서 중점을 중심으로 좌표를 옮겨줌, y=원의 위쪽 

    y = -y + 2*b ← 원의 아래쪽 방정식 2b는 300~-300이므로 

 

⑤ plt.plot(x,y) ← x와 y의 값을 가지고 꺾은선 그래프를 그려라 

    plt.plot(x, y2) ← x와 y2를 가지고 꺾은선 그래프를 그려라 

    plt.axis('equal') ← x와 y의 비율을 똑같이 설정 

    plt.grid(color='0.8') ← 0.8의 진하기로 격자를 그려라

    plt.show() ← 그래프를 그려라 

 

 

 

1. 중점을 구하는 일반적인 수학식 : ((x1+x2)/2, (y1+y2)/2) 

 

2. (0,1)과 (6,5)를 잇는 선분의 수직 이등분선을 구해라. (중점을 (cx, cy)라 가정)

① %matplotlib inline

    import matplotlib.pyplot as plt ← matplotlib 패키지를 사용하고, pyplot을 plt로 불러오겠다

    import numpy as np ← Numpy를 np로 불러오겠다

 

② a1 = (5-1)/(6-0)

    b1 = 1

     → 두 점을 잇는 선분의 기울기 a1과 y절편 b1 구함 

 

③ cx = (0+6) / 2

    cy = (1+5) / 2

     → 두 점을 잇는 선분의 중점

 

④ a2 = -1/a1 ← 두 점을 잇는 선분의 수직 이등분선의 기울기(두 선분이 수직이면 기울기를 곱했을 때 -1이 나와야 하므로)

 

⑤ b2 = cy - a2*cx ← b절편을 구하는 방법 : b2=y-a2*x 

 

⑥ x = np,arange(0,7) → x의 값을 0~7까지 설정하겠다

   y1 = a1 * x + b1 → 두 점을 잇는 선분

   y2 = a2 * x + b2 → 그 선분의 수직이등분선 

 

⑦ plt.plot(x,y1) → x와 y1을 가지고 꺾은 선 그래프를 그려라

    plt.plot(x,y2) → x와 y2를 가지고 꺾은 선 그래프를 그려라  

    plt.axis('equal') → x와 y의 축의 비율을 똑같이 해라

    plt.grid(color='0.8') → 격자를 0.8 진하기로 그려라 

    plt.show() → 그래프를 그려라 

 

 

3. 삼각비를 이용해 원 그리기 

① %matplotlib inline

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

    import numpy as np ← Numpy를 np로 불러오겠음

 

② th = np.arange(0,360) ← 각도 θ를 0부터 359까지 하겠음 

 

③ x = np.cos(np.radians(th)) 

    y = np.sin(np.radians(th))

      → ②의 np.radians(th))의 값을 넣어서 구한 cos인과 sin 값을 x와 y로 지정하겠음 

      → 만약 좌표를 옮겨서 원을 그리고 싶으면 각각 x와 y에 상수를 더해주면 됨

 

④ plt.plot(x,y) ← 꺾은선 그래프를 그려라 

    plt.axis('equal') ← x와 y의 축의 비율을 실제와 똑같이 해라 

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

    plt.show ← 그래프를 그려라 

 

 

4. 직각을 사이에 둔 두 변의 비율로 각도를 구해라. 

① np.arctan2(y, x) ← artan은 아크탄젠트로 탄젠트의 역함수(1/tan)임 

 

② rad = np.arctan2(3, 4) ← 라디안의 값을 이용해 각도를 구해라 

    th = np.degrees(rad) ← 라디안을 도수법으로 변환한다. 

    th ← 각도는?

    

+ Recent posts