16. 유리수
유리수(有理數, rational number)는 두 정수의
분수 형태(단 분모는 반드시 0이 아니다)로 나타
낼 수 있는 실수를 말한다.
유리수는 (0으로 나누는 것을 제외한) 사칙연산
(덧셈, 뺄셈, 곱셈, 나눗셈)에 대해 닫혀있는 '최소
의' 집합이기도 하다
16
20. 실수
실수 [實數, real number] 정수의 몫으로 정의되
는 유리수의 범위에서는 대소의 순서를 정할 수
있으며, 사칙연산을 자유로이 할 수 있다.
그러나 이 범위에서는 역시 불완전한 점이 많다.
이를테면, 단위의 길이를 가지는 정사각형의 대
각선의 길이(x=2의 근)는 유리수로 나타낼 수 없
다.
이와 같은 결함을 보완하기 위하여 유리수에 무
리수를 첨가하여 수의 범위를 실수까지 확장한
것이다.
20
22. 복소수
복소수(複素數, complex number)는 다음 꼴로
나타낼 수 있는 수 이다.
a+bi
이 때 a, b는 실수이고 i는 허수단위로 i2=-1을
만족한다. 실수 a를 그 복소수의 실수부, 실수 b
를 복소수의 허수부라고 부른다.
모든 실수는 복소수에 포함된다. 왜냐하면 모든
실수는 허수부가 0인 복소수로 표시할 수 있기 때
문이다.
22
25. 항등원
항등원(恒等元)은 집합의 어떤 원소와 연산을 취
해도, 자기 자신이 되는 원소를 말한다. 쉽게 말해
서, 1개의 양을 전혀 달라 보이는 다른 양과 같게
만드는 수학적 관계를 말한다고 생각하면 된다.
25
26. 반수: 덧셈
반수(反數)는 그 수를 더했을 때 0이 되는 수를 말
한다. 예를 들면 7의 경우 -7에 7을 더하면 0이
되므로 7의 반수는 -7이다.
다르게 말하면 어떤 양수 n의 반수는 그와 절댓값
이 같은 음수라고 할 수 있으며 그 역도 성립한다.
정수, 유리수, 실수, 복소수는 음수가 있기 때문에
모두 반수가 있다.
26
27. 역수 : 곱셈
어떤 수의 역수(逆數,reciprocal) 또는 곱셈 역원
(-逆元, 영어: multiplicative inverse)은 그 수와
곱해서 1, 즉 곱셈 항등원이 되는 수를 말한다.
x의 역수는 1/x 또는 x -1로 표기한다.
곱해서 1이 되는 두 수를 서로 역수
27
29. 절댓값은 거리의 개념이므로 반드시 0또는 양수이어야하며, 만약
실수 a가 음수라면, a에 (-1)을 곱해 양수화
절대값 absolute value
어떤 실수 a를 수직선에 대응시켰을 때, 수직선의
원점에서 실수 a까지의 거리를 의미한다. 이것을
기호로 |a|로 표시.
29
34. sympy 모듈 이란
SymPy는 symbolic mathematics을위한
python 라이브러리입니다.
SymPy는 가능한 한 간단하게 코드를 유지하는
것은 이해하기 쉽게 확장 할 수있는 a full-
featured computer algebra system (CAS)처리
34
35. sympy 구조
SymPy는 symbolic mathematics를 처리하기 위
해 다양한 객체들로 구성해서 평가해 수학처럼
문제를 푸는 체계
35
Sympy는 정의한 것은 pi도
하나의 인스턴스 객체 이므
로 이 값을 처리를 위해서는
평가(evalf)를 해야 함
36. sympy 객체
Sympy객체를 변수에 할당해서 사용하지만 별도
의 객체로 역할 함
36
Symbol로 정의할 때
들어간 문자열의 실
제 name이고 할당
된 참조변수는
symbol 객체가 할당
된 변수라 이름이 달
라도 됨
38. sympy 구조
SymPy는 symbolic mathematics를 처리하기 위
해 다양한 객체들로 구성되며 이를 평가해 수학
처럼 문제를 푸는 체계
38
Sympy는 정의한 것은 pi도
하나의 인스턴스 객체 이므
로 이 값을 처리를 위해서는
평가(evalf)를 해야 함
58. 숫자타입
숫자에 대한 객체를 관리하는 데이터 타입
Numberic Types
int
float
long(2.x)
complex
숫자타입도 하나의 객체이므로 1 이 생성
되면 동일한 context 내에서는 동일한 객체
id를 가지고 사용
58
59. 숫자타입 – 기본 연산자 및 함수
숫자 타입에 기본으로 처리 되는 함수, operator
Operation Result Notes
x + y sum of x and y
x - y difference of x and y
x * y product of x and y
x / y quotient of x and y
x // y (floored) quotient of x and y
x % y remainder of x / y
-x x negated
+x x unchanged
abs(x) absolute value or magnitude of x
int(x) x converted to integer
long(x) x converted to long integer
float(x) x converted to floating point
complex(re,im)
a complex number with real part re, imaginary part im. im defaults to
zero.
c.conjugate() conjugate of the complex number c
divmod(x, y) the pair (x // y, x % y)
pow(x, y) x to the power y
x ** y x to the power y
59
62. 숫자타입 – int 예시
int 내부 속성에 대한 처리
real : int는 숫자를 관리하고
bit_length() : 이진수로 변환시
bit 길이
denominator : 분모
numerator : 분자
62
63. 숫자타입 – long 타입
python3버전에서는 통합되어 관리
Notes Python 2 Python 3
①
x = 1000000000000L x = 1000000000000
②
x = 0xFFFFFFFFFFFFL x = 0xFFFFFFFFFFFF
③
long(x) int(x)
④
type(x) is long type(x) is int
⑤
isinstance(x, long) isinstance(x, int)
63
66. 숫자타입 – float 예시
float 내부 속성에 대한 처리
• real : float는 숫자를 관리하고
• hex() : 16진수로 변환
• fromhex() : hex() 결과의 문자
열을 float로 전환
• is_integer() : 실수 중 소수점 이
하 값이 0일 경우 true
• as_integer_ratio() : 현재 값을
denominator : 분모,
numerator : 분자로 표시
66
96. 십육진법
십육진법(十六進法, hexadecimal)은 16을 밑으로
하는 기수법이다. 보통 0부터 9까지의 수와 A에서 F
까지의 로마 문자를 사용하고, 이때 대소문자는 구별
하지 않는다. 이진법 표기의 4자리와 십육진법 한 자
리가 일대일 대응하며, 2진수가 많이 쓰이는 컴퓨터
에서 2진수를 대신해 많이 쓰이고 있다.
96
107. 수학에서, 집합 S 에 이항연산 * 이 정의되어 있을 때, S의 임의의
두 원소 a, b 에 대해
a * b = b * a가 성립하면, 이 연산은 교환법칙(交換法則,
commutative law)을 만족한다고 한다
교환법칙을 만족하는 연산의 예를 들어보면 다음과 같다.
유리수, 실수, 복소수에서 덧셈과 곱셈.
행렬, 벡터의 덧셈
집합의 교집합, 합집합 연산
교환법칙
수학에서 순서와 상관없이 다른 항을 바꿔 계산
해도 동일한 값이 나오는 법칙
107
108. 교환법칙 : 덧셈과 곱셈
수학에서 순서와 상관없이 다른 항을 바꿔 계산
해도 동일한 값이 나오는 법칙
108
110. 수학에서 결합법칙(結合 法則, associated law)은 한 식에서 연산
이 두 번 이상 연속될 때, 앞쪽의 연산을 먼저 계산한 값과 뒤쪽의
연산을 먼저 계산한 결과가 항상 같을 경우 그 연산은 결합법칙을
만족한다고 한다.
결합법칙을 만족하는 연산의 예를 들어보면 다음과 같다.
실수와 복소수, 사원수의 덧셈과 곱셈은 결합법칙이 성립한
다.
최대공약수와 최소공배수 함수는 결합법칙을 만족한다.
행렬 곱셈은 결합법칙을 만족한다.
결합법칙
연산이 두 번 이상 연속될 때 연산을 묶어서 처리
110
113. 집합 S와 S에 대해 닫혀있는 이항 연산 *가 정의되어 있을 때, S의
임의의 원소 a, b, c에 대해 a * (b + c) = (a * b) + (a * c)가 성립
하면 좌분배법칙이, (b + c) * a = (b * a) + (c * a)가 성립하면 우
분배법칙이 성립한다고 하며 양쪽모두 성립할 경우 집합 S에서 연
산 *에 대해 분배법칙이 성립한다고 한다.
분배법칙을 만족하는 연산의 예를 들어보면 다음과 같다.
임의의 자연수, 정수, 유리수, 실수, 복소수의 곱셈 ×은 덧
셈 +에 대해 분배법칙이 성립한다.
합집합 연산 ∪은 교집합 연산 ∩에 대해 분배법칙이 성립하
고, 교집합 연산 ∩은 합집합 연산 ∪에 대해 분배법칙이 성
립한다. 또한, 교집합 연산은 대칭자 연산에 대해 분배법칙
이 성립한다.
분배법칙
수학에서 이항연산 *와 묶음이 있을 경우 분배하
면 동일한 처리값이 나오는 법칙
113
116. 공약수/최대공약수
공약수, 최대공약수, 서로소 용어 정의
공약수 두 개 또는 그 이상의 자연수가 있을 때 그 자연수들의 공통인 약수.
최대공약수 공약수들 중에서 가장 큰 수.12의 약수={1,2,3,6,12}
16의 약수={1,2,4,8,16}
18의 약수={1,2,3,6,9,18} 에서
12와 16의 공약수 → 1,2,4 → 최대공약수는 4
12, 16, 18의 공약수 → 1,2 → 최대공약수는 2
서로소 공약수가 1 하나 뿐인 두 자연수 사이의 관계
(예) 8의 약수={1,2,4,8}, 9의 약수={1,3,9}에서 8과 9의 공약수는 1 한 개
뿐이므로 8과 9는 서로소
116
117. 서로소
최대공약수가 1인, 둘 이상의 양의 정수들은 서로
소(relatively prime)이라고 불린다.
두 정수가 1 이외에 양의 공약수를 가지지 않으면
서로소이다.
117
124. 연산자와 special method
python 문법의 연산자는 각 type class 내부에 대
응하믄 special method가 존재
연산자
Special
Method
각 타입별로 연산자는
special method와 매칭
124
125. 연산자 우선순위
순위 구분 Operator Description
0 그룹 ( ) Parentheses (grouping)
1 함수 f(args...) Function call
2 참조 x[index:index] Slicing
3 참조 x[index] Subscription
4 참조 x.attribute Attribute reference
5 산술 ** Exponentiation(제곱)
6 비트 ~x Bitwise not
7 부호 +x, -x Positive, negative
8 산술 *, /, % Multiplication, division, remainder
9 산술 +, - Addition, subtraction
10 비트 <<, >> Bitwise shifts
11 비트 & Bitwise AND
12 비트 ^ Bitwise XOR
13 비트 | Bitwise OR
14 비트 in, not in, is, is not, <, <=, >, >=,<>, !=, == Comparisons, membership, identity
15 논리 not x Boolean NOT
16 논리 and Boolean AND
17 논리 or Boolean OR
18 함수 lambda Lambda expression
125
130. 산술연산 : 정방향
숫자 객체들에 대한 수학적인 산술연산
Operation 연산자 Function Method
addition x + y add(a, b) x.__add__(y)
subtraction x - y sub(a, b) x.__sub__(y)
multiplication x * y mul(a, b) x.__mul__(y)
division x / y div(a, b) x.__div__(y)
division x / y truediv(a, b) x.__truediv__(y)
floor division x // y floordiv(a, b) x.__floordiv__(y)
modulo (remainder) x % y mod(a, b) x.__mod__(y)
floor division & modulo divmod(x, y) N/A x.__divmod__(y)
raise to power x ** y pow(a, b) x.__pow__(y)
130
134. 산술연산 : 역방향
수학적인 산출연산에 대한 역방향 메소드 제공 계산
결과는 정방향과 동일
Operation 연산자 Function Method
addition x + y add(a, b) y.__radd__(x)
subtraction x - y sub(a, b) y.__rsub__(x)
multiplication x * y mul(a, b) y.__rmul__(x)
division x / y div(a, b) y.__rdiv__(x)
division x / y truediv(a, b) y.__rtruediv__(x)
floor division x // y floordiv(a, b) y.__rfloordiv__(x)
modulo (remainder) x % y mod(a, b) y.__rmod__(x)
floor division & modulo divmod(x, y) N/A y.__rdivmod__(x)
raise to power x ** y pow(a, b) y.__rpow__(x)
134
137. 비트연산 설명
비트연산에 대해서는 실제 숫자의 비트를 가지고 연
산
Operation 연산자 설명
left bit-shift x << y y만큼 왼쪽으로 bit 이동 : 산식은 (x * (2** y) )
right bit-shift x >> y y만큼 오른쪽으로 bit 이동 : 산식은 (x // (2** y) )
bitwise and x & y x와 y이 동일한 비트값만(1 또는 0) 남고 동일하지 않으면 0 처리
bitwise xor x ^ y x와 y에서 서로 대응되지 않는 값만 남김
bitwise or x | y x와 y에서 1이 있는 값은 1로 처리 0이 동일한 경우 0 처리
Bitwise Inversion ~ a a의 비트를 반대로 표시
137
138. 비트연산
python 연산자,operator 모듈내의 함수와 int 메소
드간의 관계
Operation 연산자 Function Method
left bit-shift x << y lshift(a, b) x.__lshift__(y)
right bit-shift x >> y rshift(a, b) x.__rshift__(y)
bitwise and x & y and_(a, b) x.__and__(y)
bitwise xor x ^ y xor(a, b) x.__xor__(y)
bitwise or x | y or_(a, b) x.__or__(y)
Bitwise Inversion ~ a invert(a) x.__invert__()
138
142. 사칙연산
사칙연산
Operation 연산자 Function Method
addition x += y iadd(a, b) x.__iadd__(y)
subtraction x -= y isub(a, b) x.__isub__(y)
multiplication x *= y imul(a, b) x.__imul__(y)
division x /= y idiv(a, b) x.__idiv__(y)
division x /= y itruediv(a, b) x.__itruediv__(y)
floor division x //= y ifloordiv(a, b) x.__ifloordiv__(y)
modulo (remainder) x %= y imod(a, b) x.__imod__(y)
raise to power x **= y ipow(a, b) x.__ipow__(y)
142
143. 증가비트연산
비트연산과 할당연산을 같이 사용
Operation 연산자 Function Method
left bit-shift x <<= y ilshift(a, b) x.__ilshift__(y)
right bit-shift x >>= y irshift(a, b) x.__irshift__(y)
bitwise and x &= y iand_(a, b) x.__iand__(y)
bitwise xor x ^= y ixor(a, b) x.__ixor__(y)
bitwise or x |= y ior_(a, b) x.__ior__(y)
143
145. 논리연산
논리연산은 boolean 값을 비교해서 처리
Operation Syntax Function Method
and Logical AND a and b NA NA
or Logical OR a or b NA NA
Negation (Logical) not a not_(a) NA
145
149. 방정식
방정식(方程式, equation)은 식에 있는 특정한 문
자의 값에 따라 참/거짓이 결정되는 등식이다.
이때, 방정식을 참이 되게 하는 특정 문자의 값을
해 또는 근이라 한다.
149
항등식
방정식 X의 해는 2,3
150. 상수항
상수항은 다항식이나 방정식에서 변수 또는 미지
수를 포함하지 않은 항이다.
예를 들면, 다항식 a0xn+a1xn-1+…+an-1x+an
에서는 변수 x를 포함하지 않은 항 an을, 또 방정
식 a0xn+a1xn-1+…+an-1x+an=0에서는 미지
수 x를 포함하지 않은 항 an을 상수항이라 한다.
150
169. 관계연산
python 내의 객체 간의 순서와 동등 관계를 처리하
는 연산자
Operation 연산자 Function Method
Ordering a < b lt(a, b)
x.__lt__(y)
Ordering a <= b le(a, b)
x.__le__(y)
Equality a == b eq(a, b)
x.__eq__(y)
Difference a != b ne(a, b)
x.__ne__(y)
Ordering a >= b ge(a, b)
x.__ge__(y)
Ordering a > b gt(a, b)
x.__gt__(y)
169
181. 이항정리 : 전개
다항식 (a+b)3의 전개식에서 각 항의 계수를 조
합의 수를 이용하여 나타내는 방법
(a+b)3=(a+b)(a+b)(a+b)
=aaa+aab+aba+abb+baa+bab+bba+bbb
=a3+3a2b+3ab2+b3
=a3+3C1a2b+3C2ab2+b3
3C1 = 3P1/1! = 3!/2!/1! = 3
3C2 = 3P2/2! = 3!/1!/2! = 3
181
182. 이항정리 : 파스칼 방식
다항식 (a+b)3의 전개식에서 각 항의 계수를 조
합의 수를 이용하여 나타내는 방법
182
188. factor 함수 : modulus
인수분해를 위한 파라미터를 modulus로 사용하
면 인수분해 불가함 방정식을 조건에 따라 인수
분해 함
188
189. factor 함수 :가우시안정수
가우스 정수(Gauß整數, Gaussian integer)는 실
수부와 허수부가 모두 정수인 수이다.
(a+bi)(a-bi)=a2+b2 로 표현이 가능한 수
189
= (0+i)(0 –i)
= -i*I
= -(i)**2
= 1
X**2+1은 인수분
해가 안되어서 가
우시안 수로 인수
분해
190. factor 함수 : extension
인수분해를 위한 값을 배정해서 처리
190
194. 사상
사상(寫像, 영어: morphism)은 수학적 구조를 보
존하는 함수의 개념을 추상화한 것이다.
사상이라는 용어는 영어 map에 대응하기도 하는
데, 이 경우 맥락에 따라 함수(function)와 사상
(morphism) 모두의 의미로 사용될 수 있다.
194
199. 단사 함수란?
단사(injective) 또는 일대일(one-to-one)이라
하고 일대일인 함수를 단사함수(injection) 또는
일대일 함수(one-to-one function)이라 한다
199
200. 전사 함수란?
공역의 모든 원소에게 정의역의 적어도 하나의 원소
를 대응시킨다면(즉, 치역이 공역과 같다면) 전사
(surjective) 또는 X에서 Y 로(onto)의 함수라 한다.
전사인 함수를 전사함수(surjection)이라 한다.
200
201. 전단사 함수란?
f:X→Y가 전사이고 단사일 때 f를 전단사(bijective)
라 한다. 전단사인 함수를 전단사함수(bijection) 또
는 일대일 대응(one-to-one correspondence)라 한
다. one-to-one & onto라고도 많이 사용한다.
201
202. 초월함수
초월함수(超越函數)란 대수함수와 대조적으로,
계수만으로 이루어진 다항식을 만족시키지 않는
함수이다.
초월함수란 유한한 가감승제의 대수 연산으로 표
현할 수 없기 때문에 대수적인 것을 초월하는 함
수이다.
초월함수의 예로 로그함수, 삼각함수 등이 있다.
202
207. 함수합성 function composition
함수의 합성(函數의合成, function composition)은
한 함수의 공역이 다른 함수의 정의역과 일치하는 경
우 두 함수를 이어 하나의 함수로 만드는 연산이다.
이렇게 얻어진 함수를 합성 함수(合成函數
composite function)라고 한다.
207
224. Mapping– dict 지원 내장함수
Dictionary 타입에 원소 하나만 삭제, 원소들을
삭제, dictionary instance 삭제
Function Description
cmp(dict1, dict2) Compares elements of both dict.
len(dict) Gives the total length of the dictionary. This would be equal
to the number of items in the dictionary.
str(dict) Produces a printable string representation of a dictionary
type(dict) Returns the type of the passed variable. If passed variable is
dictionary, then it would return a dictionary type.
dict(mapping) Converts a map into list.
224
227. Mapping -dictionary 메소드
Method Description
dict.clear() Removes all elements of dictionary dict
dict.copy() Returns a shallow copy of dictionary dict
dict.fromkeys() Create a new dictionary with keys from seq and values set to value.
dict.get(key,
default=None)
For key key, returns value or default if key not in dictionary
dict.has_key(key) Returns true if key in dictionary dict, false otherwise
dict.items() Returns a list of dict's (key, value) tuple pairs
dict.keys() Returns list of dictionary dict's keys
dict.setdefault(key,
default=None)
Similar to get(), but will set dict[key]=default if key is not already in dict
dict.update(dict2) Adds dictionary dict2's key-values pairs to dict
dict.values() Returns list of dictionary dict's values
dict.iteritems() Iterable한 items를 만들기
227
228. dict.get() 사용
dict 내부의 키가 없을 경우 KeyError가 발생하
므로 get()메소드로 읽어서 처리하면 오류발생을
막을 수 있음
Key 조회시
default 값을 설
정할 수 있음
228
234. 버전변경
keys,items 등이 메소드 결과가 리스트 타입에
서 객체타입으로 변경
Notes Python 2 Python 3
①
a_dictionary.keys() list(a_dictionary.keys())
②
a_dictionary.items() list(a_dictionary.items())
③
a_dictionary.iterkeys() iter(a_dictionary.keys())
④
[i for i in a_dictionary.iterkeys()] [i for i in a_dictionary.keys()]
⑤
min(a_dictionary.keys()) no change
234
235. 메소드 결과 타입 변경
keys, values, items 메소드 리턴타입이 list에
서 dict 타입으로 변경
235
282. 배열과 vertor 구분
ndarray 는 벡터 1xN, Nx1, 그리고 N크기의 1차원
배열이 모두 각각 다르며, 벡터는 그 자체로 특정 좌
표를 나타내기도 하지만 방향을 나타냄
scalar 배열 vector
양, 정적 위치 양, 정적 위치 변위, 속도, 힘(방향성)
1차원 N 차원 N 차원
단순 값 행,열 구분 없음 행벡터, 열벡터
282
292. 벡터: +
The vector (8,13) and the vector (26,7) add up to
the vector (34,20)
Example: add the vectors a = (8,13) and b = (26,7)
c = a + b
c = (8,13) + (26,7) = (8+26,13+7) = (34,20)
a
b
a
b
c
292
293. Vector 연산: +
두 벡터 평행 이동해 평행사변형을 만든 후 가운데
벡터가 실제 덧셈한 벡터를 표시
e
d
f
e
d
293
294. 벡터 : -
벡터의 방향성을 반대로 이동한 실제 벡터를 처리
Example: subtract k = (4,5) from v =
(12,2)
a = v + −k
a = (12,2) + −(4,5) = (12,2) + (−4,−5)
= (12−4,2−5) = (8,−3)
294
295. Vector 연산: -
두 벡터 반대 방향으로 평행 이동해 평행사변형을
만든 후 가운데 벡터가 실제 덧셈한 벡터를 표시
e
d
g
-e
-e
295
296. 벡터: 스칼라곱
벡터의 각 원소에 스칼라값만큼 곱하여 표시
벡터 m = [7,3]
A = 3m= [21,9]
296
302. 내적 산식
내적(Inner Product)산식은 두벡터의 크기에 cos각
을 곱한 결과 또는 두벡터간의 원소들이 곱의 합산
과 같은 결과
a · b = |a| × |b| × cos(θ)
Where:
|a| : vector a 크기
|b| : vector b 크기
θ : a and b 사이의 각
a · b = ax × bx + ay × by
302
303. 내적 수학적 예시 : 2 차원
두벡터에 내적 연산에 대한 수학적 처리 예시
a · b = |a| × |b| × cos(θ)
a · b = 10 × 13 × cos(59.5°)
a · b = 10 × 13 × 0.5075...
a · b = 65.98... = 66 (rounded)
a · b = ax × bx + ay × by
a · b = -6 × 5 + 8 × 12
a · b = -30 + 96
a · b = 66
303
304. 3차원 내적 예시 1
Dot 연산을 통한 계산
a · b = ax × bx + ay × by + az × bz
a · b = 9 × 4 + 2 × 8 + 7 × 10
a · b = 36 + 16 + 70
a · b = 122
304
305. 3차원 내적 예시 2
두벡터 사이의 각 구하기
a벡터의 크기
|a| = √(42 + 82 + 102)
= √(16 + 64 + 100)
= √180
b벡터의 크기
|b| = √(92 + 22 + 72)
= √(81 + 4 + 49)
= √134
내적 구하기
a · b = 9*4+ 2*8+ 7*10 = 36+16+70 = 122
각 구하기
a · b = |a| × |b| × cos(θ) 산식에 대입
122 = √180 × √134 × cos(θ)
cos(θ) = 122 / (√180 × √134)
cos(θ) = 0.7855...
θ = cos-1(0.7855...) = 38.2...°
305
306. 내적(dot) 예시
두벡터에 대한 내적(dot) 연산은 같은 위치의 원
소를 곱해서 합산함
두벡터의 곱셈은 단순히 원소를 곱해서 벡터를
유지
306
309. 외적
벡터 a 와 b 의 외적은 a × b 로 정의된다.
외적의 결과로 나온 벡터 c 는 벡터 a 와 b 의 수직
인 벡터로 오른손 법칙의 방향
Vector product
Cross product
309
310. 외적 산식 : 2차원
벡터의 원소간의 cross 적을 처리
v = [a1,a2]
u = [b1,b2]
a1 a2
b1 b2
a1*b2 – a2*b1 Example: The cross product of a = (2,3) and b = (5,6)
c = a1b2 − a2b1 = 2×6− 3×5 = −3
Answer: a × b = -3
310
311. 외적 산식 : 3차원
벡터의 원소간의 cross 적을 처리
v = [a1,a2,a3]
u = [b1,b2,b3]
a2 a3 a1 a2
b2 b3 b1 b2
x 축 : a2*b3 – a3*b2
y 축 : a3*b1 – a1*b2
z 축 : a1*b2 – a2*b1
Example: The cross product of a = (2,3,4) and b = (5,6,7)
cx = aybz − azby = 3×7 − 4×6 = −3
cy = azbx − axbz = 4×5 − 2×7 = 6
cz = axby − aybx = 2×6 − 3×5 = −3
Answer: a × b = (−3,6,−3)
311
312. 외적 산식예시
두벡터에 대한 외적(cross) 연산은 다른 위치의
원소를 곱해서 뺄셈
2차원 벡터는 스칼라 값으로 나옴 3차원 벡터이
상 표시 됨
312
336. 항등행렬
모든 행렬과 닷 연산시 자기 자신이 나오게 하는
단위행렬
import numpy as np
a = np.array([[1,0],[0,1]])
b = np.array([[4,1],[3,2]])
print(np.dot(b,a))
print(np.dot(a,b))
[[4 1]
[3 2]]
[[4 1]
[3 2]]
336
346. dot vs inner 차이점(2차원이상)
Dot와 inner 함수는 계산시 축 기준이 차이가 있어
실제 계산된 값이 다름
dot inner
행과 열로 계산 행과 행으로 계산
행벡터와 열벡터 간의 원소를 곱한후 덧셈 행벡터와 행벡터간의 원소를 곱한후에 덧셈
N*M 과 M*N 즉, 첫번째 열과 두번째 행이 동일 N*M과 N*M에 마지만 차원이 같은 경우
N*M . M*N 은 결과가 N*N N*M과 N*M 은 결과가 N*N
346
347. dot 처리 기준 1*p, p*1
두 행렬 A와 B의 행렬곱셈은 행렬 A의 각 행과 행
렬 B의 각 열끼리 곱해서 표시
AB 𝑎1 𝑏1 𝑎2 𝑏2 … 𝑎 𝑝 𝑏 𝑝 paaa 21A
pb
b
b
2
1
B
1행*p열
P행1열
1행1열
347
348. dot 처리 기준
두 행렬 A와 B의 행렬곱셈은 행렬 A의 각 행과 행
렬 B의 각 열끼리 곱해서 표시
pnpjpp
inijii
nj
nj
mpmjmm
ipijii
pj
pj
bbbb
bbbb
bbbb
bbbb
aaaa
aaaa
aaaa
aaaa
21
21
222221
111211
21
21
222221
111211
AB
pm np
nm
2 3
3 3
348
410. 주요 함수
선형대수에 대한 함수들
함수 설명
dot(a, b[, out]) n차원 행렬 n*m m*l에 대한 production(결과는 n*l)
vdot(a, b) Vector에 대한 prodution
inner(a, b) N 차원 행렬에 대한 Inner product (행렬이 동일해야 함).
outer(a, b[, out]) 2개 벡터에 대해 계산 후 행렬로 표시.
matmul(a, b[, out]) 두 행렬에 대한 Matrix product (dot과 동일한 결과)
tensordot(a, b[, axes]) Compute tensor dot product along specified axes for arrays >= 1-D.
linalg.matrix_power(M, n) Raise a square matrix to the (integer) power n.
cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None) 행렬에 대한 외적을 구함
einsum(subscripts, *operands[, out, dtype, ...]) Evaluates the Einstein summation convention on the operands.
kron(a, b) Kronecker product of two arrays.
410
412. 주요 함수
선형대수에 대한 함수들
함수 설명
linalg.cholesky(a) Cholesky decomposition.
linalg.qr(a[, mode]) Compute the qr factorization of a matrix.
linalg.svd(a[, full_matrices, compute_uv]) Singular Value Decomposition.
412
414. 주요 함수
선형대수에 대한 함수들
함수 설명
linalg.eig(a) Compute the eigenvalues and right eigenvectors of a square array.
linalg.eigh(a[, UPLO]) Return the eigenvalues and eigenvectors of a Hermitian or symmetric matrix.
linalg.eigvals(a) Compute the eigenvalues of a general matrix.
linalg.eigvalsh(a[, UPLO]) Compute the eigenvalues of a Hermitian or real symmetric matrix.
linalg.eig(a) Compute the eigenvalues and right eigenvectors of a square array.
414
416. 주요 함수
선형대수에 대한 함수들
함수 설명
linalg.norm(x[, ord, axis, keepdims]) Matrix or vector norm.
linalg.cond(x[, p]) Compute the condition number of a matrix.
linalg.det(a) Compute the determinant of an array.
linalg.matrix_rank(M[, tol])
Return matrix rank of array using SVD method Rank of the array is the number of SVD sing
ular values of the array that are greater than tol.
linalg.slogdet(a) Compute the sign and (natural) logarithm of the determinant of an array.
trace(a[, offset, axis1, axis2, dtype, out]) Return the sum along diagonals of the array.
416
418. 주요 함수
선형대수에 대한 함수들
함수 설명
linalg.solve(a, b) Solve a linear matrix equation, or system of linear scalar equations.
linalg.tensorsolve(a, b[, axes]) Solve the tensor equation a x = b for x.
linalg.lstsq(a, b[, rcond]) Return the least-squares solution to a linear matrix equation.
linalg.inv(a) Compute the (multiplicative) inverse of a matrix.
linalg.pinv(a[, rcond]) Compute the (Moore-Penrose) pseudo-inverse of a matrix.
linalg.tensorinv(a[, ind]) Compute the ‘inverse’ of an N-dimensional array.
418
422. 관계
집합론에서 관계(關係)는 "자연수 a가 b보다 작
다"와 같이 두 개의 대상으로 이루어진 튜플 사이
에 정의된 이항관계를 일반화한 것으로, 주어진
n-튜플에 대해 진리값을 부여한다.
앞의 경우와 같이 두 대상 사이에 주어지는 관계
는 이항관계라 하고, "점 a, b, c가 한 직선상에 놓
여있다"와 같이 세 대상 사이에 정의된 관계는 삼
항관계라 한다.
422
423. 관계 정의
a 는 b 에 대해 R 의 관계가 있음은 두 집합 A, B 에
대하여 A 에서 B 로의 이항관계(binary relation)가
AxB의 부분집합일 때 a∈A 이고 b∈B 인 (a, b)∈R ,
a Rb 로 나타내기도 함
(a, b)R 일 경우 또는 로 나타내기도 함
정의역(domain)
관계 R 의 순서쌍에서 모든 첫 번째 원소의 집합: dom(R)
치역(range)
모든 두 번째 원소의 집합: ran(R)
423
425. 관계 표현 : 화살도표
화살도표(arrow diagram) 는 두 집합 A, B 가 있을 때 집
합 A 의 원소 a 와 집합 B 의 원소 b 사이에 관계가 성립
하는 경우 그 관계를 화살표로 그려서 나타내는 방법
425
426. 관계 표현 : 좌표도표
좌표도표(coordinate diagram)는두 집합 A, B 가 있
을 때 집합 A 의 원소 a 를 x 축 위의 점으로 표시하
고, 집합 B 의 원소 b 를 y 축 위의 점으로 표시하여
두 점이 좌표상에서 만나는 점을 나타내는 방법
426
427. 관계 표현 : 관계행렬
관계행렬(relation matrix)은 두 집합 A, B 에 대
한 관계를 행렬로 표현한 방법. 행렬 안의 모든 원
소들이 0 또는 1인 행렬을 부울행렬(boolean
matrix)이라고 함
427
428. 관계 표현 : 방향그래프
방향그래프(directed graph)는 집합 A의 관계에 대한 방향
그래프를 그리고자 할 때 먼저 A의 원소들을 나타내는 정점
(vertex)을 그리고, 원소 (a, b)가 관계에 속하면 a에서 b로
화살표 모양의 에지(edge)를 그림
428
430. 관계 종류: 1
1) 반사적 관계: 관계 R을 구성하는 집합 A에 대
해서 a ∈ A에 대해 (a,a) ∈ R이라면 관계 R은 반
사적 관계가 된다.
예) A = {a, b, c}
R은 (a,a), (b,b), (c,c)의 원소를 모두 포함해야
지 반사적 관계가 성립된다.
2) 비반사적 관계: R을 집합 X에서의 어떤 이항
관계라고 하자. 만일 모든 x ∈ X에 대해 (x,x) !∈
R이면 R은 비반사적이라고 한다.
430
431. 관계 종류: 2
3) 대칭적 관계: 관계 R을 구성하는 집합 A에 대
해서 a, b ∈ A에 대해 (a,b) ∈ R이고 (b,a) ∈ R
이라면 관계 R은 대칭적 관계가 된다.
예) A = {a, b, c}
R에 (a,b)의 원소를 포함하고 있다면 (b,a)의
원소를 가지고 있어야 대칭적 관계가 성립된다.
431
432. 관계 종류: 3
4) 반대칭적 관계: 관계 R을 구성하는 집합 A에 대해서 a,
b ∈ A에 대해 (a,b) ∈ R, (b,a) ∈ R이고 a와 b가 같지 않
은 쌍이 한개이상 존재 하지 않을 경우
예) A = {a, b, c}
R1 = { (a,b), (b,a) } 반대칭 관계가 아니다.
R2 = { (a,b), (c,a) } 반대칭 관계이다.
5) 추이적 관계: 관계 R을 구성하는 집합 A에 대해서 a, b,
c ∈ A에 대해 (a,b) ∈ R 그리고 (b,c) ∈ R 일때 (a,c) ∈ R
이라면 관계 R은 추이적 관계가 된다.
예) A = {a, b, c}
R에 (a,b), (b,c)가 있다면 (a,c)가 R에 존재해야 추이적
관계가 된다.
432
433. 관계 종류: 4
6) 동치 관계: 반사적, 대칭적, 추이적인 이항 관
계를 뜻한다. 즉, 어떤 집합 X과 관계 ~이 있을 때,
임의의 원소 a, b, c에 대해
반사관계: a ~ a
대칭관계: a ~ b => b ~ a
추이관계: a ~ b, b ~ c => a ~ c가 성립한다는
것을 의미한다.
433
436. Sequence - Tuple 기본 처리
tuple타입에 immutable 타입으로 내부 원소에 대해
갱신이 불가능하여 리스트처리보다 제한적
Slicing은 String 처럼 처리가능
Python Expression Results Description
T =(1,) (1,) 튜플의 원소가 하나인 경우 생성 꼭 한 개일 경우는
뒤에 꼼마(,)를 붙여야 함
T = (1,2,3,4) (1, 2, 3, 4) 튜플 생성
len((1, 2, 3)) 3 Length 함수로 길이 확인
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 튜플을 합치기 Concatenation
('Hi!‘) * 4 'Hi!Hi!Hi!Hi!' 튜플의 반복을 string으로 표시
3 in (1, 2, 3) True 튜플 내의 원소들이 Membership
for x in (1, 2, 3): print x, 1 2 3 튜플의 원소들을 반복자 활용 - Iteration
436
437. Sequence- Tuple 용 내장함수
내장함수 중에 tuple 타입을 처리
Function Description
cmp(tuple1, tuple2) Compares elements of both tuples.
len(tuple) Gives the total length of the tuple.
max(tuple) Returns item from the tuple with max value.
min(tuple) Returns item from the tuple with min value.
tuple(seq) Converts a list into a tuple.
str(tuple) Produces a printable string representation of a tuple
type(tuple) Returns the type of the passed variable. If passed variable is
tuple, then it would return a tuple type.
437
446. 그래프(Graph)
점을 선으로 연결한 것이다. 그래프 G는 꼭짓점
(vertex or node)들의 집합 V와 변(edge or line)
들의 집합 E로 이루어졌다.
집합 V : 공집합이 아닌 정점(vertex)들의 집합
집합 E : 에지(edge)들의 집합
446
461. 유향변(arc)
유향그래프란 V라는 유한 집합과 원소들이 V의 원
소들로 이루어진 순서쌍들인 집합 A로 이루어진 순
서쌍 (V,A)를 의미한다. V의 원소들을 꼭지점
(vertex)이라 부르고 A의 원소들을 유향변(arc)이
라고 부른다. 유향변 (a,b)이 주어졌을 때 a를 그 유
향변의 시작점(initial vertex), b를 종착점
(terminal vertex)이라고 부른다.
461
468. 유도된 그래프
부분그래프가 주어질 경우 정점집합과 간선집합이
주어졌을 때 그 그래프 내에서 유도된 그래프
468
G1, G2, G3 모두 G의 부분 그래프이다.
G1 은 변 26을 포함하지 않으므로 유도 부분 그래프가 아니다.
반면, G2, G3 는 유도 부분 그래프이다.
G3 는 G2, 의 유도 부분 그래프이다.
470. 인접행렬
인접 행렬(adjacency matrix)은 그래프 G = (V,E),
|V| = n(≥1)일 때 그래프를 이차원 행열에 다음과
같이 저장하는 방법이다.
adj_mat[i][j] =
“1” if (vi, vj)가 인접할 때(adjacent)
“0” 인접하지 않을 경우
470
478. 직각 삼각형을 이용
삼각형이 존재할 경우 총 각이 합은 180도 이고
각 A의 값을 삼각비로 구할 수 있다
A
sin(각도) 의 값은 빗변분에
높이 즉 b/c
cos(각도) 의 값은 빗변분에
높이 즉 a/c
tan(각도) 의 값은 빗변분에
높이 즉 b/a
478
518. 각의 변화를 알아보기
각은 n*π/2 + θ 또는 90n + θ으로 변환해서
각의 위치에 따라 삼각함수를 변환
1. 나오는 각을 n*π/2 + θ 또는 90n + θ, 이때 n은
정수 이면 0< θ < π/2 , 0 < θ <90
2. n이 짝수이면 변하지 않지만 홀수이면
sin-> cos, cos-> sin, tan-> cot로 변환
3. 몇 사분면의 각이냐 에 따라 부호가(+,-)로 변환됨
1사분면 2사분면 3사분면 4사분면
sin + + - -
cos + - - +
tan + - + -
518
525. 삼각함수 변화 : π/2
각 A가 120도 일 경우는 π/2(90)+30의 값을
가지므로 sin일 경우 cos, cos일 경우는 –sin 으
로 바뀜
r
a
b A=120도
B=30도
525
526. 삼각함수의 변형 : 90도 이내
직각 삼각형의 성질을 이용하면 직각을 빼면 나머지
각이 90도인 것을 감안하면, 각 B를 기준을 sin 함수
의 결과는 각 A를 기준으로 cos 함수 결과와 동일
A
B
cos(A) = sin(B), sin(B) = cos(A) , tan(B) = cot(A) 와 동일
각 A + 각 B = 90도
각 B로 삼각함수 처리
526
528. 삼각함수의 변형 : 180도 이내
180도 이내의 각으로 삼각함수를 계산할 경우
90도 + 나머지 각으로 삼각함수를 계산할 수 있
음
r
a
b A=120도
B=30도
sin(A) = cos(B) = b/r
cos(A) = - sin(B) = - a/r
tan(A) = - cot(B) = -b/a
528
531. Sin 주기 변화
sin 그래프의 주기적인 pi 와 2pi 배수 단위로
동일한 값을 처리 성질을 이용
531
532. cos 주기 변화
cos 그래프의 pi 와 2pi 배수 단위로 동일한 값
을 처리 성질을 이용
532
533. 삼각함수 변화 : π - 예각
180도 이내의 각으로 삼각함수를 계산할 경우
각 B에 대해 계산하는 것과 동일
r
a
b
B=30도
sin(π-B) = sin(B) = b/r
cos(π-B) = - cos(B) = - a/r
tan(π-B) = - tan(B) = -b/a
533
534. 삼각함수 변화 : π + 예각
각 A가 120도 일 경우는 π(180)+30의 값을 가
지므로 sin일 경우 sin, cos일 경우는 –cos 으로
바뀜
r
a
b
A=210도
B=30도
534
540. Sin 함수 덧셈
두개의 각을 sin으로 덧셈을 할 경우 sin함수별
로 덧셈과는 차이가 발생
r
a
b
t
s
sin(α+ β) = sin(α) cos(β) + cos(α) sin(β)
= a/r * b/s + b/r * t/s
sin(α) cos(β) = a/r * b/s
cos(α) sin(β) = b/r * t/s
sin(α) = a/r , sin(β) = t/s
540
541. Sin 함수 덧셈 예시
sin 함수 두개의 각을 더할 경우 아래의 공식으
로 계산
541
549. 역수
어떤 수의 역수(逆數, 영어: reciprocal) 또는 곱셈 역원(-
逆元, 영어: multiplicative inverse)은 그 수와 곱해서 1,
즉 곱셈 항등원이 되는 수를 말한다. x의 역수는 1/x
또는 x -1로 표기한다. 곱해서 1이 되는 두 수를 서로 역
수
549
556. 삼각함수의 역함수
삼각함수의 역함수가 역삼각함수
이름 표기법 정의 정의역 치역
아크사인 y = arcsin x 또는 y = sin-1 x x = sin y −1부터 +1 −π/2 ≤ y ≤ π/2
아크코사인 y = arccos x 또는 y = cos-1 x x = cos y −1부터 +1 0 ≤ y ≤ π
아크탄젠트 y = arctan x 또는 y = tan-1 x x = tan y 모든 실수 −π/2 < y < π/2
아크코탄젠트 y = arccot x 또는 y = cot-1 x x = cot y 모든 실수 0 < y < π
아크시컨트 y = arcsec x 또는 y = sec-1 x x = sec y
−∞부터 −1과 1부
터 ∞
0 ≤ y < π/2 or π/
2 < y ≤ π
아크코시컨트 y = arccsc x 또는 y = csc-1 x x = csc y
−∞부터 −1과 1부
터 ∞
−π/2 ≤ y < 0 or 0
< y ≤ π/2
556