PBL Report (개인성찰 노트)
2020년 도전학기 Midterm PBL Report (Action Learning)
Class: Basic Math for AI
(인공지능을 위한 기초수학)
Prof : Sang-Gu LEE
과제함 Due day : 2020.08.10 (in HW box in LMS)
Name (이름) : 김정한/김진웅/채희준
Major(전공) : 바이오메카트로닉스/컴퓨터공학/물리
Ch 1장. Partticipation [참여평가] (10점)
Due day :2020-08-10
담당교수 또는 다른 학생들이 QnA에 업로드한 10개 이상의 자신의 Comment or Answer 를 주시오.
(1) State more than 10 Math Definitions and concepts what you learned in Part 1, 2, 3,
Part1 :
1. 위로의 의 정사영:
2. Gauss-Jordan 소거법:
선형연립방정식의 첨가행렬을 RREF로 변형해 해를 구하는 방법
3. 행렬의 수반행렬:
n차 정사각행렬 의 성분 에 대한 여인자를 라 할 때, 행렬
4. 의 정규직교기저:
크기가 1이며, 서로 다른 임의의 두 기저 모두가 직교하는 기저 집합
5. 선형변환:
에서 으로의 변환 가 임의의 벡터 와 임의의 스칼라 에 대하여 다음 두 조건을 만족하면 를 에서 로의 선형변환(linear transformation)이라고 한다.
(1)
(2)
6. 직교대각화:
와 가 같은 크기의 정사각행렬이라 할 때, 인 직교행렬 가 존재하면, 는 에 직교닮음이라고 한다. 에 대하여 를 대각화하는 직교행렬 가 존재할 때 는 직교대각화 가능하다고 하며 는 를 직교대각화하는 행렬이라 한다.
Part2 :
7. 뉴턴 방법:
접선의 방정식 로부터 을 얻을 수 있다.
그래프를 보고 을 적당히 해에 가까운 값으로 선택하고 위의 식을 반복하면, 원하는 근을 소숫점 이하 몇째 자리까지라도 필요한 오차 이내로 구할 수 있다.
8. 그래디언트:
함수 f의 편도함수를 성분으로 갖는 벡터
ex) f(x,y)의 그래디언트
9. 헤시안:
의 2계 vussehgkatn를 성분으로 갖는 행렬
ex) 의 헤시안
10. 경사하강법:
함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것.
는 탐색방향, 는 step-size(또는 learning rate).
...
다음을 만족하는 B를 V의 기저 (basis) 라 한다.
(1) B가 일차독립이다. (2) 〈B〉=V
10.벡터공간의 차원:
B가 V의 기저라 할 때 V의 차원 (dimension) 은 다음과 같이 정의된다.
dim V=ㅣBㅣ
11.행공간:
행렬 A= 의 행벡터들의 일차결합 전체의 집합을 행공간(row space)이라 한다.
즉, Row(A)=<A(1),A(2), ... ,A(m)>
12.열공간:
행렬 A=[A(1) A(2) ... A(n) ] 의 열벡터들의 일차결합 전체의 집합을 열공간(column space)이라 한다. 즉. Col(A)=<A(1), A(2),...,A(n)>
13.계수:
행공간(열공간)의 차원을 행렬의 계수 (rank) 라 한다.
즉 rank(A)=dim Row(A) = dim Col(A).
14. 정사영:
...
20.PCA (주성분분석, Principal Component Analysis) :
PCA는 데이터의 분산(variance)을 최대한 보존하면서 서로 직교하는 새 기저(축)를 찾아, 고차원 공간의 표본들을 선형 연관성이 없는 저차원 공간으로 변환하는 기법
...28.전치행렬의 성질:
두 행렬 A,B와 임의의 스칼라 k에 대하여 다음이 성립한다.
29.대각합(Trace)
행렬 A=[aij]nxn의 대각합은 tr(A)=a11+a22+...+ann = (i=1부터 i=n까지)이다.
30.역행렬
n차의 정사각행렬 A에 대하여 다음을 만족하는 행렬 B가 존재하면 A는 가역
(invertible, nonsingular)이라고 한다.
AB=In=BA
31.가열행렬의 성질
n차의 정사각행렬 A,B가 가역이고 k가 0이 아닌 스칼라일 때, 다음이 성립한다.
만일 A가 가역행렬이면, A^T도 가역행렬이고 다음이 성립한다.
32. 대각선행렬(diagonal matrix):
주대각선성분 이외의 모든 성분이 0인 정사각행렬.
33. 대칭행렬
정사각행렬 A가 A^T=A를 만족하면 A를 대칭행렬(symmetric matrix)이라
하고, A^T=-A를 만족하면 반대칭행렬(skew-symmetric matrix)이라고 한다.
...
...
53. 고윳값 분해
정사각행렬 A가 대각화가능하다면 대각선행렬 D와 가역행렬 P가 존재하여 다음이 성립한다.
특히 A가 (실수) 대칭행렬일 때는 위를 만족하는 대각선행렬 D와 직교행렬 P(즉 P^TP=I, P^-1=P^T)가 존재한다. 만일 I와 ui, I=1....,n를 각각 A의 n개의 고윳값과 대응하는 n개의 정규직교 고유벡터라 하면
P=[u1:u2:...:un]는 직교행렬 (즉 P^TP=I)이 되고, D는 대각선행렬이며, 다음이 성립한다.
이때 D의 주대각선 성분은 A의 고윳값이고, P의 열벡터는 그에 대응하는 n개의 정규직교 고유벡터이다. 따라서 아래가 성립한다.
이 분해는 고윳값 와 그에 대응하는 고유벡터 ui만 이용하므로 행렬 A의 고윳값 분해라 하며, spectral decomposition이라고도 부른다.
54.두 정사각행렬 A,B가 닮음일 때
(1) det(A)=det(B)
(2) tr(A)=tr(B)
55.pseudo-inverse
행렬 A가 크기 mxn인 경우 크기 nxm인 행혈 를 행렬 A의 pseudo-inverse라 한다. 여기서 U, V는 직교행렬이고 는 다음과 같은 행렬이다.
56. full column rank를 갖는 mxn 행렬의 pseudo-inverse
행렬 A가 (n개의 열이 모두 일차독립인) full column rank를 갖는 mxn 행렬이면 Ax=b의 양변에 A^T를 곱해준 (A^TA)x=A^Tb를 정규방정식이라고 하고, 이 정규방정식은 언제나 유일해 x=(A^TA)^-1A^Tb를 갖는다. 이 때 A=(A^TA)^-1A^T을 A의 pseudo-inverse라고 한다.
57.최소제곱해
A가 mxn 행렬이고, b는 R^n의 임의의 벡터이면, x=Ab는 Ax=b의 최소제곱해이다.
58.이차곡선의 방정식의 행렬표현
두 변수 x,y를 갖는 이차곡선의 방정식
ax^2+2bxy+cy^2+dx+ey+f=0를 행렬로 표현하면 다음과 같다.
59.이차형식
부분을 R^2상의 방정식 ax^2+2bxy+cY^2+dx+ey+f=0에 대한 이차형식이라 한다. [R^2상의 이차형식]
A=[aij]가 n차의 대칭행렬이고, n개의 변수 x1,x2,.....,xn을 성분으로 갖는 R^n의 벡터
x=에 대하여 이차다항식 q(x)=<Ax,x>=x^TAx을 R^n상의 이차형식이라 한다.
...
61. 수렴, f(x)의 극한
임의의 양수 k에 대하여, 만일 0<ㅣx-aㅣ<t이면 ㅣf(x)-bㅣ<k 되게 하는
적당한 양수 t가 존재하면, x가 a에 접근할 때 f(x)는 b에 수렴한다고 하고(x가 a에 접근할 때)
f(x)의 극한이라고 부르며, limx->a f(x)=b라고 쓴다. 수렴하지 않으면 발산한다고 한다.
62.미분가능
함수 f(x)가 a를 포함하는 어떤 구간에서 정의되어 있고, 극한값이 존재하면
f(x)는 x=a에서 미분가능이라고 하며 이 극한값을 f(x)의 a에서의 미분게수라 부르고 f'(a)로 나타낸다. f(x)는 x=a에서 미분가능이면 x=a에서 연속이다. 그러나 역은 성립하지 않는다. 즉 f(x)가 x=a에서 연속이라도 반드시 미분가능인 것은 아니다.
63.n계도함수
y=f(x)의 도함수 y'=f'(x)가 다시 미분가능이면 그 도함수 (y')'을 생각할 수 있다. 이것을 y=f(x)의 제 2계도함수라 한다. 이 2계도함수가 또 다시 미분가능이면 제 3계도함수를 생각할 수 있게 된다. 이와 같이 y=f(x)를 계속하여 n번 미분하면 제 n계도함수가 정의된다.
64. 최댓값 최솟갑의 정리
f(x)가 폐구간 [a,b]에서 연속이면 이 구간에서 f(x)가 최댓값을 취하는 점 및 최솟값을 취하는 점이 존재한다.
65. Newton's Method(뉴턴 방법):
실숫값 함수의 근(근사값)을 그래프와 도함수를 이용하여 쉽게 구하는 방법
66. 적분
어떤 구간에서 정의된 함수 f(x)에 대하여 이 구간의 모든 x에 관하여 F'(x)=f(x)를 만족하는 함수 F(x)가 존재할 때 F(x)를 f(x)의 원시함수 또는 부정적분이라고 한다. f(x)가 주어졌을 때 그 부정적분 F(x)를 구하는 것을 f(x)를 적분한다고 한다.
67.적분에 관한 평균값의 정리
f(x)가 [a,b]에서 연속이면
인 t가 a와 b사이에 적어도 하나 존재한다.
68.미적분학의 기본정리
f(x) 가 [a,b]에서 연속이고 F(x)를 f(x)의 임의의 한 부정적분, F'(x)=f(x)이라 하면 다음식이 성립한다.
69. 편도함수
z=f(x,y)가 x와 y의 함수라 하자. f의 x에 관한 편도함수는 다음과 같이 정의된다.
y에 관한 편도함수는 다음과 같이 정의된다.
70. 연쇄법칙
z=f(x,y)가 x,y에 관해서 편미분가능이며 편도함수 fx(x,y), fy(x,y)가 연속이고 x,y가 또 다른 변수 t의 미분가능인 함수이면, z는 t에 관해서 미분가능이며
이다.
71.방향도함수
u=(u1,u2)를 단위벡터(크기가 1인 벡터)라 하자. 그러면 점(a,b)에서 u방향으로의 f의 방향도함수는 다음과 같이 정의된다.
=fx(a,b)u1+fy(a,b)u2=∇f(a,b)u, ㅣㅣuㅣㅣ=1
...
73.Fremat의 임계점 정리
f가 (a,b)에서 극대 또는 극소가 되고,f의 편도함수가 존재하면 다음이 성립한다.
fx(a,b)=0, fy(a,b)=0
74. 임계점
∇f(a,b)=0을 만족하는 점 (a,b)를 f의 임계점이라 한다.
75.극대,극소,안장점
함수 f:R^n->R가 임계점 x=a에서 연속인 2계 편도함수를 갖고, 이 점에서 f의 이차형식을 q(d)=d^THd라고 할 때, 다음이 성립한다.
(1)q가 양의 정부호이면 f(a)는 극솟값이다.
(2)q가 음의 정부호이면 f(a)는 극댓값이다.
(3)q가 부정부호이면, f(a)는 극댓값고 아니고, 극솟값도 아니다.
이 때 x=a를 안장정이라고 한다.
76.경사하강법
[Fermat의 임계점 정리]에 의해 위 문제의 최적해(optimal solution) x*는 다음을 만족한다.
∇f(x*)=0
따라서 방정식 ∇f(x)=0을 풀어서 나온 해들이 최적해가 되는지 판단하면 된다.
그러나 함수 가 비선형인 경우는 방정식을 풀어서 임계점을 구하는 것조차도 쉽지 않다. 이런 경우에는 수치적인 방법으로 임계점을 구한다. 최적화문제를 푸는 계산 방법은 대개 반복법(iterative method)으로, 초기 근사해 x1으로부터 시작하여 특정 한 반복단계를 거쳐 이전보다 나은 근사해 x2, x3, ... 를 생성한다. 목표는 k번째 근사해 xk 또는 극한값 xk→ x* 에서 ∇f(x)=0을 만족하도록 하는 것이다.
77.뉴턴 방법(Newton's method)
:탐색방향을 로 택하는 경우를 말한다. 왜냐하면 xk근방에서 f는 다음의 이차함수를 이요하여 근사화할 수 있기 때문이다.
78 이중적분
직사각형 영역 R=[a,b]X[c,d]={(x,y)∈R^2l a<=x<=b, c<=y<=d}에서 f(x,y)의 이중적분은 다음과 같이 정의 된다.
79. Fubini의 정리
f(x,y)가 직사각형 영역 R=[a,b]X[c,d]={(x,y)∈R^2l a<=x<=b, c<=y<=d}에서 연속이면 다음이 성립한다.
80.이중적분의 변수변환
전단사함수 가 연속인 편도함수를 갖고,
이라 하자. 그러면 연속함수 f: R-> R에 대하여 다음이 성립한다.
(2) State more than 5 things that you know/can/find ... after you studied the first Part 1, 2,..
...
2. A를 대각화하는 행렬 P를 구하는 과정
1단계: A의 n개의 일차독립인 고유벡터 p(1),p(2), ..., p(n)을 구한다.
2단계:p(1),p(2),...,p(n)을 열벡터로 갖는 행렬 P를 만든다.
3단계: 이 P가 A를 대각화하는 행렬이고
(
3.fxy=fyx가 되는 조건
fxy와 fyx가 존재하고 모두 연속이면 fxy=fyx이다.
이 정리는 모든 고계 편도함수에 대하여 항상 성립한다.
4.극소, 극대 판정법
점 (a,b)의 근방에서 2변수 함수 f가 연속인 2계 편도함수를 갖고,
fx(a,b)=fy(a,b)=0라 하자.
5.경사하강법의 알고리즘
[단계 1] 초기 근사해 x1 ∈ R^n와 허용오차 0<= t <<1을 준다. k:=1이라 한다.
[단계 2] dk=-∇ f(xk)를 계산한다. 만일 ㅣㅣdkㅣㅣ<=t이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size ak>0을 구한다.
[단계 4] xk+1=xk+akdk, k:=k+1라 두고 [단계 2]로 이동한다.
6.뉴턴 방법의 알고리즘
[단계1] 초기 근사해 x1∈R^n과 허용오차 0<=t<<1을 준다. k:=1이라 한다.
[단계 2] 만일 ㅣㅣ∇f(xk)ㅣㅣ<=t이면 알고리즘을 멈춘다.
[단계 3] 를 계산한다.
[단계 4] k:=k+1라 두고 [단계 2]로 이동한다.
(3) State your meaningful Comment/Answer/Discussions in Discussion/QnA.
제가 흥미가 있던 Discussion 중에 3개를 선별해 보았습니다.
[1] [Final OK by SGLee] Q and finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분
(1) 내용정리 및 질의
질의
1.
이 정리가 이해가 되지 않습니다. 왜 fxy와 fyx가 존재하고 연속이면 둘의 값이 같은 것인가요?
2. 정확히 방향도함수가 의미하는 것이 무엇인지 모르겠습니다. 이미 존재하는 스칼라장에서 어느 특정한 포인트에서의 기울기를 그래디언트라고 하고 임의로 단위벡터 u를 선정해 이 둘을 내적하면 방향도함수를 구할 수 있는데, 이러한 계산이 이미 설정되어있는 스칼라장과 각각의 점들의 그래디언트에서 제가 원하는 방향으로의 벡터를 설정하여 f가 어느 특정 방향에 따라 빠르게 증가하고 감소하는지를 보이기 위함이라고 말할 수 있을까요? (그렇다면 방향도함수는 제가 설정한 방향[벡터]를 통해서는 f가 얼마나 변하는지 즉 변화율을 나타내는 것인가요?) 제 이해가 맞는지 모르겠습니다.
-> 대강 알고 있던 개념에 대해 정확한 숙지를 위해 한 질문이었고 좋은 답변들을 달아주셔서 이제는 완벽하게 이해할 수 있었다.
[2] Final OK by SGLee [Final] 그래디언트와 전자기학 by 김정한 finalized by 김정한
comment: 이번에 미적분 강의를 들으면서 gradient말고도 흥미로운 수학적 도구들이 있는데 강의 자체에서는 다루지 못하는게 다소 아쉬워 내용을 추가해 보았다.
만일 프로젝트를 기획하게 된다면 현재 복수전공하고 있는 전기전자공학에서 미적분을 베이스로 하여 실제 어떤식으로 위와 같은 개념들이 사용되고 이해(혹은 적용)될 수 있는지를 알아보고 싶다. 개인적으로 단순히 개념만 보는 것보다 이와 같이 실제 사용되는 용도를 통해 이해하는 것이 더 흥미롭다고 느꼈다.
->처음으로 전공과 관련된 개념을 통해 쓴 게시글이었고 프로젝트에 쓸 수 있는 개념들을 고르기 위한 시작점 같은 comment였다.
[3] fianlized by 정원철. [2주차] SVD를 활용한 이상구 교수님 사진 압축. 댓글 by 나종진, 이상구교수님, 장환승, 김호연, 김정한, 김다은, 박진형
-> SVD를 통한 이미지 압축을 코딩을 통해 보여준 실습 게시글이다. 나는 서적에 나오거나 교수님이 보여주신 자료를 통해서만 실습을 하였는데 더 나아가 실제 활용될 수 있는 흥미로운 주제를 가지고 실습을 하는 것을 보고 배울 점이 많았고 신선한 충격으로 다가온 게시글이다. 중간 기간이 끝나고 나도 이러한 실습을 찾아 진행해보고싶다고 느꼈다.
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
: 고유벡터가 다른 차원을 가진 경우를 보아서 질문을 올린 글이었는데, 교수님께서 대수적 중복도와 기하적 중복도가 있다고 하셨고, 더 구체적으로는 조르단 표준형이 있다는 것을 알려주셔서 궁금증이 해결되고 지식이 확장되었습니다.
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘
: 교수님께서 방데르몽드 행렬이라는 개념이 있음을 답변하셔서 그러한 개념이 정립되어 있음을 알게 되었습니다.
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
35’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
: 전재현 동료가 우리가 그간 배웠던 이론을 실제로 적용한 글입니다. 이런 분야에서 이렇게 사용될 수 있다는 것을 알게 되었습니다.
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
: RREF로 역행렬을 구하는 과정을 설명한 글입니다. 답변을 작성하면서 그 과정을 정연하게 정리하게 되어 좋았습니다.
33’[Final OK by SGLee] [3주차] 요약 및 질문’
: 뉴턴방법의 주의점을 설명한 글입니다. 답변을 작성하면서 뉴턴방법을 쓸 때 주의할 4가지 경우를 정리하여 좋았습니다.
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
21’[해결] SAGE 질문 SyntaxError‘
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘
31’finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘
: sage 코드에 관한 질문에 답변을 단 글입니다. 답변을 달기 위해 sage reference를 뒤적거리며 그 원리를 깨우쳤습니다. 덕분에 sage code를 이해하고 reference 찾는 기술이 향상되었습니다.
14’[HW 요약] 1주차 요약‘
25’[HW 요약] 2주차 요약‘
33’[요약] 3주차 요약‘
42’[요약] 4주차 요약‘
13‘[HW 실습] 1주차 실습’
23‘[HW 실습] 2주차 실습’
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
45’[실습] 4주차 실습‘
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
29’3주차 다변수함수의 극대극소판정법 정리‘
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
41’4주차 Gradient Descent Algorithm 추가 정리‘
: 제가 요약·실습·정리하며 쓴 글입니다. 이렇게 정리하는 과정을 거쳐 머릿속에 있던 그동안의 개념과 지식이 논리정연하게 정돈되었습니다.
(4) 그리고 (첨부한) PBL 보고서에
<자기평가>, <동료평가> + <자신이 QnA 에 업로드한 Q and Answer (Reply) 를 모아서>
주어진 첨부 형식에 맞추어 내용을 채어서 Due Day 전에 제출하시오. 양과 질을 평가하여 해당성적을 부여합니다. [The First or The Best!]
Ch 2장. Participation (참여부분, 정량) 자기 평가와 본인의 Project (Term paper) 제안서 등에 대해 아래를 채우시오. (20점)
1. (20점)
(1) QnA 참여 회수 <QnA에서 직접 확인하세요> : 각 주별 (토요일에서 금요일)
(1) 1주차 : 총 14회
(2) 2주차 : 총 11회
(3) 3주차 : 총 13회
(4) 4주차 : 총 9회
(5) 온라인 출석 회수 : 23회 / 23회
(2) 다음 밑줄 친 곳에 들어갈 내용을 고르시오.
나는 <1> 벡터, 노름, 내적, 행렬, 행렬곱, 대각선행렬, 단위행렬, 전치행렬, 대칭행렬, 하삼각행렬, 상삼각행렬, 역행렬, 행렬식, 여인자, 수반행렬, 선행주소행렬식 <2> 선형연립방정식, 계수행렬, 첨가행렬, 기본행연산, 기본행렬, 치환행렬, REF, RREF, Gauss 소거법, Gauss-Jordan 소거법 <3> 선형변환, 표준행렬, 핵, 치역, 단사, 전사 <4> 벡터공간, 부분공간, 일차결합, 일차독립, 일차종속, span, 기저, 차원, 행공간, 열공간, 영공간, rank, nullity <5> 정사영, 직교성분, 초평면, 정규직교벡터, 정규직교기저, Gram-Schmidt 정규직교화법, full column rank, LU분해, QR분해, 최소제곱해 <6> 고유값, 고유벡터, 고유공간, 직교행렬, 대각화, 직교대각화, 고유값분해, 특이값, 특이벡터, SVD, 유사역행렬 <7> 이차형식, 양의정부호, 음의정부호, 부정부호, 주축정리 <8> 접선, 뉴턴방법, 다변수함수, 매개변수 방정식, 편도함수, 방향도함수, 그래디언트, 헤시안, 임계점, 안장점, 극대극소판정법, 경사하강법, Jacobian의 개념을 이해하고 설명할 수 있으며 (간단한 것은 손으로, 복잡한 것은 컴퓨터를 이용하여) 역행렬 구하기, 행렬식 구하기, 선형연립방정식 해 구하기, 정사영 구하기, Gram-Schmidt 정규직교화법, QR분해, 선형연립방정식 최소제곱해 구하기, 고유값 구하기, 고유벡터 구하기, 대각화, 직교대각화, SVD, 주축정리, 뉴턴방법, 극대극소판정법, 경사하강법을 계산하여 그 의미를 설명할 수 있다.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
우선 처음에 수강을 할 때 ‘도전’학기라는 이름에 걸맞게 난이도가 있는 강좌라는 것을 느꼈습니다. 7주라는 짧은 시간 동안 ‘선형대수학’,‘미분적분학’,‘통계학’ 이 세 학문을 학습해야된다고 생각을 했기 때문입니다. 또한 다른 수업들과 차별화된 방식으로 수업활동이 있어서 처음에는 어려움을 겪었습니다. 하지만 점차 시간이 지나고 활동을 꾸준히 하면서 처음 듣는 개념 강좌 혹은 문제에는 도전 의식이 생기고 이해를 하려고 노력하는 모습이 생겼으며 이미 알고 있는 내용은 복습하고 실습하며 더욱 가까워지는 양상을 보였습니다. 처음에는 무척이나 힘들었던 QnA, 요약, 혹은 다른 학우들의 질문에 대한 답변 구상이 조금씩 익숙해지면서 단순히 서적으로만 공부를 하였던 다른 학기와는 다른 뿌듯함을 느꼈습니다. 항상 저는 토론이나 발표, 다른 학우들과 communication하는 것보다는 혼자 공부하고 시험을 보며 결과치에만 만족하는 것을 선호하는 학생이었습니다. 그런데 이번 강좌를 수강하고 나서 강의 내용에 대한, 더 나아가 심화적인 내용에 대해 의견을 서로 학우들끼리 나누고 배우고 발전해나가는 활동에 흥미를 가지기 시작한 것 같습니다. 아직 통계학을 배우지는 못했지만 이미 학습한 선형대수학과 미분적분학을 토대로 느낀점은 앞서 말한 강의 방식보다도 느낀 것이 많습니다. 아무래도 서적을 통해서 말그대로 문제를 풀기 위한 개념을 선호하고 그렇게 학습하다 보니 개념 자체에 대해 이해도가 부족한 건 사실이었습니다. 이번 강좌를 발판 삼아 개념 숙지의 중요성을 더 깨닫게 되었고 특히 선형대수학의 경우 제가 고등학교 때 고급수학이라는 과목을 하면서 오히려 어려움을 느껴 거리가 멀어진 과목이었습니다. 허나 이번 강좌 덕분에 행렬에 대한 의미와 어떤 식으로 사용되는가, 정리들은 어떠한 것들이 있는가를 볼 수 있는 굉장히 유익한 주차들을 가졌다고 생각하였습니다.
인공지능에 필요한 선형대수학과 미적분학을 알차게 배웠습니다. 앞으로 인공지능을 배우면서 이번 강좌에서 배운 지식이 요긴하게 쓰일 것에 보람찹니다.
Ch 3장. Self Evaluation 1. (개인 성찰 노트) (20점)
Class |
Basic Math for AI |
||||||
Name/이름 |
김정한 |
major/ 학 과 |
바이오메카트로닉스학과 |
||||
학습한 내용 |
선형대수학, 미분적분학 |
||||||
자기 점검표 |
|||||||
활동(Activity) |
Excellent |
Good |
Fair |
||||
1. |
나는 개인학습을 할 때 다양한 학습 자료를 사용하였다. |
O |
|
|
|||
2. |
나는 새로운 정보와 지식제공에 기여하였다. |
|
O |
|
|||
3.
|
나는 토의에 적극적으로 참여하였고 토의의 촉진과 이해를 위한 적절한 질문을 많이 제공하였다. |
O |
|
|
|||
4. |
나는 우리 반이 원활한 학습활동을 하는데 기여하였다. |
|
O |
|
[성찰노트]
※ 다음 항목들을 고려하여 자신의 학습과정과 내용을 기록하시오.
1. 나는 지금 수행되고 있는 학습의 진행내용을 이해하고 있는가?
학습의 진행 내용을 완벽히 숙지하기 위해 노력하고 있다고 생각합니다. 아무래도 부족한 부분은 조금씩 있지만 그 부족한 부분마저도 채우기 위해 노력중입니다. 이러한 작은 노력이 조금씩 채워져 절반정도 학기가 진행된 현재 많은 것들을 배웠습니다. 선형대수학과 미분적분학으로 나누어 말씀드리면 우선 선형대수학의 경우 부족한 부분들이 많다고 느낀 part입니다. 행렬에 대한 기본적인 개념은 알고있었지만 이러한 행렬을 복잡한 개념이나 계산에 들어갈 때 이해가 가지않는 상황이 발생했었습니다. 하지만 많은 노력 끝에 개념 체계를 많이 잡았다는 느낌이 듭니다. 미분적분학의 경우 잘못 알고 있는 즉 오개념을 잡으려고 하였습니다. 학습의 진행내용은 흐름을 어느정도 타고있어 약간의 수정만 해주면 이해도가 더할나위 없이 완벽해질 것이라고 판단합니다.
2. 어떤 방법을 통해서 학습하였는가? (학습방법 및 자료)
앞서 말씀드렸듯 선형대수학의 경우 중간중간 빠진 개념, 혹은 처음부터 알지 못하였던 새로운 개념들이 많았습니다. 이러한 점을 파악하고 저는 처음에는 무작정 교수님 강의를 들었습니다. 맨처음 강의를 들을 때는 이해가 가지 않는 부분이 많았지만 점차 개념들이 잡히고 정리가 되면서 많은 지식을 얻었습니다. 아이캠퍼스에 있는 강좌말고도 교수님이 올려주신 보충자료들도 들어보면서 이해가 안가는 곳은 남겨두고 몇 번이고 반복학습을 하는 것이 ‘선형대수학’ part의 이해도에 크게 기여를 하였다고 생각합니다. 미분적분학의 경우 생각보다 오개념이 많았는데 이 또한 베이스는 교수님의 강의로 개념 체크를 하고 교수님의 교재 pdf를 계속 정독하였습니다. 정독하면서 한 번 흐름을 타기 시작하면 연쇄적으로 이해가 되어 신기하기도 하였습니다.
3. 본 강좌의 학습활동을 통하여 무엇을 배웠나?
핵심적인 내용인 행렬에 대해 많은 것을 배웠습니다. 행렬이 쓰이는 방식과 용도, 정리에 따라 나타나는 새로운 개념들을 많이 알게 되었습니다. 특히 선형대수학 part에서는 모르는 내용이 많아 추가적인 학습을 필수로 하여야했는데 이러한 학습을 다양한 방식으로 또한 꾸준히 하는 것에 중요성을 깨닫게 되었습니다. 앞서 말했다싶이 미분적분학에서는 오개념을 고친 부분이 많았습니다. 이를 통해 내가 기존에 확실히 안다고 생각했던 것들도 다시 돌아보고 개념을 지속적으로 숙지하며 확장을 해나아가야겠다고 생각했습니다.
4. 다른 동료들로부터 무엇을 배웠는가?
처음에는 제가 활동을 많이 하는 편이 아니어서 강의 방식에 대해 잘 숙지하지 못하였습니다. 다른 동료들도 마찬가지이겠지만 익숙치 않은 강의 방식이어서 어떤식으로 해야 잘 할 수 있을지 고민이 많을 뿐 실천에 옮기지 못한 것 같습니다. 그러나 똑같이 어려운 상황 속에서 지속적으로 또 모범적으로 글을 쓰고 QnA에 참여하는 동료들을 보고 저도 같이 참여해야겠다는 필요성을 느끼게 되었습니다. 교수님께서 말씀하신 것처럼 남들보다 빠른 참여는 도움이 되는 것 같다고 생각했습니다. 제가 빠른 편은 아니지만 좀 더 많이 혹은 더 빨리 참여를 했었다면 지금보다 더 양질의 개념을 가지고, QnA에서도 동료들에게 도움을 주며, 교수님께서도 대답을 가치가 있는 질문을 볼 수 있지 않았을까 약간 후회를 하기도 하였습니다. 그러나 지금부터라도 열심히 하여 조금 더 앞서 있는 동료들을 따라잡고 기말까지 저만의 독창적인 레포트를 완성해보도록 노력해야겠다고 생각하고 있습니다.
5. 새롭게 배운 내용을 실제 생활에 어떻게 적용할 것인가?
제가 올린 개념글 중에 gradient에 대한 전자기학의 해석이 있습니다. 제가 전기전자 공학부를 복수전공하고 있다보니 그런 쪽에 관심이 간다고 느끼고 있습니다. main goal은 수학적 해석을 통해 인공지능에 대해 파악하고 그러한 쪽을 실생활에 적용시키는 것이 좋다고 생각합니다. 허나 이러한 적용도 하면서 제가 흥미를 가지고 있는 전기에 대한 개념도 더욱 숙지할 수 있는 계기가 될 것이라고 생각이 들었습니다. 이것 또한 실제 생활의 적용이라고 생각하고 있기도 하구요. 주요한 목적은 명확히 가지고 있되 부차적인 것(전기part)에 도움이 되는 내용도 이번 기회에 숙지하고자 합니다. 결론적으로는 인공지능, 머신러닝에 대해 적용하는 것이 메인 아이디어이자 purpose라고 생각합니다.
6. QnA 활동에서 자신의 역할과 기여도에 대한 평가(자신의 활동에 점수를 주고 그 이유를 적으세요.) :
- 70 점.
- 좀 더 활발히 참여하지 않은 아쉬움과 개념 숙지가 완벽하지 못한 것 같다는 생각이 먼저 듭니다. 또한 실습을 더 많이 하고자하는 욕심을 가지고 있고 실습 part 뿐만 아니라 여러 부분에서 아쉬움이 굉장히 크다는 생각이 들게 되었습니다. 이 강의의 목적이 무엇인가 계속 생각해보았고 결론은 수학적 도구들(선형대수학, 미분적분학, 통계학)을 통해 인공지능에 대한 이해도를 높이는 것이라고 판단했습니다. 허나 제가 지금 하고 있는 학습 활동은 인공지능이 우선시 되기보단 수학적 도구들을 얼마나 이해하고 문제를 풀 수 있나에 집중한다는 것이 느껴졌습니다. 결국에는 적용이 가장 중요한 mission임에도 불구하고 그에 걸맞는 실습은 많이 하지 못했다고 생각하고 있기 때문에 30점 정도 감점을 하여 점수를 매기게 되었습니다.
7. 다른 학생에 대한 평가
앞서 동료들에 대한 평가와 비슷한 맥락이라고 생각하여 의견을 덧붙여 말씀드리겠습니다. 다른 학생들은 각자의 전공에 맞는 활동을 하시는 분들도 계시고 저처럼 수학적 도구에 익숙해지고 하는 분들도 계시고, 굉장히 다양한 방향성을 지니고 각자 활동하고 계시다고 느끼고 있습니다. 하지만 앞에서 말씀드렸듯이 이 강의의 목적은 결국에 인공지능과 연관지어 이러한 수학적 도구를 활용할 수 있는가가 관건이라고 저는 판단하였습니다. 그래서 이번 midterm 이후로는 이러한 목적의식에 걸맞는 활동을 많이 해볼까 합니다. 지금도 이러한 활동을 하고 계신 분들이 몇 분 계시는 것으로 보이고 저도 그 분들을 본받아 열심히 활동을 하고자하는 의욕이 생깁니다. 물론 더더욱 열심히 해서 best가 되는 것이 최종적인 목적이고 인공지능과 관련해서도 여러 가지 sub-purpose가 존재하니까 이러한 부차적인 것은 제 전공과 관련한 것으로 연관짓는 것이 어떨까 생각하고 구상하고 있습니다.
Self Evaluation 2. (개인 성찰 노트 2)
과 목 명 |
Basic Math for AI |
||||||||
이 름 |
김정한 |
학 과 |
바이오메카트로닉스 |
||||||
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
|||
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
|
|
o |
||
2. |
QnA에 적극적으로 참여하였다. |
|
|
|
|
o |
|
||
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
|
|
|
o |
|
|
||
4. |
동료에게 도움이 되는 지식과 정보를 제공하였다. |
|
|
|
|
o |
|
||
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
|
o |
||
6. |
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
|
o |
|
||
7. |
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
|
|
o |
[의견]
▶ 자체평가에 따른 잘한 점
제가 4주동안 활동하면서 잘했다고 느껴지는 점은 3가지로 요약할 수 있을 것 같습니다. 첫 번째는 수학적 개념을 정확히 배워나가는 것입니다. 꾸준히 강의를 듣는 것은 잘하여 선형대수학과 미분적분학에 대해 여러 가지 개념을 배울 수 있었습니다. 이러한 꾸준함이 결국에는 개념의 완성에 효과적으로 도움을 주어 이러한 포인트가 잘한 점이라고 생각이 듭니다. 두 번째는 강의 방식에 대한 적응이라고 생각합니다. 보통 다른 강의를 들으면 발표를 시키는 과목이나 글을 쓰는 과목은 특정과목들을 빼고는 거의 보지 못하였습니다. 특히나 이과적 성향이 뚜렷한 과목들은 더더욱 보지 못하였습니다. 그러나 이 수업은 다른 수업과 차별화되어 지속적으로 다른 사람들과 communication해가면서 틀린 부분은 서로 고쳐주고 더 알고자 하는 부분을 가져와 같이 정보를 공유하며 함께 성장해 나갑니다. 익숙치는 않지만 굉장히 도움이 된다고 느꼈고 QnA 작성에 재미를 느끼게 된 것이 두 번째로 잘한 점이라 생각합니다. 마지막으로 잘한 점은 이 보고서입니다. 사실 대학교를 다니면서 이렇게 방대한 양의 보고서를 쓰는 경우는 졸업 시즌 빼고 드물다고 생각합니다. 이러한 보고서의 작성이 나중에 그 양이 크든 작든 명확하고 흥미로운 보고서 작성에 도움이 될 것이라고 생각이 듭니다. 보고서를 쓰는 재미도 느낄 수 있었고 굉장히 제 적성에 맞는 활동이라고 느끼게 되었습니다.
▶ 자체평가에 따른 아쉬운 점
잘한 점이 있다면 아쉬운 점도 많다고 생각이 듭니다. 아쉬운 점도 세가지 정도로 간추려 보겠습니다. 먼저 첫 번째로 아쉬운 점은 먼저 참여하지 않은 점입니다. 첫 번째까지는 아니더라도 빠른 참여를 했어야했다는 생각이 들고 후회가 듭니다. 많이 하지 않은 편은 아니지만 더 많은 활동을 할 수 있었을 것이라는 생각이 들고 활동 방법을 잘몰라서 먼저 겁먹고 하기 두려워했던 점이 다소 아쉽습니다. 막상 해보면 생각보다 재밌고 흥미로운 강의 활동이지만 그것을 몰랐던 것이 후회가 됩니다. 두 번째로 아쉬운 점은 선형대수학의 개념을 다 알지 못하고 이 수업을 듣게 된 것입니다. 물론 개념을 하나씩 알아가는 재미도 있고 교수님께서 강의도 잘해주셔서 따라가는 것에 크게 문제는 없습니다. 하지만 미리 더 알고 이 교양에 참여하였다면 좀 더 질 좋은 질문들을 할 수 있었을 것이고 개념 숙지의 시간보다 실습에 시간을 더 투자하여 인공지능 매커니즘에 대해서 좀 더 다가갈 수 있었을 것 같습니다. 마지막으로 아쉬운 점은 온라인 강좌를 하게 되었다는 것입니다. 이것은 물론 자체평가에 따른 아쉬운 점과 거리가 있어보이지만 사실 오프라인 강좌를 하였다면 더 짧은 시간안에 팀원들과 더 핵심적인 내용을 가지고 토의하고 연구할 수 있지 않았을까라는 생각이 듭니다. 아이캠퍼스로 토의나 QnA를 진행하다보니 질문이 올라오는 속도나 그에 따른 답변이 올라오는 속도가 따로 정해져있지 않아 안타까운 감이 없지 않아 있습니다.
Self Evaluation 3. (개인 성찰 노트 3)
자신의 학습에 도움이 된 우수한/성실한 동 료 평 가
과 목 명 |
Basic Math for AI |
|||||||
|
(두 명 이상의 추천을 받은 학생은 가산점) |
|||||||
피평가자(동료) Best classmate |
박진형 |
|||||||
평가자(작성자) your name |
김정한 |
|||||||
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
||
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
|
o |
|
|
2. |
QnA에 적극적으로 참여하였다. |
|
|
|
|
|
o |
|
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
|
|
|
|
|
o |
|
4. |
동료에게 도움에 되는 지식과 정보를 제공하였다. |
|
|
|
|
|
o |
|
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
|
o |
|
6.
|
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
|
|
o |
|
7.
|
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
|
|
o |
|
[의견]
▶ 자체평가 중 잘한 점
실습 활동을 하면서 그래프를 작도하는 활동이 있었다. 본인의 경우 교수님이 주신 자료로만 그대로 작도하여 적분의 개념을 다시금 확인하였다면 동료는 더 다양한 방식으로 작도를 해보고 심화과정까지 실행하였다. 이러한 점을 보고서 주어진 것보다도 더 활동할 수 있는 의지가 돋보였고 배울 점이었다.
▶ 자체평가 중 미비점 다만 그래프의 작도이다 보니 PBL평가에 본의 아니게 더 많은 페이지 수를 쓰게 되고 사진이 많이 들어가다 보니 내용 읽기가 조금 어려웠다. |
Self Evaluation 4. (개인 성찰 노트 4)
Action Learning Class 반응평가(학생용)
* 1~16 평가내용을 읽고 「매우긍정~매우부정」 중 하나에 V 표시하시오. 그리고 5, 12, 14번은 연결문항에 답하시오.
평가내용 |
평가 |
||||
매우 긍정 |
긍정 |
보통 |
부정 |
매우 부정 |
|
1. 우리 방식의 수업에 적극적으로 참여하였다. |
|
v |
|
|
|
2. 교수는 학생들의 능력을 발휘하도록 도와주었다. |
v |
|
|
|
|
3. 우리 방식의 학습 과정을 통해서 새로운 지식을 획득하였고 지식수준이 향상되었다. |
v |
|
|
|
|
4. 이 과정을 통하여 추론기술이 향상되었다. |
v |
|
|
|
|
5. 이 과정을 통하여 자기 주도적 학습기술을 습득하였다. |
v |
|
|
|
|
6. 이 과정을 통하여 문제해결기술을 습득하였다. |
v |
|
|
|
|
7. 이 과정을 통하여 학습운영기술을 습득하였다. |
v |
|
|
|
|
8. 이 과정을 통하여 전문성이 향상되었다. |
|
v |
|
|
|
9. 이 과정은 실제 연구 상황과 유사하였다. |
|
v |
|
|
|
10. 학습과정에 대한 평가 방법이 합리적이었다. |
v |
|
|
|
|
11. 문제해결을 하면서 학습주제를 더 잘 알게 되었다. |
v |
|
|
|
|
12. 학습과정에서 학습주제와 관련한 활발한 의사소통이 이루어졌다. |
v |
|
|
|
|
13. 학습결과는 문제해결절차를 통해서 산출되었다. |
|
v |
|
|
|
14 전반적으로 우리 방식의 수업이 효과적이라고 생각한다. |
v |
|
|
|
|
15. 우리 방식의 수업에 다시 참여하고 싶다. |
v |
|
|
|
|
* 5, 12, 14 연결문항
5-1. 본 수업을 통해 자신이 습득한 자기 주도적 학습 기술을 구체적으로 설명하시오.
우선 가장 크게 변화한 점은 개념을 가지고 실습을 해보았다는 것이다. 보통 수학 과목을 수강하게 되면 개념 숙지 후 문제 풀이 그 과정을 반복하여 시험을 보고 끝나버리는 경우가 다반사였다. 허나 이번 수업을 통해서 개념 숙지 후 문제 풀이와 실습을 병행하여 내가 푸는 방식이 맞는지 답이 틀리지 않았는지 검토할 수 있는 요소가 생겼고 더욱이 코딩에 더 가까워질 수 있는 효과를 가지게 되어 기본 수학 수업보다 두 배 이상의 교육 효과가 나타나는 것 같다는 생각이 들었다. 무엇보다도 QnA를 참여하는 것이 자기 주도적 학습의 메인 요소인데, QnA에 참여하면서 내가 아는 것과 모르는 것을 구분할 줄 아는 능력을 길렀고 모르는 것을 물어볼 때 자신있게 물어볼 수 있는 용기를 가지게 되었다. 그리하여 아는 것은 더욱 다른 개념을 위해 쓰이게 되고 모르는 것은 완벽히 숙지하는 기술로 공부를 하였다.
12-1. 본 수업과정에서 자신이 참여한 활발한 의사소통을 구체적으로 설명하시오.
먼저 강의에서 배운 내용을 복습하고 모두 다 아는 개념이거나 거의 숙지가 된 개념일 경우 개념 정리를 하고 난 후 중요한 실습 문제를 골라 실습을 하여 같이 올린다. 실습에 대해서 추가적인 피드백이나 덧붙임이 있을 경우 그것 모두 고려하여 다른 사람들과 함께 finalize한다. 하지만 개념이 부족할 경우 질문이 생기게 된다. 이때가 가장 의사소통이 활발한데 개념 정리와 그 개념 속에서 내가 부족한 부분을 질문한다. 다양한 답변들이 달리고 그 답변들을 모두 정리하여 함께 final에 올려 finalize한다.
14-1. 우리 방식의 수업에서 효과적이었다고 생각되는 부분을 구체적으로 설명하시오.
첫 번째는 QnA방식이다. 다른 학우들과 의견을 나누고 부족한 부분을 서로 채워주면서 함께 성장해나가는 느낌을 갖고 실제로도 그렇게 된다. 모든 것이 완벽할 수는 없기 때문에 모두가 모를정도로 어려운 것은 교수님께서 자세히 설명해주시고 서로 아는 한도에서 설명을 해주기에 감사함 마음과 더불어 실력도 같이 늘어간다. 두 번째는 보고서 작성이다. 보고서 작성하면서 다시 한 번 내용이 정리가 되는 느낌이다. 개념이 조금 흩어져 있던게 보고서 작성을 통해 모이면서 좀 더 보완해야할 점도 보이고 내가 어느정도까지 공부를 했는지 눈에 보여 공부에 대한 자극도 주는 것 같다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
보완해야할 점은 아직까지 잘 모르겠다. 다만 온라인 수업이라서 학우들과 특정한 문제에 대해 토의하지 못하고 교수님과 면대면으로 질문을 드리고 답변을 못받는게 살짝 아쉬울 따름이다.
Open Feedback : Please leave any general comments and suggestions that will help improve this class in the future, including what you liked and did not like about this class. [FREE RESPONSE BOX]
Ch 4장. PBL Participation/Activity Part (30점)
(4장. 학습활동 참여 부분 )
[1] [HW] 자기 소개 및 수강 동기 김정한
안녕하세요. 이번에 인공지능을 위한 기초수학을 수강하게 된 바이오 메카트로닉스학과 김정한이라고 합니다. 제가 미적분학은 수강을 했어도 선형대수학을 수강하지 못해 이번 주차 내용 숙지에 어려움이 있었는데 내용을 정리하고 질문을 선별하는데 시간이 걸려 게시글을 한꺼번에 올리는 것을 지금 올리려 합니다. 학점은 높을수록 좋을 것 같지만 제 목표는 무엇보다도 기초 수학에 대한 이론 숙지 및 이를 통한 활발한 실습 활동에 있다고 생각합니다. 다음 주차부터는 더 빠른 내용 숙지를 통해 더 많은 질문과 토의를 하고자 합니다. 제가 작성한 개념 정리나 질문에 대한 답변의 깊이가 부족하다면 아낌없는 지적 부탁드리겠습니다. 감사합니다.
1. 벡터
정의. |
[ 차원 벡터(-dimensional vector)] |
개의 실수의 순서조
정의. |
의 노름(norm, length, magnitude) |
의 벡터 에 대하여
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터 , 에 대하여
= =
정의. |
위로의 의 정사영 (projection of onto ) |
,
2. 선형연립방정식
정의. |
선형연립방정식(system of linear equations) |
미지수 에 관한 유한개의 선형방정식의 모임
만일 상수항 이 모두 0일 경우, 동차선형연립방정식(homogeneous system of linear equations, 동차선형방정식시스템)이라 한다.
정의. |
첨가행렬(augmented matrix) |
선형연립방정식에 대하여
로 간단히 쓸 수 있다.
이때 행렬 를 선형연립방정식의 계수행렬(coefficient matrix)이라 하며, 에 를 붙여서 만든 행렬
을 선형연립방정식의 첨가행렬(augmented matrix)이라고 한다.
정의. |
기본행 연산(elementary row operation, ERO) |
행렬 에 관한 다음의 연산
E1: 의 두 행 행과 행을 서로 바꾼다.
E2: 의 행에 이 아닌 상수 를 곱한다.
E3: 의 행을 배 하여 행에 더한다.
정의. |
행 사다리꼴(row echelon form, REF) |
행렬 가 다음 3가지 성질을 만족할 때, 행 사다리꼴(row echelon form, REF)이라고 한다.
(1) 성분이 모두 0인 행이 존재하면 그 행은 행렬의 맨 아래에 위치한다.
(2) 각 행에서 처음으로 나타나는 0이 아닌 성분은 1이다. 이때 이 1을 그 행의 선행성분(leading entry, leading 1)이라고 한다.
(3) 행과 행 모두에 선행성분이 존재하면 ()행의 선행성분은 행의 선행성분보다 오른쪽에 위치한다.
4번째 성질을 추가로 만족하면 를 기약 행 사다리꼴(reduced row echelon form, RREF)이라고 한다.
(4) 선행성분(leading entry in row)을 포함하는 열의 선행선분 외의 성분은 모두 0이다.
정리. |
행동치인 선형연립방정식은 해집합이 같다 |
*행동치 : 한 행렬을 여러 번의 기본 행 연산에 적용하여 다른 행렬로 변환시킬 수 있는 경우, 이들 두 행렬의 관계를 이르는 말.
3. 행렬과 행렬식
정리. |
가역행렬(invertible matrix)의 성질 2 |
만일 가 가역행렬이면, 도 가역행렬이고 다음이 성립한다.
정리. |
역행렬 구하는 방법 1 |
[단계 1] 주어진 행렬 에 단위행렬 을 첨가하여 행렬 을 만든다.
[단계 2] 단계 1에서 만든 행렬 의 RREF를 구한다.
[단계 3] 단계 2에서 얻어진 RREF를 라고 하면 다음이 성립한다.
(1) 이면 이다.
(2) 이면 는 비가역이고 은 존재하지 않는다.
정리. |
행렬의 가역성과 선형연립방정식의 해 사이의 관계 |
차의 정사각행렬 가 가역이고 가 의 벡터일 때, 연립방정식 는 유일한 해 를 갖는다.
정의. |
치환(permutation, 순열) |
(1) 자연수의 집합 의 치환(permutation, 순열)이란 에서 로의 일대일 대응함수이다.
▪ 앞으로 치환을 간단히 로 나타낸다. 치환 는 일대일대응이므로 치역 은 의 숫자를 일렬로 배열하는 것에 지나지 않는다. 따라서 의 치환은 모두 개이다. 집합 의 모든 치환의 집합을 으로 표시한다.
(2) 치환 에서 반전(inversion)이란 큰 자연수가 작은 자연수보다 더 왼쪽에 먼저 나타나는 경우를 말한다. 예를 들어 아래 그림의 치환 에서 는 보다 더 왼쪽에 있으므로 에서 반전이 일어났다. 마찬가지로 에서도 반전이 일어났다.
(3) 치환이 가진 반전의 총 개수가 짝수이면 이 치환은 짝치환(even permutation), 홀수이면 홀치환(odd permutation)이라고 한다.
정의. |
치환(permutation, 순열), 행렬식 |
(1) 의 각 치환을 또는 이라는 수에 대응시키는 부호화 함수(signature function) 을 다음과 같이 정의한다.
(2) 행렬 가 차의 정사각행렬일 때, 의 행렬식을 또는 로 나타내고 다음과 같이 정의한다.
은 행렬 의 행과 열에서 중복됨 없이 하나씩 뽑아서 곱한 후 대응되는 치환의 부호를 붙인 것이다.
정리. |
가역행렬 |
(1) 가 가역행렬일 필요충분조건은 이다.
(2) 두 행렬 , 가 차의 정사각행렬일 때, 이 성립한다.
(3) 행렬 가 가역이면 이고, 이 성립한다.
정의. |
수반행렬(adjugate, adjunct 또는 classical adjoint matrix) |
차의 정사각행렬 의 성분 에 대한 여인자를 라 할 때, 행렬 를 의 수반행렬(adjugate, adjunct 또는 classical adjoint matrix)이라 하고, adj로 나타낸다. 즉,
*http://matrix.skku.ac.kr/LA-K/
정사각행렬 의 행과 열을 제거하여 만든 부분행렬을 라 하고 그의 행렬식 를 의 에 대한 소행렬식(minor)이라 한다. 또, 를 의 에 대한 여인자(cofactor)라고 한다.
정리. |
수반행렬을 이용한 가역행렬의 역행렬 |
차의 정사각행렬 가 가역일 때, 의 역행렬은 이다.
Comment:
2017년 1학기에 선형대수학을 배웠습니다. 그때는 이해 안되는 부분이 있으면 외워서 사용하거나 그냥 넘어갔었는데, 이번 기회를 통해서 배운 내용 중에서 중요한 부분들을 직접 요약 및 정리하면서 그러한 부분들을 제대로 이해할 수 있게 되어서 좋습니다.
※ 이번에 제대로 이해하게 된 내용
치환(permutation, 순열), , 수반행렬(adjugate, adjunct 또는 classical adjoint matrix),
Part I 행렬과 데이터분석 정리 - 2 (4강 ~ 6강)
작성자 : 채희준(2016****00)작성일 : 7월 23일 오전 5:22
Part I 행렬과 데이터분석 정리 - 2
http://matrix.skku.ac.kr/math4ai/part1/
4. 일차독립과 기저(basis) 및 차원(Dimension)
정의. |
일차독립(linearly independent) |
(1) 의 부분집합 에 대하여, 벡터 가
의 꼴로 표시되면, 를 벡터 의 일차결합(linear combination)이라고 한다.
(2) 에 대하여
이면,
벡터 (또는 집합 )는 일차독립(linearly independent)이라고 하고,
벡터 (또는 집합 )가 일차독립이 아니면 일차종속(linearly dependent)이라고 한다.
정리. |
일차독립(L.I.) 판정법 |
▪는 들을 열벡터(column vector)로 가지는 행렬, 라 하자. 그렇다면 벡터들이 일차독립임을 보이기 위해서는 동차연립방정식 이 유일한 해 을 가져야 한다. 특히 일 경우 이면 유일해를 갖는다.
정의. |
부분공간(subspace) |
(1) 집합 가 의 부분집합이라 하자. 이때 다음 두 조건을 만족하면
는 의 부분공간(subspace)이다.
(덧셈에 닫혀 있다.)
(스칼라배에 닫혀 있다.)
(2) 행렬 에 대하여 집합 은 의 부분공간이다.
이러한 를 의 해공간(solution space) 또는 의 영공간(null space)이라 하며 기호로 Null로 나타낸다.
(3) 의 부분집합 에 대하여 에 있는 개 벡터들의 일차결합 전체의 집합, 즉 는 의 부분공간이다.. 이러한 를 에 의하여 생성된(spanned) 의 부분공간이라 한다. 집합 는 를 생성(span)한다고 하고, 를 의 생성집합(spanning set)이라고 하며 기호로는 다음과 같이 나타낸다.
또는
특히, 에 있는 모든 벡터가 에 있는 개 벡터들의 일차결합이면 집합 는 을 생성한다. 즉
이면, 는 을 생성한다고 한다.
정의. |
기저(basis) |
의 부분집합 가 아래 두 조건을 만족하면 를 의 기저(basis)라 한다.
(1) 가 일차독립
(2)
▪ 의 기저는 무수히 많다. 그러나 각 기저에 속하는 벡터의 개수는 항상 같다.
정의. |
차원(dimension) |
집합 가 의 한 기저일 때, 에 속하는 벡터의 개수를 의 차원(dimension)이라 하며 로 나타낸다.
정의. |
nullity() |
행렬 에 대하여 의 해공간, 즉 의 영공간의 차원을 nullity()라고 나타낸다. 즉, dim Null()nullity()이다.
▪ Gauss-Jordan 소거법을 이용하여 행렬 을 선형연립방정식의 첨가행렬 의 RREF라 하고 행렬 는 첫 행부터 개의 영이 아닌 행을 갖는다고 하자.
(1) 이면 의 해는 만을 갖는다. 따라서 해공간의 차원은 이다.
(2) 이면 (필요한 경우 열을 교환하면—변수의 위치만 변경하면 되므로) 일반성을 잃지 않고
라고 할 수 있다. 그러면, 선형연립방정식은 다음과 동치이다.
즉, 은 개의 자유변수이다. 따라서 임의의 실수 에 대하여 이라 하면, 연립방정식의 일반해는 다음과 같이 개 벡터들의 일차결합으로 표현이 가능하다.
여기서, 이 임의의 실수이므로
도 연립방정식의 해이다. 따라서 위의 모든 개의 벡터들의 일차결합 해는
로 표현되므로 는 의 해공간을 생성한다. 또, 가 일차독립임을 쉽게 알 수 있다. 따라서 는 이 해공간 의 기저이고 이 해공간의 차원은 이다.
정의. |
열공간(column space) Col, 행공간(row space), Row |
행렬 에 대하여 의 각 행으로 이루어진 개의 벡터
과 의 각 열로 이루어진 개의 벡터
을 각각 의 행벡터(row vector), 열벡터(column vector)라고 한다.
이 행벡터 들에 의해서 생성된 의 부분공간 즉,
을 의 행공간(row space), Row로 나타내고, 열벡터 에 의해 생성된 의 부분공간 즉,
을 의 열공간(column space)이라 하고, Col로 나타낸다.
그리고 행공간의 차원을 의 행계수(row rank), 열공간의 차원을 의 열계수(column rank)라 하고, 각각 , 로 나타낸다. 즉,
dim Row,dim Col
정리. |
계수(rank), Rank-Nullity 정리 |
(1) 임의의 행렬 에 대하여 의 행계수와 열계수는 같다.
▪ 이 계수를 행렬 의 계수(rank)라 하고 아래와 같이 쓴다.
(2) 임의의 행렬 에 대하여 다음이 성립한다. [Rank-Nullity 정리]
rank() nullity() (column 의 개수)
|
최소제곱해(least square solution) |
대개 미지수의 개수보다 많은 데이터의 개수를 사용하므로, 방정식의 개수가 미지수의 개수보다 많은 (over-determined인) 선형연립방정식이 생긴다. 이런 경우, 일반적으로 선형연립방정식 를 만족하는 유일한 해는 물론 단 하나의 해도 없는 경우가 대부분이므로 대신 를 만족하는 근사해를 찾는다. 즉 오차 을 최소화하는 근사해를 찾는 이 문제를 최소제곱문제(least squares problem)라 한다.
를 모델 에 를 대입하여 얻은 값이라고 하면, (즉 ) 최소제곱문제는 결국 오차 이 최소가 되는 , 를 구하는 것과 같다.
정의. |
Normal equation(정규방정식) |
가 최소제곱문제 의 해가 될 필요충분조건은 을 만족하는 것이다.
[이때 선형연립방정식 을 normal equation(정규방정식)이라 한다.]
(Sketch) 일단 선형연립방정식 의 해가 존재하지 않으므로 Col()이 성립한다. 의 Col() 위로의 정사영을 이라 하면, 의 해가 존재한다. 이 해를 이라 하면, 이 바로 최소제곱문제 의 최소제곱해(least squares solution)가 된다. 다음 그림에서
,
라 하면 Col()이므로 와 의 열벡터들이 각각 직교이므로 이 성립한다. 따라서 , 즉 이 성립한다.
의 열벡터들이 일차독립(이를 가 full column rank를 갖는다고 한다)이면, 가 가역이고, 의 열벡터들이 Col()의 기저가 된다. 따라서 최소제곱문제의 최소제곱해(least squares solution)는
이고, 를 만족한다.
정의. |
정규직교기저(orthonormal basis) |
(1) 의 벡터 에 대하여
라 하자. 이때, 의 서로 다른 임의의 두 벡터가 모두 직교하면 를 직교집합(orthogonal set)이라 한다. 특히, 직교집합 에 속하는 벡터가 모두 크기가 1인 경우 를 정규직교집합(orthonormal set)이라고 한다.
(2) 의 기저 가 직교집합이면 직교기저(orthogonal basis), 정규직교집합이면 정규직교기저(orthonormal basis)라고 한다.
정리. |
Gram-Schmidt 정규직교화 |
의 기저 로부터 직교집합 을 다음과 같은 단계로 계산한다.
[단계 1] 이라 한다.
[단계 2] 에 의하여 생성되는 부분공간을 이라 하고
로 한다.
[단계 3] , 에 의하여 생성되는 부분공간을 라 하고
로 한다.
[단계 4] 에서부터 까지는 마찬가지 방법으로
위의 단계로부터 얻어지는 은 서로 직교인 직교집합이고, 각각의 크기를 로 하면, 즉 라 정의하면 집합 은 의 정규직교기저이다.
정리. |
QR 분해 |
행렬 가 rank 인 행렬이라면, 로 분해가능하다. 여기서 는 의 열공간 Col의 정규직교기저로 만들어진 행렬이고, 은 가역인 크기 의 상삼각행렬이다.
이제 행렬 이고 인 경우 라 하자. Gram-Schmidt 정규직교화 과정에 의하여 행렬 의 열공간 의 정규직교기저 을 얻을 수 있다. 이제 와 사이의 관계를 알아보자.
가 Col의 정규직교기저이므로
로 표현가능하다. 또한 ()이므로 위의 표현은 다음과 같이 간단하게 표현가능하다. 즉,
.
이제 다음과 같이 상삼각행렬(upper triangular matrix) 을 정의하고,
앞서 정의한 행렬 와의 곱을 생각해보자. 행렬 곱 의 번째 열벡터는 이므로 의 번째 열벡터의 성분을 계수로 하는 의 열벡터들의 일차결합이다. 따라서
(1)
즉, 이다.
위에서 만들어진 차 정사각 삼각행렬 은 주대각성분이 모두 영이 아니므로, 가역행렬이다. 또한 이므로 는 (column) 직교행렬이다.
5. 선형변환 (Linear Transformations)
정의. |
선형변환(linear transformation) |
에서 으로의 변환 가 임의의 벡터 와 임의의 스칼라 에 대하여 다음 두 조건을 만족하면 를 에서 로의 선형변환(linear transformation)이라고 한다.
(1) (2) ()
정의. |
행렬변환(matrix transformation) |
에서 으로의 모든 선형변환 은 행렬변환 으로 나타낼 수 있다.
을 임의의 선형변환이라 할 때, 의 기본단위벡터 (표준기저) 에 대하여 모든 는
와 같이 나타낼 수 있고, , , , 은 각각 행렬이므로
이라 할 수 있다. 따라서 모든 선형변환 은
(1)
의 형태로 표시할 수 있다. 여기서 , , , 을 열벡터로 갖는 행렬을 라 하면
이므로
이다. 위의 행렬 를 선형변환 의 표준행렬(standard matrix)이라 하며 라 표시한다. 따라서 (1)로 주어진 선형변환의 표준행렬은 기본단위벡터를 순서대로 대입하여 열을 구하여 쉽게 만든다.
정의. |
핵(kernel), 단사, 전사, 전단사, 동형사상(isomorphism) |
(1) 이 선형변환일 때, 에 의한 상이 이 되는 안의 벡터 전체의 집합을 의 핵(kernel)이라 하고 로 나타낸다. 즉
(2) 변환 가 를 만족하면 단사(one-to-one; injective)라 한다.
(3) 선형변환 에 대하여, 임의의 의 상 전체의 집합을 의 치역(range)이라 하고 로 나타낸다. 즉,
.
특히, , 즉 변환 가 임의의 에 대해 인 가 존재하면 전사(onto, surjective)라 한다.
(4) 선형변환 가 단사이고 전사 (전단사)이면 이 되고, 를 에서 으로의 동형사상(isomorphism)이라고 한다.
정리. |
선형변환이 단사일 필요충분조건 |
이 벡터공간이고 가 선형변환일 때, 가 단사일 필요충분조건은 이다.
Comment:
QnA 공간이 있어 공부를 하면서 모르는 것을 바로 물어볼 수 있고, 다른 분들과 생각을 공유할 수 있다는 것은 굉장히 좋은 방법인 것 같습니다. 문의게시판을 통해 다른 분들이 질문 및 답변을 한 글을 참고하며 더 정확하고 효율적인 학습을 할 수 있었습니다.
요약
14’[HW 요약] 1주차 요약‘
25’[HW 요약] 2주차 요약‘
33’[요약] 3주차 요약‘
42’[요약] 4주차 요약‘
14’[HW 요약] 1주차 요약‘
[1일차] Big Picture
• 벡터공간 2개 기본성질과 8개 연산성질을 만족하는 비공집합 V
• 부분공간 ①벡터공간의 부분집합이면서 ②자신도 벡터공간인 비공집합 W
• 일차결합 v = a1u1+...+akuk for {u1,...,uk}
• span 일차결합들의 전체집합 {a1u1+....+akuk}=<U>=U의 span
• 일차독립 a1u1+...+akuk=0 → a1=...=ak=0일 때 {u1,...,uk}는 일차독립 ↔ 일차종속 일차독립이 아님
• 기저 ①B가 일차독립 ②<B>=V일 때 V의 기저 B 특징 (1) maximal linearly independent subset (2) minimal spanning subset
• 차원 dim V = |V의 기저|
• 계수 행공간의 차원 rank(A) = dim Row(A) = dim Col(A)
• 초평면 a┴={(x1,...,xn)|a1x1+...+anxn=0}
• 정사영 p = proj<a>x = ∑(x·ai/||ai||²)ai 직교성분 w = x - p
• 고유값 det(λI-A)=0인 스칼라 λ 고유벡터 Ax=λix인 비공벡터 x for λi
• 대각화 A로부터 대각선행렬 D를 만들 수 있음(D=P^-1AP) ⇔ A와 D는 닮음행렬, A는 diagonalizable, P는 diagonalizing ⇔ 가역행렬 P가 존재
• SVD 특이값분해 A=UΣV^t where 직교행렬 U,V와 일반화된 대각선행렬 Σ
• 이차형식 ax^2 + 2bxy + cy^2 (식 형태)=(행렬 형태) [x y][[a b]^t[b c]^t][x y]^t for 이차방정식 ax^2+2bxy+cy^2+dx+ey+f=0
• 주축정리 이차형식은 변수변환으로 혼합항 xy 없는 식으로 표현 가능
• PCA 데이터 분산을 최대한 보존하면서 서로 직교하는 새로운 축을 찾아, 선형 연관성 없는 저차원 공간으로 변환하는 기법
[2일차] 벡터·정사영·최단거리, 선형연립방정식·행렬
• 정사영 p = projx y = (y·x/||x||²)x
• 최단거리 D = ||projn v|| = v·n/||n|| = |ax0 + by0 + cz0 + d| / sqrt(a^2 + b^2 + c^2)
• 선형연립방정식 해 구하기 ① Gauss 소거법: 첨가행렬 → REF ② Gauss-Jordan 소거법: 첨가행렬 → RREF
[3일차] 역행렬·행렬식·기저·차원, 최소제곱해·QR분해
• 가역 Ax=0 → x=0
• 역행렬 구하기 ① [A:I] -RREF→ [I:A^-1] ② A^-1 = (1/A)adjA
• 수반행렬 adjA = [Aij]^t, 여인자 Aij = i행과 j열을 제외한 행렬의 행렬식x(-1)^{i+j}
일차독립 det ≠ 0
• 해공간 영공간 {x|A x=0}
• span S S 벡터들 일차결합의 전체집합
basis ① 일차독립 ② span하면 V일 때 V의 기저
• 차원 V의 기저벡터개수
• Rank-Nullity 정리 mxn A에 대하여, rank(A) + nullity(A) = n, #leading variables + #free variables = #column
최소제곱해 선형연립방정식 Ax=b의 최소제곱해 x^ ⇔ 정규방정식 A^tAx=A^tb의 해 x^, x^ = (A^tA)^-1A^tb
• 조건: A가 full column rank
Gram-Schmidt 정규직교화법 임의의 기저 S로부터 정규직교기저를 구하는 방법
• y1 = x1, y2 = x2 - projW1 x2, y3 = x3 - projW2 x3 ... → zi = yi/||yi||
• projW1 x2 = (x2·y1/||y1||²)y1, projW2 x3 = (x3·y1/||y1||²)y1 + (x3·y2/||y2||²)y2, ...
QR분해 A가 full column rank일 때 A=QR
• Col(A)의 정규직교기저를 열로하는 Q 직교행렬, R = Q^tA인 상삼각행렬 R 가역행렬
• A -[Gram-Schmidt]→ Q -[R=Q^tA]→ R
• 최소제곱해 구하기 Ax=b ⇔ A^tAx=A^tb ⇔ Rx=Q^tb -[backward substituting]→ x=R^-1Q^tb
25’[HW 요약] 2주차 요약‘
[4일차] 선형변환, 행렬의 대각화
• 선형변환 ①T(u+v)=T(u)+T(v) ②T(ku)=kT(u)인 변환 T
• 모든 선형변환은 행렬변환이다.
• 표준행렬 A = [T(e1):...:T(en)]
핵 ker(T) = {v|T(v)=0} image가 0이 되는 pre-image 전체집합
치역 Im(T) = {T(v)|v} 모든 pre-image의 image 전체집합
• 단사 T(u)=T(v) → u=v, ker(T)={0}
• 전사 모든 w에 대하여 w=T(v)인 v가 존재, Im(T)=R^m
A에 대하여 Ax=λx를 만족하는 고유값 λ 고유벡터 λ에 대응하는 비공벡터 x
• 서로 다른 고유값에 대응하는 고유벡터들은 일차독립
닮음행렬 B=P^-1AP인 가역행렬 P 존재 → A와 B는 닮음, A~B
• (1)detA=detB (2)trA=trB (3)특성방정식 같음 (4)고유값 같음
직교행렬 A^tA=I인 A (1)행벡터들은 정규직교벡터 (2)열벡터들은 정규직교벡터 (3)A^-1=A^t, A는 가역 (4)||Ax||=||x||, 길이보존
직교닮음행렬 C=P^tAP인 직교행렬 P 존재 → A와 C는 직교닮음
대각화가능행렬 A와 대각선행렬이 닮음 ⇔ 대각선행렬 D=P^-1AP인 가역행렬 P 존재, diagonalizable A diagonalizing P
• 대각화가능 A ⇔ A는 n개의 모두 일차독립인 고유벡터를 가짐
• 이 고유벡터들 → P, A의 고유값을 주대각성분으로 하는 대각선행렬 → D
• A로 P와 D 구하기: (1)A의 고유벡터 p1,...,pn 구하기 (2)P=[p1,...,pn], D=diag(λ1,...,λn)
직교대각화가능행렬 A와 대각선행렬이 직교닮음 ⇔ A를 대각화하는 직교행렬 P 존재, orthogonally diagonalizable A orthogonally diagonalizing P
• 직교대각화가능 A ⇔ A가 대칭행렬 ⇔ A는 n개의 일차독립인 고유벡터를 가짐 &서로 다른 고유값에 대응하는 고유벡터들은 직교
• A로 P와 D 구하기: (1)A의 고유벡터 구하기 (2)서로 같은 고유값에 대응하는 고유벡터들 정규직교화 (3)나머지 고유벡터들 정규화 zi (4)직교행렬 P=[z1,...,zn], D=diag(λ1,...,λn)
고유값분해 A = PDP^-1 (대각화가능 A) = Σλiuiui^t (직교대각화가능 A)
• 고유값분해가능 A ⇔ 대각화가능 A (1)detA=Πλi (2)trA=Σλi (3)A^k=Pdiag(λ1^k,...,λn^k)P^-1 (4)A^-1=Pdiag(λ1^-1,...,λn^-1)P^-1
[5일차] 특이값분해, 이차형식
• SVD A=UΣV^t, A에 대한 singular value σ와 singular vector u, v로 분해 가능
• Σ A의 singular value σ를 성분으로 하는 대각선행렬, σ=sqrt(A^tA의 λ) mxn
• V A^tA를 직교대각화하는 직교행렬, A의 singular vector v를 열로하는 행렬 nxn
• U AA^t를 직교대각화하는 직교행렬, A의 singular vector u를 열로하는 행렬 mxm
• A → A^tA -[A^A로부터V,Σ구하기]→ 직교행렬 V, 대각선행렬 Σ -[u=(1/σ)Av]→ 직교행렬 U
Pseudo inverse A^† = VΣ'U^t = (A^tA)^-1A^t (A는 full column rank)
이차형식 q(x)=x^tAx=(a11)(x1)^2+...+(ann)(xn)^2+...+(a12)(x1)(x2)+...+(ann-1)(xn)(xn-1), A는 주대각선을 거듭제곱의 계수, 나머지를 혼합항의 계수의 반으로 하는 symmetric
• q(x)가 positive definite ⇔ q(x)>0 ⇔ A의 고유값이 모두 >0 ⇔ Δi>0
• q(x)가 negative definite ⇔ q(x)<0 ⇔ A의 고유값이 모두 <0 ⇔ (-1)^iΔi>0
• q(x)가 indefinite ⇔ x에 따라 q(x)>0 또는 q(x)<0 ⇔ A의 고유값이 >0과 <0 모두
• q(x)가 positive semidefinite ⇔ q(x)≥0 ⇔ A의 고유값이 모두 ≥0
• q(x)가 negative semidefinite ⇔ q(x)≤0 ⇔ A의 고유값이 모두 ≤0
• 주축정리 이차형식 q(x)=x^tAx는 A의 고유값으로 교차항 없는 식 (λ1)(x'1)^2+...+(λn)(x'n)^2으로 나타낼 수 있음.
33’[요약] 3주차 요약‘
[6일차] 극한·도함수, 미분응용, 적분
• 극한 '0<|x-a|<δ → |f(x)-b|<ε, 모든 ε>0'인 δ 존재 → b는 f(x)의 x→a 극한
연속 (1) 좌극한 (2) 우극한 (3) f(a) (4) 좌극한=우극한=f(a) → f(x)는 연속 at x=a
• 미분가능 f(x) at x=a ⇔ lim h→0 {f(a+h)-f(a)}/h 존재
• 미분계수 lim h→0 {f(a+h)-f(a)}/h = f'(a)
도함수 각 점 x에 그 점에서의 미분계수를 대응한 함수 f`(x)=lim h→0 {f(x+h)-f(x)}/h
f(x)를 미분한다 ⇔ f(x)의 도함수를 구한다
tangent line y=f`(a)(x-a)+f(a) normal line tangent line에 수직인 직선
최대최소값의 정리 f(x) 연속 [a,b] → f(x)의 최대값·최소값 존재, (1) 극값 또는 (2) 양 끝값이 최대값·최소값 후보
뉴턴 방법 함수의 근을 그래프와 도함수로 구하는 방법, a_{n+1} = a_{n} - f(a_{n})/f`(a_{n})
• 부정적분 F`(x)=f(x)인 F(x) 존재 → F(x)는 f(x)의 부정적분, ∫f(x)dx
f(x)를 적분한다 ⇔ f(x)의 부정적분을 구한다
f(x) 미분가능 [a,b] → f(x) 연속 [a,b] → f(x) 적분가능 [a,b]
정적분 ∫a,b f(x)dx
평균값 정리 f(x) 연속 [a,b] → ∫a,b f(x)dx=(b-a)f(ξ), a<ξ<b인 ξ 존재
미적분학 기본정리 f(x) 연속 [a,b], F`(x)=f(x) → ∫a,b f(x)dx=F(b)-F(a)
[7일차] 다변수함수, 편도함수·그래디언트, 함수의 극대·극소
• 외적a X b = |[ijk][a1 a2 a3][b1 b2 b3]|, 벡터
코시슈바르츠 부등식 |x·y| ≤ ∥x∥∥y∥, x·y = ∥x∥∥y∥cosθ
• 편도함수 f_x = lim h→0 {f(x+h, y)-f(x, y)}/h about x of f
(1)f_xy (2)f_yx (3) f_xy, f_yx 모두 연속 → f_xy = f_yx → Hessian ∇² 대칭행렬
방향도함수 Du f(a,b) = lim t→0 {f(a+tu1, b+tu2)-f(a, b)}/t at (a,b) about u of f
f(x,y) 미분가능 (a,b) → Du f(a,b) = ∇f(a,b)·u = ∥∇f(a,b)∥cosθ
(a,b)에서 ∇f(a,b)의 방향이 f가 가장 가파르게 증가하는 방향
(a,b)에서 -∇f(a,b)의 방향이 f가 가장 가파르게 감소하는 방향
• 그래디언트 f의 편도함수를 성분으로 하는 벡터 ∇f(a,b) = <f_x, f_y>
헤시안 f의 2계편도함수를 성분으로 하는 행렬 ∇²f(a,b) = [[f_xx f_xy][f_yx f_yy]]
• 임계점 ∇f(a,b)=0 인 점 (a,b) → (1) 극소·극대점 또는 (2) 안장점(극소·극대 모두 아닌 점)
임계점에서 다변수함수 극대극소판정법: 다변수함수의 Hessian 행렬 (Δ부호) 또는 (λ부호)로 판단
H가 positive definite → 임계점은 극소, H가 negative definite → 임계점은 극대, H가 indefinite → 임계점은 안장
정리 Comment: 일변수함수의 미분·적분을 복습하고 다변수함수의 편도함수·방향도함수를 배우고 편도함수들을 모아 놓은 그래디언트·헤시안을 배웠습니다. 또 임계점이 극소·극대인지 아니면 안장점인지를 Hessian 행렬의 definitiveness로 판단하는 극대극소판정법을 배웠습니다. 다음에 배울 경사기울기하강법의 선행지식으로 한 점에서 f의 값이 가장 가파르게 감소하는 방향이 그 점에서의 그래디언트의 음의 방향인 것을 배웠습니다.
42’[요약] 4주차 요약‘
[8일차] 경사하강법, 중적분
• 경사하강법 f(x)의 최소값을 음의 그래디언트를 반복하여 구하는 방법
• x{k+1} = x{k} + α{k}d{k}에서 find α{k}, d{k} until ∥d{k}∥ <tolerance ε
• x{k} → d{k}=-∇f(x{k}) ─[line search]→ α{k} → x{k+1} until ∥d{k}∥ <ε
• find d{k} <GDA: d{k}=-∇f(x{k})> <CGM: d{k}=-∇f(x{k})+β{k}d{k-1}> <Newton's: d{k}=-(∇²f(x{k}))^-1∇f(x{k})>
• find α{k} ①exact line search: min f(x{k}+αd{k})인 α ②inexact line search: (1)f(x{k}+αd{k})≤f(x{k})+c₁αd{k}^t∇f(x{k}) (2)d{k}^t∇f(x{k}+αd{k})≥c₂d{k}^t∇f(x{k}) 그리고 0<c₁<c₂<1인 α
중적분 ∬R f(x,y) dA ∬∫V f(x,y,z) dxdydz
• Fubini 정리 f(x,y) 연속 R → ∬R f(x,y) = ∫a,b∫c,d f(x,y) dydx = ∫c,d∫a,b f(x,y) dxdy : 적분순서 바꾸어도 같음
• Jacobian |∂(x,y)/∂(u,v)|=|[∂x/∂u ∂x/∂v][∂y/∂u ∂y/∂v]| of Φ(u,v)=(x(u,v),y(u,v)) : 변수변환에 쓰임
• 변수변환 Φ(u,v)=(x(u,v),y(u,v)) 전단사, Φ 편도함수 연속, Φ Jacobian ≠ 0 → ∬R f(x,y) dA = ∬S f(x(u,v),y(u,v))|J(Φ)| dudv
• 극좌표 변수변환 x=rcosθ, y=rsinθ, J(Φ)=r, ∬R f(x,y) dxdy = ∫α,β∫a,b f(rcosθ,rsinθ)r drdθ
정리 Comment: 처음 경사하강법을 접할 땐 매우 어려웠지만 정리를 하고 나서는 이해가 되었습니다. 중적분은 다음 강의에서 배울 통계에서 필수적으로 쓰임을 알게 되었습니다.
실습(4개)
13‘[HW 실습] 1주차 실습’
23‘[HW 실습] 2주차 실습’
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
45’[실습] 4주차 실습‘
13‘[HW 실습] 1주차 실습’
목차
#벡터 정의
#합, 차, 스칼라배
#norm, 거리, 내적
#정사영, 벡터성분, 점-면 거리
#행렬 정의
#첨가행렬, RREF, Gauss-Jordan 소거법(해-소거법), 해-함수
#행렬의 덧셈, 스칼라배, 곱셈
#전치행렬, 가역성(false-negative 있음), 역행렬-함수
#기본행연산, 역행렬-RREF, 해-역행렬
#대각선행렬, 단위행렬, 영행렬, 대칭행렬, 반대칭행렬
#치환, 행렬식, 수반행렬, 역행렬-수반행렬
#일차독립-행렬식, 해공간, rank, nullity
#최소제곱해, Gram-Schmidt 정규직교화법, QR분해, 최소제곱해-QR분해
#벡터 정의
a=vector([1,2,3,4,5,6,7])
b=random_vector(7, x=-10, y=10)
c=random_vector(ZZ, 5)
print("a=", a)
print("b=", b)
print("c=", c)
#합, 차, 스칼라배
print("a+b=", a+b)
print("a-b=", a-b)
k=2
print("k*a=", k*a)
#norm, 거리, 내적
print("||a||", a.norm())
print("distance a,b:", (a-b).norm())
print("inner product a,b=", a.inner_product(b))
#정사영, 벡터성분, 점-면 거리
p=a.inner_product(b)/b.inner_product(b)*b
w=a-p
print("projection of a onto b=", p)
print("vector component of a onto b=", w)
n=vector([1,5,3,4,2,4,0])
d=2
D=abs(a.inner_product(b)+d)/n.norm()
print("distance a,n^perp=", D)
#행렬 정의
A=Matrix([[1,2,3,5,3],[4,5,6,0,1],[7,8,9,2,3],[0,2,3,1,2],[1,3,0,0,2]])
B=Matrix(5, 5, [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12])
C=random_matrix(ZZ, 7, 7, x=-10, y=10)
print("A=")
print(A)
print("B=")
print(B)
print("C=")
print(C)
#첨가행렬, RREF, Gauss-Jordan 소거법(해-소거법), 해-함수
print("[C:b]=")
print(C.augment(b))
print("A's RREF=")
print(A.rref())
print("[A:c]=")
print(A.augment(c))
print("[A:c]'s RREF=")
print(A.augment(c).rref())
print("Ax=c's solution=", A.solve_right(c))
#행렬의 덧셈, 스칼라배, 곱셈
print("A+B=")
print(A+B)
k=4
print("k*A=")
print(k*A)
print("A*B=")
print(A*B)
#전치행렬, 가역성(false-negative 있음), 역행렬-함수
print("B^t=")
print(B.transpose())
print("A is invertible?", A.is_invertible())
print("A^-1=")
print(A.inverse())
#기본행연산, 역행렬-RREF, 해-역행렬
E1=elementary_matrix(7, row1=1, row2=4)
E2=elementary_matrix(7, row1=2, scale=-3)
E3=elementary_matrix(7, row1=0, row2=6, scale=10)
print("E1=")
print(E1)
print("E2=")
print(E2)
print("E3=")
print(E3)
I=identity_matrix(5)
print("[A:I]'s RREF=")
print(A.augment(I).rref())
print("A^-1=")
print(A.augment(I).rref().submatrix(0,5,5,5))
print("Ax=c's solution:", A.inverse()*c)
#대각선행렬, 단위행렬, 영행렬, 대칭행렬, 반대칭행렬
D = diagonal_matrix([-5,-3,-1,1,3,5,7])
I = identity_matrix(7)
O = matrix(7, 7, 0)
print("D=")
print(D)
print("I=")
print(I)
print("O=")
print(O)
S=matrix([[1,2,3,4],[2,5,6,7],[3,6,8,9],[4,7,9,10]])
K=matrix([[0,-1,-2,-3],[1,0,-4,-5],[2,4,0,-6],[3,5,6,0]])
print("S is symmetric?", bool(S==S.transpose()))
print("K is skew-symmetric?", bool(K==-K.transpose()))
#치환, 행렬식, 수반행렬, 역행렬-수반행렬
print("positions where inversion occured:", Permutation([3,1,2,4,7,5,6]).inversions())
print("number of inversions:", Permutation([3,1,2,4,7,5,6]).number_of_inversions())
print("even permutation?:", Permutation([3,1,2,4,7,5,6]).is_even())
print("|A|=", A.det())
adjA=A.adjugate()
print("adjA=")
print(adjA)
print("A^-1=")
print((1/A.det())*A.adjugate())
#일차독립-행렬식, 해공간, rank, nullity
list=[]
for i in range(7):
list.append(random_vector(7, x=-10, y=10))
V=column_matrix(list)
print("V=")
print(V)
print("det V of list=", V.det())
P=matrix([[1,1,1,1],[2,2,2,2],[1,2,3,5],[0,0,0,0],[1,2,4,7]])
print("Null(P)=")
print(P.right_kernel())
print("rank(P)=", P.rank())
print("nullity(P)=", P.right_nullity())
#최소제곱해, Gram-Schmidt 정규직교화법, QR분해, 최소제곱해-QR분해
D=matrix([[1,0],[1,2],[1,4],[1,6],[1,7]])
b=vector([1,2,4,6,6])
print("Dx=b`s LSS=", (D.transpose()*D).inverse()*D.transpose()*b)
[G, mu]=A.gram_schmidt()
N=matrix([G.row(i)/G.row(i).norm() for i in range(0, G.nrows())])
print("o.n basis of A=")
print(N)
def gs_orth(A):
m, n = A.nrows(), A.ncols()
r = A.rank()
if m <n:
raise ValueError("The number of rows must be larger than the number of columns.")
elif r <n:
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt()
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)])
R1 = Q1*A
Q = simplify(Q1.transpose())
R = simplify(R1)
return Q, R
Q, R = gs_orth(A)
print("Q =")
print(Q)
print("R =")
print(R)
print("Q*R =")
print(Q*R)
print("Ax=c`s LLS=", R.solve_right(Q.transpose()*c))
23‘[HW 실습] 2주차 실습’
#함수 정의, 선형변환 정의, 표준행렬-단위백터, 표준행렬-명령어, image 구하기-선형변환, image 구하기-표준행렬
#kernel 구하기, 치역 구하기, 단사 확인, 전사 확인
#고유값, 고유벡터
#대각화가능, 대각화하는행렬, 대각화한 대각선행렬
#직교대각화가능, 직교대각화하는행렬, 직교대각화한 대각선행렬
#SVD
#Pseudo Inverse, 최소제곱해-Pseudo Inverse
#선행주소행렬식
#함수 정의, 선형변환 정의, 표준행렬-단위백터, 표준행렬-명령어, image 구하기-선형변환, image 구하기-표준행렬
var('a, b, c, d, e, f, g')
h(a, b, c, d, e, f, g) = [f + g,\
a - b + c - d + e - f + g,\
a + c + e + 2*d + 2*f + 2*g,\
b - c + 3*d - 3*e + 5*f -5*g,\
-2*a + -3*b,\
3*c + 2*d]
print(h)
print()
T = linear_transformation(QQ^7, QQ^6, h)
print(T)
print()
e1 = vector([1, 0, 0, 0, 0, 0, 0])
e2 = vector([0, 1, 0, 0, 0, 0, 0])
e3 = vector([0, 0, 1, 0, 0, 0, 0])
e4 = vector([0, 0, 0, 1, 0, 0, 0])
e5 = vector([0, 0, 0, 0, 1, 0, 0])
e6 = vector([0, 0, 0, 0, 0, 1, 0])
e7 = vector([0, 0, 0, 0, 0, 0, 1])
A = column_matrix([T(e1), T(e2), T(e3), T(e4), T(e5), T(e6), T(e7)])
print(A)
print()
A = T.matrix(side = 'right')
print(A)
print()
x0 = random_vector(7)
print("x0=", x0)
print("T(x0)=", T(x0))
print("A*x0=", A*x0)
print("=====")
#kernel 구하기, 치역 구하기, 단사 확인, 전사 확인
K = T.kernel()
print(K)
print()
I = T.image()
print(I)
print()
print("A is injective?", T.is_injective())
print("A is surjective?", T.is_surjective())
print("=====")
#고유값, 고유벡터
A = matrix(QQ, [[1, 1, 4], [0, -4, 0], [-5, -1, -8]])
print("A=")
print(A)
print("Eigenvalues of A (%d)="%len(A.eigenvalues()), A.eigenvalues())
print("Eigenvectors of A =")
print(A.eigenvectors_right())
print("=====")
#대각화가능, 대각화하는행렬, 대각화한 대각선행렬
print("A is diagonalizable?", A.is_diagonalizable(QQbar))
D, P = A.eigenmatrix_right()
print("Diagonalizing P")
print(P)
print("Diagonalized Diagonal D")
print(D)
print("A=PDP^-1:")
print(P*D*P^-1)
print("=====")
#직교대각화가능, 직교대각화하는행렬, 직교대각화한 대각선행렬
A = matrix([[2, 1, 1, 0], [1, 2, 1, 0], [1, 1, 2, 0], [0, 0, 0, 1]])
print("A=")
print(A)
print("A is orthogonally diagonalizable?", A.is_symmetric())
D, P = A.eigenmatrix_right()
P = P.transpose().gram_schmidt()[0]
P = matrix([P.row(i) / P.row(i).norm() for i in range(0, P.nrows())]).transpose()
print("Orthogonally diagonalizing P=")
print(P)
print()
print("Orthogonally diagonalized diagonal D=")
print(D)
print("A=PDP^t:")
print(P*D*P.transpose())
print("=====")
#SVD
A = matrix([[0, 1], [1, 1], [1, 0]])
print("A=")
print(A)
print()
transposed = False
if A.nrows() >A.ncols():
A = A.transpose()
transposed = True
B = A.transpose()*A
eig = B.eigenvalues()
sv = [sqrt(i) for i in eig if i != 0]
S = diagonal_matrix(sv)
if S.nrows() <A.nrows():
Z = zero_matrix(A.nrows()-S.nrows(), S.ncols())
S = block_matrix([[S], [Z]], subdivide=False)
if S.ncols() <A.ncols():
Z = zero_matrix(S.nrows(), A.ncols()-S.ncols())
S = block_matrix([S, Z], nrows=1, ncols=2, subdivide=False)
if transposed == True:
S = S.transpose()
print("S=")
print(S)
print()
V_ = B.eigenmatrix_right()[1]
#V_ = gram_schmidt()[0] #When not orthogonal (check only eigenvectors for the same eigenvalue
V_ = matrix([V_.column(i) / V_.column(i).norm() for i in range(0, V_.ncols())]).transpose()
U_ = matrix([A*V_.column(j)/sv[j] for j in range(0, len(sv))]).transpose()
if transposed == True:
V = simplify(U_)
U = simplify(V_)
else:
V = simplify(V_)
U = simplify(U_)
print("V=")
print(V)
print("U=")
print(U)
print("A=USV^t:")
print((U*S*V.transpose()))
print()
print("=====")
#Pseudo Inverse, 최소제곱해-Pseudo Inverse
A = matrix([[1, 2, 3], [0, 1, 0], [2, 3, 10], [3, 0, 0]])
print("A=")
print(A)
print()
print("Psuedo Inverse of A=")
print((A.transpose()*A).inverse()*A.transpose())
#출처 http://matrix.skku.ac.kr/math4ai/part1/
x1 = vector([1 for i in range(105)])
x2 = vector([3.45, 2.78, 2.52, 3.67, 3.24, 2.1, 2.82, 2.36, 2.42, 3.51, 3.48, 2.14,
2.59, 3.46, 3.51, 3.68, 3.91, 3.72, 2.15, 2.48, 3.09, 2.71, 2.46, 3.32,
3.61, 3.82, 2.64, 2.19, 3.34, 3.48, 3.56, 3.81, 3.92, 4, 2.52, 2.71,
3.15, 3.22, 2.29, 2.03, 3.14, 3.52, 2.91, 2.83, 2.65, 2.41, 2.54, 2.66,
3.21, 3.34, 3.68, 2.84, 2.74, 2.71, 2.24, 2.48, 3.14, 2.83, 3.44, 2.89,
2.67, 3.24, 3.29, 3.87, 3.94, 3.42, 3.52, 2.24, 3.29, 3.41, 3.56, 3.61,
3.28, 3.21, 3.48, 3.62, 2.92, 2.81, 3.11, 3.28, 2.7, 2.62, 3.72, 3.42,
3.51, 3.28, 3.42, 3.9, 3.12, 2.83, 2.09, 3.17, 3.28, 3.02, 3.42, 3.06,
2.76, 3.19, 2.23, 2.48, 3.76, 3.49, 3.07, 2.19, 3.46])
A = column_matrix([x1, x2])
b = vector([3.52, 2.91, 2.4, 3.47, 3.47, 2.37, 2.4, 2.24, 3.02, 3.32, 3.59, 2.54,
3.19, 3.71, 3.58, 3.4, 3.73, 3.49, 2.25, 2.37, 3.29, 3.19, 3.28, 3.37,
3.61, 3.81, 2.4, 2.21, 3.58, 3.51, 3.62, 3.6, 3.65, 3.76, 2.27, 2.35,
3.17, 3.47, 3, 2.74, 3.37, 3.54, 3.28, 3.39, 3.28, 3.19, 2.52, 3.08,
3.01, 3.42, 3.6, 2.4, 2.83, 2.38, 3.21, 2.24, 3.4, 3.07, 3.52, 3.47,
3.08, 3.38, 3.41, 3.64, 3.71, 3.01, 3.37, 2.34, 3.29, 3.4, 3.38, 3.28,
3.31, 3.42, 3.39, 3.51, 3.17, 3.2, 3.41, 3.29, 3.17, 3.12, 3.71, 3.5,
3.34, 3.48, 3.44, 3.59, 3.28, 3, 3.42, 3.41, 3.49, 3.28, 3.17, 3.24,
2.34, 3.28, 2.29, 2.08, 3.64, 3.42, 3.25, 2.76, 3.41])
c, d = n((A.transpose()*A).inverse()*A.transpose()*b, digits = 5)
print(c, d)
p1 = point([(x2[i], b[i]) for i in range(105)])
p2 = plot(c + d*x, (x, 2, 4), color = 'red')
(p1+p2).show()
print("=====")
#선행주소행렬식
A = random_matrix(ZZ, 5, 5)
print("A=")
print(A)
print()
for i in range(1, 6):
principal_minor = A.submatrix(0, 0, i, i).det()
print(i, "th principal minor= ", principal_minor)
Comment
실습하면서 SVD를 구현하는 것이 꽤나 어렵다는 것을 느꼈습니다.
[Final OK by SGLee]
채희준 Part Ⅱ 다변수 미적분학과 최적화 정리 - 3 (16강 ~ 17강)
작성자 : 채희준(2016****00)작성일 : 8월 3일 오후 7:54
Part Ⅱ 다변수 미적분학과 최적화 정리 - 3
http://matrix.skku.ac.kr/math4ai/part2/
2.5 Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)
Gradient Descent Algorithm은 어떤 모델에 대한 비용(Cost)를 최소화 시키는 알고리즘으로써, 머신러닝 및 딥러닝 모델에서 사용되는 가중치의 최적해를 구할 때 널리 쓰이는 알고리즘이다.
기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다.
의 그래디언트 방향이 점 에서 가 가장 가파르게 증가하는 방향이고, 음의 그래디언트 방향이 점 에서 가 가장 가파르게 감소하는 방향이다.
▪제약조건이 없는 최적화(unconstrained optimization) 문제
를 푸는 경사하강법(gradient descent method)에 대하여 살펴보자.
[Fermat의 임계점 정리]에 의해 위 문제의 최적해(optimal solution) 는 다음을 만족한다.
따라서 2.4절에서 배운 바와 같이 방정식 을 풀어서 나온 해들이 최적해가 되는지 판단하면 된다.
그러나 함수 가 비선형인 경우는 방정식을 풀어서 임계점을 구하는 것조차도 쉽지 않다. 이런 경우에는 수치적인 방법으로 임계점을 구한다. 최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해 으로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해 , , ... 를 생성한다. 목표는 번째 근사해 또는 극한값 에서 을 만족하도록 하는 것이다.
▪ 번째 반복단계는 보통 다음과 같은 (직선의 벡터방정식) 형식으로 구성된다.
여기서 는 탐색방향(search direction), 는 step-size (머신러닝에서는 이를 learning rate)라 한다. 즉 상에서 방향으로 만큼 이동하여 을 생성한다.
▪ 보통 는 함수값이 감소하는 방향으로 정한다. 즉 다음을 만족한다.
이러한 는 특히 하강방향(descent direction)이라고도 한다. 방향을 따라 움직이면 함수 가 감소한다는 보장이 있으므로 step-size 는 이 만족되도록 정한다.
▪ step-size 를 택하는 방법은 대개 다음 두 가지로 나눌 수 있다.
① 반직선 () 상에서 함수 의 값이 가장 작게 되는 를 찾는다.
이 방법을 exact line search라 하고, 이때의 를 optimal step-size라 한다. 대개는 cost가 많이 들어서 잘 사용되지 않는다.
② 만일 을 정확하게 풀지는 않지만 함숫값이 충분히 감소한다는 것을 보장하는 를 선택하는 방법이 있다면, exact line search를 피하여 cost를 상당히 줄일 수 있다. 이 방법을 inexact line search 라 한다. 즉, 다음 조건을 만족하는 를 찾는다.
여기서 이다. 이를 그림으로 표현하면 다음과 같다.
따라서 위의 두 부등식을 만족하는 는 폐구간 에서 택하면 된다.
[참고] 가 만족해야 하는 조건은 여러 가지가 있으나, 위의 두 부등식이 주로 쓰인다. 이를 Wolfe condition이라 하고, 그 중 첫 번째 부등식을 특히 Armijo condition이라 한다.
● 경사하강법(gradient descent method)은 탐색방향을 로 택하는 경우이다. 앞서 살펴본 바와 같이 음의 그래디언트 방향이 점 에서 가 가장 가파르게 하강하는 방향이므로, 경사하강법 방법의 아이디어가 쉽게 이해된다. 경사하강법은 모든 차원과 모든 공간에서의 적용이 가능하다. 심지어 무한차원 벡터함수에도 쓰일 수 있다. (이 경우 해당 차원이 만들어내는 공간을 함수공간(function space)이라고 한다. 벡터공간을 일반화 하는 함수공간은 모두 수렴의 개념을 갖춘 선형공간(linear space)으로서, 수렴의 개념을 Norm에 입각한 거리에 의해 정한 Banach공간 또는 Hilbert공간인 경우가 많으나, 보다 일반적인 선형위상공간도 포함한다.) 다음은 경사하강법의 알고리즘이다.
[경사하강법] ( 의 의미는 같이 이 1 보다 아주 작다는 의미이다.)
[단계 1] 초기 근사해 와 허용오차(tolerance) 을 준다. 이라 한다.
[단계 2] 를 계산한다. 만일 이면, 알고리즘을 멈춘다.
[단계 3] line search를 수행하여 적절한 step-size 를 구한다.
[단계 4] , 라 두고 [단계 2]로 이동한다.
▪ 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는 으로 주었다.
[출처] J. Barzilai 와 J. M. Borwein, Two-Point Step Size Gradient Methods, IMA J. Numer. Anal. (1988) 8 (1): 141-148.
, ,
여기서 이고, 는 Hessian 가 양의 정부호(positive definite)인 이차함수이므로 exact line search를 수행하면, 는 다음과 같이 closed-form으로 나온다.
위의 그래프에서 이 점차 0에 수렴함을 쉽게 확인할 수 있다.
[경사하강법의 iterative 단계(빨간색)]
[경사하강법은 탐색방향을 현재의 위치 의 근방에서 가장 가파르게 하강하는 방향 로 사용한다. 그러나 이 경우 그림의 빨간색 경로와 같이 해 근처에서 zigzag 현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다. 이를 보완하여 Conjugate Gradient Method(CGM, 공액경사법, 켤레기울기법)은 와 이전의 방향 를 조합하여 새 탐색방향 으로 사용한다. (녹색)]
● 뉴턴 방법(Newton’s method)은 탐색방향을 로 택하는 경우를 말한다. 왜냐하면 근방에서 는 다음의 이차함수를 이용하여 근사화 할 수 있기 때문이다.
따라서 에서 로 진행하기 위하여, 최적화 문제
의 최적조건으로부터 를 얻을 수 있다.
다음은 뉴턴 방법(Newton’s method)의 알고리즘(Algorithm)이다.
[뉴턴 방법(Newton’s method)]
[단계 1] 초기 근사해 과 허용오차(tolerance) 을 준다. 이라 한다.
[단계 2] 만일 이면, 알고리즘을 멈춘다.
[단계 3] 를 계산한다.
[단계 4] 라 두고 [단계 2]로 이동한다.
이 양의 정부호(positive definite) 행렬이면, 역행렬 도 양의 정부호 행렬이므로, 뉴턴 방법의 탐색방향 역시 하강방향(descent direction)이 된다. 즉
이다. 따라서 방향으로 진행하면 함수값이 감소함을 알 수 있다.
▪ 그러나 뉴턴 방법은 헤시안을 계산해야 하므로, 변수 이 큰 함수의 경우 헤시안을 계산하는 데 많은 연산이 필요하여 효과적이지 않을 수 있다. 그리고 초기 근사해 이 문제의 해 의 근방에 있어야만 뉴턴 방법이 수렴한다는 보장이 있으나, 이는 미리 알 수 없으므로 실제 뉴턴 방법을 적용할 때는 step-size 도 같이 고려한다. 즉 적절한 line search를 동반한다. 그 후 을 계산한다.
● 이외에도 를 택하는 방법에 따라 quasi-Newton method, conjugate gradient method 등이 있다.
2.6 중적분 (double integral, multiple integral)
정의. |
이중적분 |
직사각형 영역 에서 의 이중적분은 다음과 같이 정의된다.
[(중적분) 구분구적법을 2축에 적용하는 방법, 긴 직육면체나무막대들의 부피를 구해 더하는 방식]
▶ 같은 방법으로 3차원 영역 위에서 의 3중적분(triple integral)도 정의할 수 있다.
(3차원 평면 위의 작은 조각 부피에 높이를 곱하여 부피를 구하여 그것 모두를 더하는 방식)
정리. |
Fubini의 정리 (연속 2변수함수의 2중적분 경우, 적분순서를 바꾸어도 이중적분값은 같다) |
가 직사각형 영역 에서 연속이면 다음이 성립한다.
정리. |
연속함수의 2중적분의 경우, 적분영역이 직사각형이 아닌 경우!! |
(1) 가 영역 에서 연속이면 다음이 성립한다.
(2) 가 영역 에서 연속이면 다음이 성립한다.
정리. |
이중적분의 변수변환 |
전단사함수 , 가 연속인 편도함수를 갖고, 이라 하자. 그러면 연속함수 에 대하여 다음이 성립한다.
※ 을 의 야코비안(Jacobian)이라 하고 으로 나타낸다.
극좌표에서의 이중적분은 변수변환의 특수한 예이다. 극좌표
and .
에서의 야코비안은
으로 주어지고, 이중적분은 다음과 같이 쓸 수 있다.
여기서 , , , 는 적분영역 과 변환 에 따라 정해진다.
comment:
경사하강법을 단순히 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것으로 알고 있었습니다. 이번 강의를 통해서 learning late를 exact line search, inexact line search로 찾는 법을 새롭게 배우는 등, 경사하강법에 대해 좀 더 정확하게 알게 되어 좋습니다.
그리고 중적분에 대해서 복습할 수 있는 시간이었습니다.
이상구(LEE SANGGU)8월 3일 오후 9:08
채희준 군, Good job^^
2. 질문
[Final OK by SGLee]
[Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,
작성자 : 채희준(2016****00)작성일 : 7월 19일 오후 4:58
[Discuss] How to find least square solution? 해가 존재하지 않는 연립방정식의 optimal solution [최소제곱해, least square solution] 는 어떻게 구하나?]
때로는 최소제곱법을 이용하여 구한 근사 직선이 오차가 너무 커지는 경우도 있다. 예를 들면, 그림 14-2-2 (a), (b) 의 경우는 최적곡선이 직선이 아니다. 실제로(a), (b) 의 경우에 데이터의 점에 가장 근사한 곡선은 각각 2차식인
이고 3차식인
이다. 일반적으로 데이터의 점 에 가장 근사한 차의 다항식
(7)
을 구하고자 할 때는 다음과 같이 한다.
(a)
(b)
그림 14-2-2 데이터 점들을 이었을 때 직선이 나오지 않는 경우
우선, 식 (7)에 주어진 데이터의 점을 대입하여 미지수가 인 연립방정식
(8)
를 얻는다. 만일 의 값 중 서로 다른 것이 개 있다면, 이므로 정규 시스템 는 유일한 해 를 갖는다. 이 때 이 계수를 갖는 차 다항식이 바로 가장 근사한 곡선의 방정식이다.
위의 내용 중에서 마지막 부분,
만일 의 값 중 서로 다른 것이 개 있다면, 이므로
가 잘 이해가 되지 않습니다... 어떻게 가 되는 건가요?
***
선형대수학에서 방데르몽드 행렬(-行列, 영어: Vandermonde matrix)은 각 행이 초항이 1인 등비수열로 구성된 행렬이다. 프랑스의 수학자 알렉상드르 테오필 방데르몽드의 이름에서 따왔다. 다항식 보간법, 최소 자승 근사법 등에서 나타난다.
방데르몽드 행렬은 다음과 같은 형태를 가진다.
간단히 표현하면 모든 와 에 대하여 다음과 같이 쓸 수 있다.
일부에서는 이 행렬의 전치행렬을 방데르몽드 행렬이라고 부르기도 한다.
방데르몽드 행렬의 행렬식은 다음과 같이 간단히 정리할 수 있다.
.
이 행렬식을 방데르몽드 행렬식 또는 방데르몽드 다항식(영어: Vandermonde determinant, Vandermonde polynomial)이라고 한다.
https://ko.wikipedia.org/wiki/%EB%B0%A9%EB%8D%B0%EB%A5%B4%EB%AA%BD%EB%93%9C_%ED%96%89%EB%A0%AC
증명 https://steemit.com/kr-math/@beoped/vandermonde-determinant
답:
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로
데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.
따라서 A^T A 의 행렬식도 영이 아닙니다.
* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다.
[3-4] 가 다음과 같을 때 연립방정식 의 최소제곱해를 찾아라.
3. ,
Ans 이므로
4. ,
Ans
A=matrix([[1, 3, 5, 2, -2], [-2, 1, -2, 1, 0], [-1, -3, 0, 1, 0], [-3, 0, 1, 0, 0], [0, 1, 2, -2, 1]])
print A
print
b=matrix(5, 1, [1, 0, 1, 0, 0])
print b
print
AT=A.transpose()
AtA=AT*A
print AtA
print
Atb=AT*b
print Atb
print
AtA.solve_right(Atb)
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
# normal equation로 계산한 것과 비교
AtA = A.transpose()*A
Atb = A.transpose()*b
AtA.solve_right(Atb)
따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로 데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다. 따라서 A^T A 의 행렬식도 영이 아닙니다. * 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다. '|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.) 따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다. (2)의 A^tAx=0부터 시작합니다. x^tA^tAx=0 (x^t를 양변에 곱했습니다.) (Ax)^tAx=0 (Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.) ||Ax||^2=0 Ax=0 입니다. (1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다. 따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
[Final OK by SGLee]
Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구
작성자 : 채희준(2016****00)작성일 : 8월 3일 오후 10:18
[Final OK by SGLee]
질문 by 채희준
답변 by 김진웅, 이상구
Finalized by 채희준
Q:
수반행렬을 이용한 가역행렬의 역행렬 구하기를 해보는 중에 error 가 발생했습니다.
C = random_matrix(QQ, 10, 10)
print'C='
printC
ifC.is_invertible()==True:
dC = C.det() # 행렬식 구하기
adjC = C.adjugate() # 수반행렬 구하기
print("inverse of C = (1/dC)*adjC =")
print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
else:
print'C is not invertible'
C=
[ -1 0 -1 0 -1 0 2 1 1/2 -2]
[ 0 1 1 1 0 -1 2 0 -2 -1]
[ 2 2 1 1/2 1 0 0 -1 0 1]
[-1/2 0 0 0 1 0 -1 0 0 0]
[ 0 2 -1 -1 2 0 -2 1/2 -2 1]
[ 0 -1/2 0 0 0 2 0 0 2 0]
[ 0 2 0 2 -1/2 2 -1 -1 0 -2]
[ -2 0 0 1 -1 0 -2 1 0 2]
[ 0 0 -1/2 1 -2 1 -1 1 1 1]
[ 0 0 0 1 1 -1 1/2 -1 0 0]
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-1-a60cf26a2116> in <module>()
5if C.is_invertible()==True:
6 dC = C.det() # 행렬식 구하기
----> 7 adjC = C.adjugate() # 수반행렬 구하기
8 print("inverse of C = (1/dC)*adjC =")
9 print((Integer(1)/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
AttributeError: 'sage.matrix.matrix_rational_dense.Matrix_rational_dense' object has no attribute 'adjugate'
교재 part1 예제에 나온 코드를 활용한 것인데 왜 이런 error가 뜨는 지 모르겠습니다.
sage를 이용한 실습을 늦게 시작해 1주차 내용을 4주차에 와서 질문하게 됐습니다. 죄송합니다... 혹시 해결방법을 아시는 분은 도와주시면 감사하겠습니다.
A:
김진웅(2015****73)8월 4일 오전 1:16
여기에서 해 보세요 http://matrix.skku.ac.kr/KOFAC/ 실행 되는 것 확인했습니다. print는 괄호 쳐 주세요.
이상구(LEE SANGGU)8월 4일 오전 9:24
김진웅 군이 맞습니다. print는 괄호 쳐 주세요. <--- 명령어가 일부 update 되었습니다. 아래와 같이 하시면 됩니다. C = random_matrix(RDF, 10, 10) print ('C=') print (C) print if C.is_invertible()==True: dC = C.det() # 행렬식 구하기 adjC = C.adjugate() # 수반행렬 구하기 print("inverse of C = (1/dC)*adjC =") print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기 else: print ('C is not invertible')
comment:
여기서 실습을 했었는데, 여기는 업데이트 전 명령어를 사용하고 있었군요.
http://matrix.skku.ac.kr/KOFAC/ 에서 같은 코드로 실행해보니 제대로 나오는 것을 확인했습니다.
답변 해주셔서 감사합니다!!
Share
C=
[ 0 2 0 1 2 0 0 1 -1 2]
[ 1/2 -1 -2 1/2 1 1 -1 -1 0 -1]
[ 0 -1/2 0 1 -1 1 1 -1/2 0 0]
[ 2 1 1 -1 -2 0 -1 1 1 1]
[ -1 1 0 1/2 0 1/2 -1 1 0 0]
[ 0 -1 -1/2 -1 0 2 -1 -2 1 -2]
[ 0 1 1 -1 0 -1 -2 0 -1/2 1]
[ 1 1 1 2 -1 0 2 0 1 -1]
[ -2 0 0 1 1 0 2 -1 -2 0]
[ 2 0 1 0 -2 0 0 1 -2 -2]
inverse of C = (1/dC)*adjC =
[ 21319/103933 7790/103933 4112/103933 -548/103933 -35008/103933 3198/103933 794/103933 5168/103933 -18714/103933 11765/103933]
[ -15012/103933 45528/103933 -83930/103933 95100/103933 33524/103933 3374/103933 -14892/103933 27162/103933 88674/103933 -14627/103933]
[ 39992/103933 -81076/103933 74932/103933 -100978/103933 -29712/103933 30170/103933 39340/103933 -2074/103933 -86850/103933 20578/103933]
[ 7343/103933 6476/103933 62336/103933 -54410/103933 4732/103933 -17034/103933 37110/103933 18492/103933 -42668/103933 3243/103933]
[ 41337/103933 -34144/103933 5672/103933 -62226/103933 -27260/103933 20992/103933 -118/103933 -3386/103933 -50887/103933 7938/103933]
[ 34693/103933 -28284/103933 40252/103933 -9004/103933 5910/103933 34338/103933 -20334/103933 -19778/103933 -19202/103933 9717/103933]
[ -1097/103933 -5978/103933 -33148/103933 33535/103933 -12200/103933 1922/103933 -41382/103933 1611/103933 34187/103933 -4759/103933]
[ 14216/103933 -32812/103933 3600/103933 -30406/103933 17880/103933 -6906/103933 -34084/103933 -19740/103933 -42266/103933 15153/103933]
[ -5184/103933 -11196/103933 -5056/103933 -9032/103933 2604/103933 4156/103933 -6638/103933 13866/103933 -24710/103933 -18510/103933]
[ 12270/103933 -3814/103933 42762/103933 5018/103933 -16268/103933 -10318/103933 10178/103933 -16219/103933 -7675/103933 -11764/103933]
[Final OK by SGLee]
finalized by 정원철. Q by 채희준 A by 김범준, 이상구교수님, 정원철, 김호연 [sage 명령어 질문]
작성자 : 정원철(2017****79)작성일 : 8월 4일 오후 6:44
QR분해를 통해 최소제곱해를 구하는 것을 sage로 하고 있었습니다.
저는 아래와 같이 inverse 명령어를 생각했는데,
print("최소제곱해, R^-1*Q^T*b=")
print(R.inverse()*Q.transpose()*b)
교재에서는 inverse 대신에 solve_right() 명령어를 쓰고 있었습니다.
print(R.solve_right(Q.transpose()*b))
solve_right() 명령어는 어떤 계산을 해주는 건가요??
명령어에 대해서 궁금할 때, sage에서 명령어 설명을 보려면 어떻게 해야 하나요?
김범준(2017****99)8월 4일 오후 3:12
solve_right 명령어가 '해'를 곧바로 구하여 주는 명령어로 알고있습니다. 단 solve_right()명령어가 곧바로 해를 구하여주기때문에 생략되는 과정들을 표현하기 위해 여러 명령어를 함께 써주는 것입니다. 예시로 교재에 있는 코드중에 solve_right() 명령어를 제외한(단, 구할 해가 있는 식은 포함)다른 코드를 지워도 연산에 문제가 없는 것을 확인할 수 있을것입니다.
이상구(LEE SANGGU)8월 4일 오후 5:11
1. A 의 inverse 즉 역행렬이 존재하지 않는 Ax=b 는 inverse 명령어로는 풀 수가 없답니다. 2. 더구나 A 가 정사각행렬이 아니면 inverse 를 생각조차 할 수 없답니다^^ 3. 또 f(x) = 0 에서 f(x) 가 고차 다항식이면 답을 어떻게 구하나요? 인수분해도 안되고 근의 공식도 없는데 ... 그리고 f(x) 가 복잡한 합성함수 이면 ... 도함수를 구하기도 어렵지만 f'(x) = 0 의 근을 어떻게 구할 수 있나요? 이 근 (임계점)을 못 구하면 ... 극대, 극소 어떤 것도 얘기 할 수가 없으므로 ... 언제 가장 손해를 볼지 또 이익이 날 지를 전혀 예측을 할 수 없는데 ... 결론: 우리는 이 강좌 Math4AI 에서 이전에 배운 수학 지식에 보태서 ... 이전에 할 수 없었던 것들을 할 수 있는 일반적인 수학적 방법을 배우는 중 이랍니다. 그래야 단순한 기계에 불과한 컴퓨터가 ... 우리가 (주는 알고리즘에 따라) 시키는 대로 ... 알아서 (우리가 제공한 조건 하에서는 항상 존재하는) 최적해를 찾아서 ... 우리의 의사 결정을 돕는 유용한 AI 로 기능을 하게 할 수 있는 것 이랍니다. 이해한 학생이 있으면 ... 누구라도 나서서 (제목에 모두의 이름 넣어) Finalize 시켜 주세요^^ 그리고 (위의 두 명 포함 세 명 모두) 중간고사 PBL 에 포함시켜서 제출하시면 됩니다^^
정원철(2017****79)8월 4일 오후 6:19
AX = B를 풀 때, A.solve_right(B)는 A를 기준으로 오른쪽으로 연산하여 B를 구한다는 말입니다. solve_right(B, check=True) Try to find a solution X to the equation AX=B. If self is a matrix A, then this function returns a vector or matrix X such that AX=B. If B is a vector then X is a vector and if B is a matrix, then X is a matrix. Over inexact rings, the output of this function may not be an exact solution. For example, over the real or complex double field, this method computes a least-squares solution if the system is not square. Note In Sage one can also write A \ B for A.solve_right(B), that is, Sage implements “the MATLAB/Octave backslash operator”. INPUT: B – a matrix or vector check – boolean (default: True); verify the answer if the system is non-square or rank-deficient, and if its entries lie in an exact ring. Meaningless over inexact rings, or when the system is square and of full rank. OUTPUT: If the system is square and has full rank, the unique solution is returned, and no check is done on the answer. Over inexact rings, you should expect this answer to be inexact. Moreover, due to the numerical issues involved, an error may be thrown in this case – specifically if the system is singular but if SageMath fails to notice that. If the system is not square or does not have full rank, then a solution is attempted via other means. For example, over RDF or CDF a least-squares solution is returned, as with MATLAB’s “backslash” operator. For inexact rings, the check parameter is ignored because an approximate solution will be returned in any case. Over exact rings, on the other hand, setting the check parameter results in an additional test to determine whether or not the answer actually solves the system exactly. If B is a vector, the result is returned as a vector, as well, and as a matrix, otherwise. 반대로 XA = B 상황에서는 solve_left() 함수를 쓸 수 있겠죠. sagemath의 메서드는 아래 사이트에서 Quick_search 기능을 통해 검색하실 수 있습니다. https://doc.sagemath.org/html/en/reference/matrices/sage/matrix/matrix2.html?highlight=solve_right
김호연(2020****32)8월 4일 오후 6:20
solve_right()는 해를 구하는 과정을 생략하고, 방정식의 해를 구하는 명령어로 알고 있습니다.
3. 답변
[Final OK by SGLee]
[Finalized by 채희준, 권서영 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구
작성자 : 채희준(2016****00)작성일 : 7월 18일 오후 7:58
질문 by 이동현
답변 by 김진웅, 나종진, 임동선, 이재화, 이상구
Finalized by 채희준
Q. : llXll 으로 표현되는 노름의 값이 X*X로 표현되는 내적의 값과 동일하게 x1 x2 ..... xn 의 값을 제곱한 것으로 표현되는것 같은데 왜 내적이 노름의 제곱 (llXll)2 으로 표현되는지 이해가 안됩니다. 그리고 노름의 개념이 함수에서 길이를 표현하는 개념인것 같은데 내적은 어떤 개념으로 표현될 수 있는지 궁금합니다.
A .
김진웅(2015****73)7월 17일 오전 11:44
Norm의 정의 ||x|| = sqrt(x1^2 + ... +xn^2) 내적의 정의 x.y = x1y1 + .. +xnyn x.x = x1x1 + ... + xnxn = (sqrt(x1x1 + ... + xnxn))^2 = (||x||)^2
나종진(2017****17)7월 17일 오후 12:15
노름은 길이를 표현하는 개념이지만 내적은 어떤 개념인지 교재에 나오지 않아서 저도 내적을 어떤 개념으로 이해해야될지 고민이었습니다. 저는 내적을 각도 개념으로 이해했습니다. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
여기에 코시-슈바르츠 부등식 아래 정의를 보게되면 x·y=||x||*||y||*cosΘ 라고 나와있어 저는 각도의 개념으로 이해했습니다. 도움이 되셨으면 좋겠습니다.
임동선(2017****79)7월 17일 오후 12:55
엄밀하게 말하면 대칭성, 선형성, 정부호를 만족하는 벡터공간을 내적공간이라고 합니다.
그 중에 가장 대표적인 것이 R^n 에서 위와 같이 정의된 것 입니다. 또한 주어진 내적 공간에 대해서 노름을 정의를 할 수 있습니다. 위와 같이 노름을 정의하면 잘 정의된 노름이고, 위의 경우는 두 값이 같습니다.
이재화7월 17일 오후 5:17
1. 직관적으로 노름은 벡터의 길이, 내적은 두 벡터 사이에 이루는 각을 정의하는 개념이라고 생각하면 됩니다.
2. 노름과 내적은 주어진 데이터가 얼마나 유사한지를 비교하는데 사용되는데 각각 사용하는 척도가 다릅니다.
3. 두 데이터 사이의 거리로 유사성을 비교할 때 노름이 사용되고, 두 데이터 사이의 패턴(방향)만 관심있을 때에는 두 벡터 사이의 각으로 유사성(코사인 유사도)을 비교합니다. 이때 내적이 사용됩니다. [참고] http://matrix.skku.ac.kr/math4ai-intro/W3/
4. 내적을 활용한 코사인 유사도는 자연어 처리에도 사용된다고 합니다. [참고] https://wikidocs.net/24603
이상구(LEE SANGGU)7월 17일 오후 11:27
실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다.
추가 답변 및 정리: http://matrix.skku.ac.kr/math4ai/ 에서 인용
정의. |
의 노름(norm, length, magnitude) |
의 벡터 에 대하여
을 의 노름(norm, length, magnitude)이라 한다.
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터 , 에 대하여 실수
을 와 의 내적(Euclidean inner product, dot product)이라 하고 로 나타낸다. 즉
= =
이 두 정의를 비교하면,
▪
노름의 제곱은 내적과 같음을 확인할 수 있습니다.
그리고 노름은 벡터의 길이 또는 크기를 나타낸다면,
내적은 두 벡터 사이에 이루는 각 또는 두 벡터 사이의 관계를 나타낸다고 생각하면 될 것 같습니다.
※참고자료
1. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
|
|
||
|
|
|
|
|
의 벡터 , 에 대하여
, 인 를 와 가 이루는 각(angle, 사잇각)이라 한다. |
|
2. http://matrix.skku.ac.kr/math4ai-intro/W3/
주어진 데이터를 분류하기 위해서는 각 데이터마다 우리가 다룰 수 있는 (계산할 수 있는) 형태로 표현할 수 있고, 각 범주와 얼마나 가까운지 (혹은 유사한지) 계산하여 최종 판단해야 한다.
이러한 척도를 데이터의 유사도(similarity)라고 한다.
그렇다면 서로 다른 두 데이터가 얼마나 유사한지 어떻게 평가할 수 있을까?
가장 쉽게 생각해볼 수 있는 것은 두 데이터 사이의 거리를 계산하는 것이다.
는 원점에서 점 에 이르는 거리와 같다. 따라서 두 벡터 , 에 대하여 는 두 점 와 사이의 거리(distance)가 되며, 다음이 성립한다.
위 정의는 3차원은 물론 고차원 데이터에 대해서도 동일한 형태로 확장된다.
그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, (거리)척도는 적합하지 않다.
예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터 와 는 패턴(방향)은 유사하지만
거리는 매우 큰 값을 갖게 되어, (거리)척도로는 “두 데이터가 관계가 없다”고 판단하게 되기 때문이다.
단지 데이터의 패턴(방향)에만 관심이 있는 경우에는 유사도를 어떻게 측정해야 할까? 이번에 우리는 데이터의 패턴(방향)에만 관심이 있으므로,
두 데이터(벡터)가 이루는 사잇각 로 유사도를 측정할 수 있을 것이다. 예를 들어, 가 작으면 데이터의 유사도가 높고, 가 크면 데이터의 유사도가 낮다고 판단할 수 있다.
그러나 사잇각은 벡터의 내적(inner product)으로부터 정의되므로, 를 직접 계산하기 보다는 벡터의 내적을 이용하여
의 코사인 값으로 유사도를 측정한다. 이를 코사인 유사도(cosine similarity)라고 한다.
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
Final Comment: 제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 finalized된 글을 읽어 볼 것이 아니라 (교재를 읽은 후 ... 다른 학생들이 토론한 내용을) 미리 읽으면서 (Re-Finalize 하거나, 추가로 질문하거나, Final 코멘트를 달면서) 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다. 좋은 질문과 답변 공유해 주셔서 감사합니다.
[HW질문] Re-finalized by 채희준, 질문 by 권서영, 답변 by 김진웅, finalized by 한수현
작성자 : 채희준(2016****00)작성일 : 7월 19일 오전 4:28
질문 by 권서영
답변 by 김진웅
Finalized by 한수현
Re-finalized by 채희준
Q:
다름이 아니라 정사영의 정의 (아래 사진파일 첨부) 에서 x*(y-p) = 0 이라 서술이 되어 있는데 그렇다면 w가 0이 되는 것인가요? 두 벡터가 직교하면 내적이 0이 된다 서술이 되어 있던데, 그 개념이 연결되어 있는 것인가요? 만약 그렇다면, 혹시 설명해 주실 수 있으실까요? 감사합니다 ㅜㅜㅜ
A:
김진웅(2015****73)7월 19일 오전 1:20
원벡터 y에서 정사영 벡터 p를 뺀 것이 벡터성분 w입니다. (w=y-p) 원벡터가 정사영하는 공간에 속해있지 않는 한, 벡터성분 w는 0이 되지 않습니다. x와 y-p 그러니까 x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다.
Finalized: 한수현(2019****61)작성일 : 7월 19일 오전 3:22
먼저 이미지에서 점 S를 점 P에서 벡터 OQ에 내린 수선의 발로 정의 했기 때문에 w(=SP)는 x에 직교입니다. (x┴w)
그러므로 x·w=0입니다.
(이미지 출저: 네이버 지식백과)
위 이미지는 벡터의 뺄셈을 그림으로 표현한 것인데,
이를 이용하여 w를 y와 p로 표현하면 w=y-p입니다.
그래서 x·w=x·(y-p)=0입니다.
추가 답변:
앞에 두 분께서 잘 설명해주시고 finalized 하셔서 댓글로 남기고 싶었는데, 댓글로는 한계가 있어서 부득이하게 re-finalized를 했습니다.
제 생각에는 ·를 스칼라의 곱으로도 자주 사용하기 때문에 질문자 분께서 곱셈과 내적을 헷갈리시는 듯 합니다. · 는 벡터에서는 내적(inner product)으로만 사용합니다. * 또는 x 와는 구분이 필요합니다.
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터 , 에 대하여 실수
을 와 의 내적(Euclidean inner product, dot product)이라 하고 로 나타낸다. 즉
= =
▪
또한, 내적은 다음과 같이 나타낼 수 있습니다.
|
|
||
|
|
|
|
|
의 벡터 , 에 대하여 , 인 를 와 가 이루는 각(angle, 사잇각)이라 한다. |
|
따라서, 두 벡터가 직교한다는 것은 theta가 90º임을 의미하고 cos(theta)는 0이 되므로
직교하는 두 벡터의 내적은 0이 되는 것입니다.
이상구(LEE SANGGU)7월 19일 오전 5:40
채희준 군, 아침 일찍 좋은 답을 주는 모습을 보니 ... A를 받을 자격을 이미 갖추었습니다. 그렇게 스스로 공부하여 깨우치고, 그 것을 다른 학생들에게 도움을 주면서 공유 한다면 ... 그런 자세로 꾸준히 이번 7주 학기를 진행 한다면 미리 얘기 했듯이 A는 담당교수가 보장 한다고 생각하셔도 됩니다.^^ 축하합니다. 다른 학생들도 마찬가지 입니다^ All have the same chance. Keep your work. Congratulation.
[Final OK by TA]
Finalized by 채희준, [3주차 주요질의 (1)] Q by 이승재, A by 이상구
작성자 : 임동선(2017****79)작성일 : 8월 1일 오후 2:57
질문 by 이승재
답변 by 이상구
Finalized by 채희준
Q: [3주차] 주요 질의 사항 (1)
01 벡터 함수에 관하여; 벡터가 방향을 가지는 물리량이라고 이해하고 있습니다. 이를 함수에 적용시켜, 벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합이라고 봐도 무방한지 질의 드립니다. 이와 관련하여, 벡터 함수에 대한 기본적인 이해를 위한 설명 해주셨으면 합니다.
A:
이상구(LEE SANGGU)7월 31일 오전 4:47
일반적인 벡터에 대한 정의는,
벡터공간 (예, R^n 또는 벡터공간 M_n 또는 V ) 안의 원소 를 벡터라고 합니다.
크기 방향 등의 얘기는 물리학 에서 하고 ... 1. 수학에서 벡터는 위의 일반적인 정의만 생각하시면 됩니다. 정의(Definitions) http://matrix.skku.ac.kr/sglee/linear/ocu/linear-1.htm 정의 1. (벡터공간) V는 집합이고, V에는 벡터합(vector addition)(또는 벡터 덧셈)이라고 부르는 연산 즉, V의 두 원소 u, v에 V의 원소 u+v를 대응시키는 연산과 스칼라에 의한 곱(multiplication by scalars)이라고 부르는 연산 즉, V의 원소 u와 수(이를 보통 스칼라(scalar)라고 부름) a에 V의 원소 au를 대응시키는 연산이 정의되어 있다고 하자. 이 두 가지 연산이 다음 8가지 조건을 만족할 때 V를 벡터공간(vector space)이라 하고, V의 원소를 벡터라고 한다. (i) V의 모든 원소 u, v에 대하여 u + v = v + u. (ii) V의 모든 원소 u, v, w에 대하여 (u + v) + w = u + (v + w). (iii) V의 모든 원소 u에 대하여 u + O = u = O + u 를 만족하는 O가 V안에 존재한다. (iv) V의 각 원소 u에 대하여 V의 원소 u'이 존재하여 u + u' = O = u' + u 가 성립한다. (v) 모든 스칼라 a, b와 V의 모든 원소 u에 대하여 (a + b)u = au + bu. (vi) 모든 스칼라 a와 V의 모든 원소 u, v에 대하여 a(u + v) = au + av. (vii) 모든 스칼라 a, b와 V의 모든 원소 u에 대하여 (ab)u = a(bu). (viii) V의 모든 원소 u에 대하여 1u = u. 참고 정의 1의 조건 (iii)에서 O를 V의 영벡터(zero vector)라고 한다. 또 조건 (iv)에서 u'을 u의 덧셈에 관한 역원이라고 하며, 보통 기호 -u로 나타낸다. 조건 (i), 조건 (ii)를 각각 벡터 덧셈의 교환법칙(commutative law), 벡터 덧셈의 결합법칙(associative law)이라고 한다. 특히 (ii)에 의하여 벡터공간안의 세 벡터 u, v, w의 합을 괄호 없이 u + v + w로 나타내기도 한다.
이상구(LEE SANGGU)7월 31일 오전 4:48
2. 행렬도 벡터의 예이고, 연속함수도 벡터의 예이고, 미분가능한 함수도 벡터의 예입니다.
이상구(LEE SANGGU)7월 31일 오전 4:49
얘기한 "벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합이라고 봐도 무방한지 질의 드립니다." 는 일반적으로 맞지 않는 말 입니다. 수학에서는 정의 에 있는 그대로 이해 하시는 것이 맞습니다.
이상구(LEE SANGGU)7월 31일 오전 4:55
정의 1. (벡터공간 과 벡터) V는 집합이고, V에는 벡터합(vector addition)(또는 벡터 덧셈)이라고 부르는 연산 즉, V의 두 원소 u, v에 V의 원소 u+v를 대응시키는 연산과 스칼라에 의한 곱(multiplication by scalars)이라고 부르는 연산 즉, V의 원소 u와 수(이를 보통 스칼라(scalar)라고 부름) a에 V의 원소 au를 대응시키는 연산이 정의되어 있다고 하자. 이 두 가지 연산이 (위의) 8가지 조건을 만족할 때 V를 벡터공간(vector space)이라 하고, V의 원소를 벡터라고 한다. 우리는 지금 우리 선형대수학 부분에서는 R^(n) 상의 선형변환에만 관심을 집중합니다. 이유는 그 선형변환 즉 함수는 바로 행렬 로 표현되어, 대각화나 SVD 거쳐 컴퓨터 와 AI 가 쉽게 다룰수 있기 때문 입니다. 벡터공간 상의 다른 함수 들에 대한 연구는 함수 해석학에서 별도로 합니다.
정리:
'벡터 함수는 R^(n)상의 다양한 방향성을 가진 벡터들의 집합'은 일반적으로 맞지 않는 말입니다.
일반적으로 벡터공간 (예, R^n 또는 벡터공간 M_n 또는 V ) 안의 원소 를 벡터라고 합니다.
http://matrix.skku.ac.kr/LA-K/Ch-9
[벡터공간] |
||
|
임의의 집합 에 두 연산, 덧셈(vector addition, A) ‘’와 스칼라 배(scalar multiplication, SM) ‘’이 정의되어 있고, 임의의 와 에 대하여 2개의 기본법칙 A. SM. 과 다음의 8개의 연산법칙이 성립할 때, 집합 가 주어진 2개의 연산과 함께 (실수집합 위에서) 벡터공간(vector space)을 이룬다고 하고, 로 표기한다(혼동이 없는 경우는 간단히 벡터공간 라고 쓴다). 이 벡터공간 의 원소를 벡터(vector)라 한다.
A1. A2. A3.모든 에 대하여 다음을 만족하는 원소 이 에 단 하나 존재한다.
A4. 의 각 원소 에 대하여 다음을 만족하는 가 에 유일하게 존재한다.
SM1. SM2. SM3. SM4. 위의 조건 A3를 만족시키는 을 영벡터, 조건 A4를 만족시키는 를 의 음벡터라 한다. |
|
|
따라서, 이를 만족하는 행렬, 연속함수, 미분가능한 함수 모두 벡터의 예입니다. 이와 같은 벡터들에서 방향을 정의한다는 것은 어렵습니다.
우리는 지금 우리 선형대수학 부분에서는 R^(n) 상의 선형변환에만 관심을 집중합니다. 이유는 그 선형변환, 즉 함수는 바로 행렬 로 표현되어, 대각화나 SVD 거쳐 컴퓨터 와 AI 가 쉽게 다룰수 있기 때문 입니다.
comment:
이승재 학우님의 질문과 교수님께서 해주신 설명을 통해 벡터공간과 벡터의 수학적 정의에 대해서 복습할 수 있었습니다.
그리고 R^(n) 상의 선형변환을 행렬로 표현해 컴퓨터와 AI가 쉽게 다룰 수 있도록 한다는 것이 중요한 것 같습니다.
벡터 공간과 벡터에 대해서 더 궁금하시다면
교수님이 올려주신 사이트 http://matrix.skku.ac.kr/sglee/linear/ocu/linear-1.htm 또는
선형대수학 교재(예제도 함께 있습니다.) http://matrix.skku.ac.kr/LA-K/Ch-9/를 참고하시면 좋을 것 같습니다.
[Final OK by TA]
Finalized by 채희준, [3주차 주요질의 (2)] Q by 이승재, A by 이상구, 댓글 by 한수현, 정원철, 천가영
작성자 : 임동선(2017****79)작성일 : 8월 1일 오후 2:58
질문 by 이승재
답변 by 이상구
댓글 by 한수현, 정원철, 천가영
Finalized by 채희준
Q: [3주차] 주요 질의 사항 (1)
02 ‘근사’란 무엇인지 설명 부탁드립니다. 어설피 이해한 것을 써보자면, 도함수를 구하는 과정과 유사하다고 이해했습니다. 이런 저의 이해에 오류 지적이나 첨언 해주시길 부탁드립니다.
A:
이상구(LEE SANGGU)7월 31일 오전 9:14
[과학백과사전] https://www.scienceall.com/%EA%B7%BC%EC%82%ACapproximation/ 근사(approximation) 8월 06, 2010 는 제곱하면 2가되는 수로 정의되지만, 그 참값을 소수로 표시하기는 어렵다.
우선 1< <2는 바로 알 수 있다.
다음에 1.42=1.96<2<2.25=1.5이므로 1.4< <1.5.
이 와 같이 해서 =1.41421356…으로 차츰 참값에 가까운 수치를 구해 가는 것을 근사라 한다.
근사에 의해 구한 수치가 근사값, 근사값에서 참값을 뺀차가 오차이다.
예를 틀면 의 근사값으로서 1.4142를 취했을 때 오차는 1.4142 -1.41421356…=- 0.00001356….
한수현(2019****61)7월 31일 오전 9:47
근사를 단순히 특정 수에 가까운 수라고 생각하고 있었는데 정확한 개념을 알게 되었네요. 좋은 지식 얻어갑니다!
정원철(2017****79)7월 31일 오후 3:19
미분이 특정점 근방의 성질(좌/우극한)을 표현하기 위한 과정이라고 생각하면 근사가 도함수를 구하는 과정과 유사하다는게 어느정도 맞는 말인거 같습니다. 경사하강법을 할 때도 최적의 극값을 알기 위해 기울기를 낮은 쪽으로 계속 반복해서 움직이는 과정 자체가 근사라고 생각합니다.
이승재(2019****65)7월 31일 오후 8:44
근사에 대한 이해를 높이는데 답변 이 도움 많이 되었습니다. 감사합니다 :)
천가영(2020****17)8월 1일 오전 1:27
근사의 의미를 신경쓰지 않고 있었는데, 이렇게 자세히 알게 되니 생각보다 미적분의 개념을 이해하는데 도움이 된다고 느꼈습니다. 감사합니다!
정리:
https://www.scienceall.com/%EA%B7%BC%EC%82%ACapproximation/
• [과학백과사전]
근사(approximation)
8월 06, 2010
는 제곱하면 2가되는 수로 정의되지만, 그 참값을 소수로 표시하기는 어렵다.
우선 1< <2는 바로 알 수 있다.
다음에 1.42=1.96<2<2.25=1.5이므로 1.4< <1.5.
이 와 같이 해서 =1.41421356…으로 차츰 참값에 가까운 수치를 구해 가는 것을 근사라 한다.
근사에 의해 구한 수치가 근사값, 근사값에서 참값을 뺀차가 오차이다.
예를 틀면 의 근사값으로서 1.4142를 취했을 때 오차는 1.4142 -1.41421356…=- 0.00001356….
comment:
근사에 대해서 중요하게 생각해보지 않았었는데, 이승재 학우님의 질문을 finalize하면서 근사에 대해서 제대로 배워갈 수 있었습니다.
공부를 하고 문제를 푸는데에 있어서 근사를 굉장히 자주 사용하고 있었습니다.
아래는 '근사'에 관한 글 링크입니다. 관심이 있으신 분들은 참고하시면 좋을 듯 합니다.
https://terms.naver.com/entry.nhn?docId=3338497&cid=47324&categoryId=47324
근사
근사는 어떤 것과 똑같지는 않지만 비슷한 것을 말한다. 근사는 수에 대하여 많이 다루지만 식이나 도형 등에 대하여도 적용할 수 있다. 수에 대한 근사는 반올림, 올림, 내림 등을 이용한 어림셈이 가장 흔히 쓰이는 방법이다.
근사를 이용하여 구한 값을 근삿값, 근사를 이용하여 구한 식을 근사식이라고 한다. 근사는 복잡한 것을 간단하게 하거나 구하기 어렵거나 불가능한 것을 쉽게 하기 위하여 사용한다.
목차
1. 1.오차와 오차한계
1. 1.1.참값의 범위
1. 2.실수의 근사
1. 2.2.유리근사
1. 2.3.선형근사
1. 3.함수의 근사
1. 4.기호
1. 5.같이 읽기
1. 6.참고 문헌
[네이버 지식백과] 근사 (수학백과, 2015.5)
이상구(LEE SANGGU)8월 1일 오후 5:11
Very good.
[Final OK by SGLee]
Refianlized by 임성규 Finalized by 채희준, [2주차] [3-1강, 3-2강 주요질의] Q by 임성규, A by 박정호, sanggulee
작성자 : 이상구(LEE SANGGU)작성일 : 8월 2일 오후 2:52
질문 by 임성규
답변 by 박정호
Finalized by 채희준
Q: 주요 질의
page123 에서 A를 대각화하는 행렬 P를 구하는 과정에 대한 설명이 나옵니다.
---------------------------------------------------
A 를 대각화하는 행렬 P를 구하는 과정
1. A의 n개의 일차독립인 고유벡터를 구한다
2. n개의 고유벡터를 열벡터로 갖는 행렬 P를 만든다.
3. 이 P가 A를 대각화하는 행렬이고 P^-1AP는 A의 대응하는 고윳값을 순서대로 주 대각선 성분으로 갖는 대각선행렬 D이다.
---------------------------------------------------
첫 단계에서 n개의 일차독립인 고유벡터를 구하라고 나옵니다.
A가 대각화가능할 필요충분조건이 n차행렬 A 가 'n개의 일차독립인 고유벡터를 갖는다' 인데,
코드로는 쉽게 고유벡터와 고유값을 구하는 것을 확인하였으나 실제로 고유벡터를 어떻게 구할 수 있는지 궁금합니다.
A:
박정호(2014****10)8월 1일 오후 5:03
det(A-람다I)=0 을 만족하는 람다를 찾고 Ax=람다x를 만족하는 n개의 일차독립 고유벡터들을 찾으시면 돼요. 예를 들어 람다=1이면 Ax=x 만족하는 x 를 찾아야 하는데 (A-I)x=0과 같으니까
A-I의 null space의 basis를 찾으시면 그것이 람다 1에 해당하는 고유벡터가 됩니다.
이상구(LEE SANGGU)8월 1일 오후 5:08
박정호씨의 답이 명쾌합니다. Very clear.
정리:
http://matrix.skku.ac.kr/LA-K/Ch-4/LA-Lab-kor-Ch-4.html
고유값 구하기
이고,
또한 이므로 동차연립방정식 은 아닌 해를 가져야 한다. 따라서 특성방정식(characteristic equation) 이 성립해야 한다.
>>> 을 풀어서 를 구합니다.
일차독립 고유벡터 구하기
가 여러 개가 나왔다면 각 에 대하여 을 만족하는 x 중 일차독립인 것을 구합니다. 즉, I-A 의 영공간(null space)의 기저(basis)를 찾는 것입니다.
※참고
http://matrix.skku.ac.kr/LA-K/Ch-7/
[해공간, 영공간] |
|||
|
행렬 의 고유값 에 대한 고유공간 은 의 부분공간이다. 또한 동차연립방정식 의 해집합도 의 부분공간이다. 이를 동차연립방정식 의 해공간(solution space) 혹은 행렬 의 영공간(null space)이라 하며 기호로 Null로 나타낸다. |
|
|
|
comment:
임성규 학우님의 질문과 박정호 학우님의 답변을 정리해 finalize 하면서 고유값, 고유벡터, 대각화 부분을 다시 정리해 볼 수 있었습니다.
아래 링크는 고유값과 고유벡터의 계산 그리고 이를 통해 대각화 하는 것까지에 관한 내용을 자세히 다루고 있습니다.
관심 있으신 분들은 참고하시면 좋을 것 같습니다.
https://darkpgmr.tistory.com/105
5. 고유값, 고유벡터의 계산
comment by SANGGU LEE:
1. 고윳값 람다 에 대응하는 일차독립 고유벡터들을 구하기
답: det(A-람다I)=0 을 만족하는 람다를 찾고 Ax=람다x 를 만족하는 (몇개 일지 모를) 일차독립인 고유벡터들의 집합을 찾으시면 됩니다. 예를 들어 람다=k이면 A x=k x 만족하는 영아닌 벡터들 x 를 찾아야 하는데 이는
(A-kI)x=0 를 만족하는 영아닌 벡터들 x 들과 같으니까
A - k I의 null space의 a basis를 찾으시면 그것이 람다 k 에 해당하는 모든 일차독립인 고유벡터들을 포함하는 해공간의 a basis 가 됩니다.
2. 즉. . . 답은, A- k I 의 영 공간(null space)의 a 기저(basis)를 찾는 것입니다.
Bx = 0 의 영 공간(null space)의 기저(basis) : 이것을 찾아주는 Sage 명령어가 무엇인지 책에서 보신 기억 있으신가요? http://matrix.skku.ac.kr/2018-album/LA-Sec-7-2-lab.html 보시고 공유해 주세요^^
comment by 임성규 to sanggulee:
상세한 답변 감사합니다!
# 아래는 주어진 행렬의 영공간(동차연립방정식의 해공간)의 기저와 차원을 구하는 코드입니다.
A = matrix(QQ,[[1,1,0,2],[-2,-2,1,-5],[1,1,-1,3],[4,4,-1,9]])
W = A.right_kernel() # 영공간 생성
print "A = "
print A
print
print "기저: "
print W.basis()
print
print "dim(W) = ", W.dimension()
print
print A.right_nullity() # built-in 명령어 이용
.basis() 라는 sage 명령어로 null space의 basis를 구할 수 있음을 다시 복습하였습니다. 감사합니다.
comment by 임성규 to 박정호, 채희준:
고유값에 따른 null space 의 basis를 하나하나 구해야 하는 것이었군요. 명확한 답변 감사합니다!
[Final OK by SGLee]
[HW] 3주차 강의내용 질문By 이동현 답변By 이상구교수님 정원철 채희준
작성자 : 이동현(2014****99)작성일 : 8월 4일 오후 9:50
15강 (미적분학 6 함수의 극대, 극소)을 듣는중 궁금한 점이 생겨 올립니다.
어떠한 임계점이 극값도 극솟값도 되지 않는 경우에 곡면이 안장과 같은 모양을 한 안장점이라고 하는것을 확인하였습니다. 시각적인 이해를 통해 설명해주셨는데 수학적으로는 어떠한 임계점이 안장점이 되는지 아니면 극값을 갖는지 미리 확인 할 수 있는 요소가 있나요? 그리고 임계점이 극값, 극솟값 혹은 안장점을 가지며 그외의 형태도 가질 수 있다고 하셨는데 그외의 형태는 어떤것인지 궁금합니다.
답: http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
Quadratic Form (이차 형식):
Application(Hessian matrix)
Basic(기본):
0. Calculus (이차형식에 필요한 미적분)
1. Conic Section(이차곡선)
2. Diagonalization(Eliminate Cross Product)(대각화)
3. Inertia of Quadratic Form (이차형식의 관성)
Application(활용):
4. Hessian matrix(함수의 극값을 찾는 방법)
5. Special case of Hessian Matrix (특별한 경우에서의 극값을 찾는 방법)
6. Bordered Hessian Matrix (제한 조건 하에 극값을 찾는 방법)
이차형식에 대한 활용(Hessian matrix)에 들어가기 전에 Basic을 우선적으로 선행할 것을 권장합니다.
그리고 다음은 Hessian matrix가 실제 문제에서 어떻게 쓰이는지를 보여주는 대표적인 예 입니다.
이차형식 이 그런 것을 공부하는 절이고,
http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
Quadratic Form (이차 형식)에서 보듯이
https://bskyvision.com/205
이차형식에 대응하는 n 차 행렬의 고윳값의 부호가 바로 n 차원 공간안의 대응하는 곡면에서의 임계점에서의 극대, 극소, 안장점 등 에 대한 준거를 주는 것 입니다.
정원철(2017****79)8월 4일 오후 10:10
함수를 해시안 행렬로 변환하여 고유값을 구해보면 알 수 있습니다.
예를 들어 이차함수의 경우, 아래와 같이 판단할 수 있습니다.
(1) 고유값이 둘다 양수 -> 극소점
(2) 고유값이 둘다 음수 -> 극대점
(3) 고유값이 하나 음수, 하나 양수 -> 안장점
채희준(2016****00)8월 4일 오후 11:57
임계점은 극대점, 극소점 또는 이 둘도 아닌 경우에 안장점이라 합니다.
n 변수 함수의 경우 헤시안 행렬의 선행 주 소행렬식으로도 판단할 수 있습니다.
임계점에서, 헤시안 행렬의
(1) 고유값이 모두 양수 = 선행 주 소행렬식이 모두 양수 -> 극소점
(2) 고유값이 모두 음수 = 선행 주 소행렬식이 음수, 양수 를 반복 -> 극대점
(3) 고유값이 음수, 양수 모두 있을 경우 = 선행 주 소행렬식이 위 두 경우에 속하지 않는 경우 -> 안장점
수식을 쓰지 못하고 설명하려니 어렵네요.
교재 part I에 '8. 이차형식'에서 '정부호&부정부호' 관련 부분
교재 part Ⅱ에 '2.4. 함수의 극대극소'에서 '정리: 극대, 극소, 안장점', '정리: 극소, 극대 판정법'
을 같이 보시면 이해하는 데에 도움이 될 것 같습니다.
4. 댓글
[Final OK by SGLee]
(QnA 토론) 행렬과 인공지능; 행렬의 역사 : QnA에서 답글로 토론 하세요(자신이 활동한 내용 모아서 제출하는 것이 여러분 중간고사의 주요 부분입니다.)
작성자 : 이상구(LEE SANGGU)작성일 : 7월 10일 오후 1:08
0. 초기 선형대수학의 역사 (수학교육학 논문집, 2012) 을 읽고 중요하다고 생각하는 내용을 한 두 가지 답글로 공유해 보세요^^
http://matrix.skku.ac.kr/2013-Album/2013-S-KSME-KSHM-talk-SGLee-v1.pdf
와
http://matrix.skku.ac.kr/sglee/krf-1/linearalgebra/multimediaproject/1week/20103/20103.html
채희준(2016****00)7월 19일 오전 5:04
1. 행렬 및 벡터 공간을 다루는 선형대수학은 사회의 복잡한 현상을 선형화 과정을 거쳐 선형연립방정식이라는 단순한 형태의 수학 문제로 바꾼 후 실제로 해결하는 데 결정적으로 기여한다.
&
우리 사회의 여러 문제를 수학적으로 표현하여 수학 문제로 바꾸어 놓은 후, 그 문제를 선형화하여 일차연립방정식과 관련된 문제로 바꾼 후, 행렬에 대한 지식을 이용하여 쉽게 해를 구한 다음 그 해를 원래 사회문제에 대한 답으로 해석하는 것이 바로 수학의 역할 중의 하나이다.
2. 단지 크기가 큰 것, 즉 계산이 많고 손으로 풀기 어려운 것만이 문제가 되는데 이 부분이 20세기 후반 컴퓨터의 발전과 함께 자연스럽게 해결된 것이다.
&
미적분학은 물론 편미분 중적분, 선적분, 면적분, 미분방정식, 행렬식, 역행렬, curve fitting, least square curve fitting, 선형 계획법, 3차원 그래프 그리기, 선형대수학, 군론, 체론, 가환대수, tensor 계산, 정수론, Fractal 등 적어도 대학에서 배우는 수학 내용 정도의 문제는 이미 우리 어린 학생들이 그리도 좋아하는 개인용 컴퓨터를 이용하여 Mathematica, MATLAB, Derive, MathTensor 등의 다양한 프로그램을 이용하여 쉽게 다룰 수 있다.
[Final OK by SGLee]
Q by 이상현, Finalized by 천가영, (복소수 및 무리수 포함하는 행렬의) 역행렬에 대한 질문, 답변 by 이상구 교수님, 댓글 by 권서영, 채희준, 박정호
작성자 : 천가영(2020****17)작성일 : 7월 25일 오후 9:20
(복소수 및 무리수 포함하는 행렬의) 역행렬에 대한 질문과 답^^
질문 by 이상현
답변 by 이상구 교수님
댓글 by 권서영, 채희준, 박정호
Finalized by 천가영
Q.
주어진 행렬 K에 단위행렬을 첨가한뒤 RREF로 바꿔 역행렬을 만드는 도중 발견했습니다.
행렬 K는 2x2의 정사각행렬이고 [a , b], [c , d] 의 형태를 띈다고 가정하면
K의 역행렬의 1행1열에 해당하는 성분은 d/(ad-bc) 이어야 합니다.
그러나, RREF를 이용하는 방법은 1행1열에 해당하는 성분이 {(1+abc)/(a^2)}/(ad-bc)가 나옵니다.
혹시 모든 2x2 행렬이 (1+abc)/(a^2) = d 를 만족하나요? 제 계산에 오류가 있나요?
Answer
그렇습니다. 손 계산에는 오류가 없습니다. 그러나 컴퓨터 ... 인공지능에게 ... 명령을 줄 때 ... 정수 계산 이외는 하지 말라고 하고 ... 복소수 i 를 주고 ... 무리수 e 를 주었으니 ... 인공지능은 시킨대로 했을 뿐입니다. 그 답이 맞는지 틀린지 인공지능은 모릅니다. 그리고 변수 x에 대하여도 어떤 의미도 주지 않고 사용하였습니다. .. 이런 경우 코드를 짠 사람만이 자신이 무엇을 잘 못 시켰는지 ... 파악할 수 있답니다. 스스로 ... 고쳐서 같은 실수를 하지 않아야 합니다. 이런 경우 컴퓨터와 대화하는 코딩의 기본 지식이 필요합니다. 컴퓨터로 구한 값은 .., 항상 그 전에 이런 문제를 이런 코드로 내 컴퓨터가 구해준 답이 항상 정답이 되는지 미리 확인해 보아야 합니다. A = matrix(RR, [ [1, 2], [5, 8] ] ) # 실수 상에서 행렬 계산 하라고 하는 경우 A = matrix(RDF, [ [1, 2], [5, 8] ] ) # 실수체 상에서 행렬 계산하고 하는 경우의 행렬 정의 등으로 해 보세요^^ 이 경우도 복소수 i 가 사용되면 원하는 답은 안나옵니다. 복소수 계산을 하기 위해서는 기본 코드 설정이 실수 부분과 복소수 부분으로 나누어서 다른 구조로 설정되어 있으면 그것을 작동하려면 ... 코딩을 제대로 배워야 합니다. 이상현 군이 사용한 코드는 정수 행렬의 경우 정답을 주는 코드입니다. 다른 경우는 이번 경우 무리수 e 를 사용한 듯한데 이 경우 무리수 계산을 할 수 있도록 underlying filed 를 그에 맞추어 실수 RR or RDF 로 바꾸어 주어야 하고 ... 그에 보태어 floating error 가 얻고자 하는 답에 영향을 주는지 미리 확인하여 ... 코드를 손보는 노력이 꼭 필요합니다. https://docs.python.org/ko/3/tutorial/floatingpoint.html 15. 부동 소수점 산술: 문제점 및 한계 부동 소수점 숫자는 컴퓨터 하드웨어에서 밑(base)이 2인(이진) 소수로 표현됩니다. 예를 들어, 소수 0.125 는 1/10 + 2/100 + 5/1000의 값을 가지며, 같은 방식으로 이진 소수 0.001 는 값 0/2 + 0/4 + 1/8을 가집니다. 이 두 소수는 같은 값을 가지며, 유일한 차이점은 첫 번째가 밑이 10인 분수 표기법으로 작성되었고 두 번째는 밑이 2라는 것입니다. 불행히도, 대부분의 십진 소수는 정확하게 이진 소수로 표현될 수 없습니다. 결과적으로, 일반적으로 입력하는 십진 부동 소수점 숫자가 실제로 기계에 저장될 때는 이진 부동 소수점 수로 근사 될 뿐입니다. 이 문제는 먼저 밑 10에서 따져보는 것이 이해하기 쉽습니다. 분수 1/3을 생각해봅시다. 이 값을 십진 소수로 근사할 수 있습니다: 0.3 또는, 더 정확하게, 0.33 또는, 더 정확하게, 0.333 등등. 아무리 많은 자릿수를 적어도 결과가 정확하게 1/3이 될 수 없지만, 점점 더 1/3에 가까운 근사치가 됩니다. 같은 방식으로, 아무리 많은 자릿수의 숫자를 사용해도, 십진수 0.1은 이진 소수로 정확하게 표현될 수 없습니다. 이진법에서, 1/10은 무한히 반복되는 소수입니다 0.0001100110011001100110011001100110011001100110011... 유한 한 비트 수에서 멈추면, 근삿값을 얻게 됩니다. 오늘날 대부분 기계에서, float는 이진 분수로 근사 되는 데, 최상위 비트로부터 시작하는 53비트를 분자로 사용하고, 2의 거듭제곱 수를 분모로 사용합니다. 1/10의 경우, 이진 분수는 3602879701896397 / 2 ** 55 인데, 실제 값 1/10과 거의 같지만 정확히 같지는 않습니다. 많은 사용자는 값이 표시되는 방식 때문에 근사를 인식하지 못합니다. 파이썬은 기계에 저장된 이진 근삿값의 진짜 십진 값에 대한 십진 근삿값을 인쇄할 뿐입니다. 대부분 기계에서, 만약 파이썬이 0.1로 저장된 이진 근삿값의 진짜 십진 값을 출력한다면 다음과 같이 표시해야 합니다 >>>>>>0.1 0.1000000000000000055511151231257827021181583404541015625 이것은 대부분 사람이 유용하다고 생각하는 것보다 많은 숫자이므로, 파이썬은 반올림된 값을 대신 표시하여 숫자를 다룰만하게 만듭니다 >>>>>>1 / 10 0.1 인쇄된 결과가 정확히 1/10인 것처럼 보여도, 실제 저장된 값은 가장 가까운 표현 가능한 이진 소수임을 기억하세요. 흥미롭게도, 가장 가까운 근사 이진 소수를 공유하는 여러 다른 십진수가 있습니다. 예를 들어, 0.1 과 0.10000000000000001 및 0.1000000000000000055511151231257827021181583404541015625 는 모두 3602879701896397 / 2 ** 55 로 근사 됩니다. 이 십진 값들이 모두 같은 근삿값을 공유하기 때문에 eval(repr(x)) == x 불변을 그대로 유지하면서 그중 하나를 표시할 수 있습니다. 역사적으로, 파이썬 프롬프트와 내장 repr() 함수는 유효 숫자 17개의 숫자인 0.10000000000000001 을 선택합니다. 파이썬 3.1부터, 이제 파이썬(대부분 시스템에서)이 가장 짧은 것을 선택할 수 있으며, 단순히 0.1 만 표시합니다. 이것이 이진 부동 소수점의 본질임에 주목하세요: 파이썬의 버그는 아니며, 여러분의 코드에 있는 버그도 아닙니다. 하드웨어의 부동 소수점 산술을 지원하는 모든 언어에서 같은 종류의 것을 볼 수 있습니다 (일부 언어는 기본적으로 혹은 모든 출력 모드에서 차이를 표시하지 않을 수 있지만). 좀 더 만족스러운 결과를 얻으려면, 문자열 포매팅을 사용하여 제한된 수의 유효 숫자를 생성할 수 있습니다:>>>>>> format(math.pi, '.12g') # give 12 significant digits '3.14159265359'>>> format(math.pi, '.2f') # give 2 digits after the point '3.14'>>> repr(math.pi) '3.141592653589793' 이것이, 진정한 의미에서, 환영임을 깨닫는 것이 중요합니다: 여러분은 단순히 진짜 기곗값의 표시 를 반올림하고 있습니다. 하나의 환상은 다른 환상을 낳을 수 있습니다. 예를 들어, 0.1은 정확히 1/10이 아니므로, 0.1의 세 개를 합한 것 역시 정확히 0.3이 아닙니다:>>>>>> .1 + .1 + .1 == .3 False 또한, 0.1은 1/10의 정확한 값에 더 가까워질 수 없고, 0.3도 3/10의 정확한 값에 더 가까워질 수 없으므로, round() 함수로 미리 반올림하는 것은 도움이 되지 않습니다:>>>>>> round(.1, 1) + round(.1, 1) + round(.1, 1) == round(.3, 1) False 숫자를 의도한 정확한 값에 더 가깝게 만들 수는 없지만, round() 함수는 사후 반올림에 유용하여 부정확한 값을 가진 결과를 서로 비교할 수 있게 합니다:>>>>>> round(.1 + .1 + .1, 10) == round(.3, 10) True 이진 부동 소수점 산술은 이처럼 많은 놀라움을 안겨줍니다. 《0.1》의 문제는 아래의 《표현 오류》 섹션에서 자세하게 설명합니다. *** 이런 것은 코딩 수업을 따로 들으면서 배우시기 바랍니다. 본 강의에서는 교과서에 있는 내용을 실습하는 기회를 제공하는 정도로 쭉 진도를 나가서 인공지능이 실제 구현되는 수학적 원리의 기초를 학습하도록 하는 것입니다. 모든 것을 컴퓨터 코딩으로 해결하려면 ... 위의 코딩 지식을 배워야 합니다. 그 필요를 느끼실 때 ... 코딩 수업을 따로 들으면서 배우시면 됩니다^^ 그 차이를 느끼도록 해 주는 것이 우리 강좌의 목표 중 하나인데 ... 이 군은 그 목표에는 도달했으니 아주 잘 했습니다. ^^.
https://www.wolframalpha.com/examples/mathematics/ 에서 한번 구해 보세요^^
inverse of {{x, i}, {e, 99}} https://www.wolframalpha.com/input/?i=inverse++of+%7B%7Bx%2C+i%7D%2C+%7Be%2C+99%7D%7D
여기서는 복소수나 무리수 를 인식하여 계산하도록 코딩을 속에 포함해 둔 것입니다. 그러나 그 코딩은 유료라 안 보여 줍니다.
Comment
채희준(2016****00)7월 19일 오후 3:21
질문과 답변을 읽으면서 짜여진 코드를 사용할 때는 그 코드의 전제되어 있는 조건들을 알아둘 필요가 있다는 생각이 들었습니다. 그리고 문자 변수가 포함된 행렬도 역행렬을 구해주는 등의 계산을 해줄 수 있을까 궁금했는데, 복소수나 무리수를 인식하여 계산하도록 하는 코드만으로도 쉽지 않은 것 같습니다. 부동 소수점 산술에 대한 답변도 매우 흥미로웠습니다. 파이썬을 이용해 계산을 하다가, 손으로 계산하면 2.0으로 떨어져야하는데 2.00001 비슷하게 나오는 등의 경험을 종종 했었습니다. 그때는 왜 이렇게 나오지? 하고 어리둥절 넘겼는데, 십진법과 이진법 사이의 변환이 이뤄지면서 생기는 문제였군요. 좋은 질문과 답변을 해주신 덕분에 새로운 지식을 얻을 수 있었습니다. 감사합니다.
[Final OK by TA]
2주차 SVD 정리 (Very Good^^) <SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준
작성자 : 임동선(2017****79)작성일 : 7월 24일 오후 1:20
SVD를 공부하면서 알아야 할 것들이 무엇이 있는지 정리할 필요성을 느껴 정리해 보았습니다. 조금이나마 도움 되길 바랍니다.
1. 와 는 항상 대칭행렬이다. 각각 , 정사각행렬이다.
2. 와 에 대하여 0 아닌 고유값이 서로 같다.
3. 의 고유값은 모두 0보다 크거나 같다.
4. 의 rank와 의 rank는 같다.
5. n차정사각행렬 와 가 직교닯음 ⇔ 인 직교행렬 가 존재.
6. 직교대각화가능한 n차정사각행렬 ⇔ 는 대칭행렬 ⇔ 는 n개의 일차독립인 고유벡터를 가짐 &서로 다른 고유값에 대응하는 고유벡터들은 서로 직교.
7. 에서, 직교대각화가능한 n차정사각행렬 의 직교대각화하는 는 의 정규직교화된 고유벡터를 열로 갖는 직교행렬, 는 대각선성분으로 의 고유값을 갖는 대각선행렬.
8. 와 는 항상 대칭핼렬이므로, 와 는 항상 직교대각화가 가능.
○ 임의의 행렬 는 SVD를 통하여 로 분해된다는 것입니다.
는 singular value와 singular vector를 가지는데, 가 의 singular value 를 갖고 있고, 와 가 의 singular vector , 를 열로 갖고 있습니다.
그러면 , , 를 구해봅시다.
는 를 직교대각화하는 직교행렬입니다. 를 구할 때는 의 고유값(의 고유값이 아닙니다)과 고유벡터를 구하고, 고유벡터를 정규직교화하여, 그것을 열(right singular vector )로하는 행렬로 를 구하게 됩니다.
이 때 고유값을 같이 구했으므로, 이 고유값의 square root인 singular value 를 대각선성분으로 하는 대각선행렬 를 함께 구하게 됩니다. singular value 를 단조감소하도록 배치하여 와 를 구해야 합니다.
는 를 직교대각화하는 직교행렬입니다. 를 구할 때와 같이 하기 보다, 이미 구해 놓은 와 를 이용합니다. 를 구할 때는 를 열(left singular vector )로하는 행렬로 를 구하게 됩니다.
이로써 , , 를 구했습니다.
○ 이제, 왜 singular value 는 고유값의 square root이고, 의 대각선성분으로 고유값이 아닌 singular value 를 갖는지 알아보겠습니다.
직교대각화가능한 와 이를 직교대각화하는 직교행렬로부터, 무엇이 와 직교닮음인지 알 수 있습니다.
와 가 직교닮음인 것입니다.
를 직접 계산해보면 입니다.
즉, 입니다.
마찬가지로, 와 는 직교닮음이고, 입니다.
singular value 가 왜 고유값의 square root인지 알아보겠습니다.
직교대각화가능한 의 , 여기에서는 가 대각선성분으로 의 고유값 을 갖는 대각선행렬이 됩니다. (7.을 떠올립시다)
따라서 의 식이 세워지게 되고 singular value 는 의 square root, 가 되는 것입니다.
마찬가지로, 의 대각선성분으로 고유값 이 아닌 singular value 를 갖는 이유는, 가 대각선성분으로 고유값 를 가지는 것이고, 는 대각선성분으로 singular value 를 갖게되는 것이기 때문입니다.
이로써, 왜 singular value 는 고유값의 square root이고, 의 대각선성분으로 고유값이 아닌 singular value 를 갖는지 알아보았습니다.
○ 저는 singular value 가 고유값의 제곱근이라는 사실을 듣고, 고유값은 음수일수도 있는데 어떻게 되는거지라고 생각했는데, 3.의 성질이 있음을 알고나서 의 고유값은 양수 또는 0이니 제곱근을 가질 수 있음을 이해하였고, 더불어서 SVD에서 쓰이는 고유값은 의 고유값이 아닌 의 고유값임을 다시금 깨닫게 했던 좋은 기회였습니다. 또, 에서 책에서는 이 의 rank라고 적혀 있어서 이건 가 아니라 와 관련 있는 것이 아닌가 했는데 4.의 성질을 보고 이해하게 되었습니다. 등등 왜 이렇게 되는지 이해가 명확히 되지 않다가 1.~4.의 성질이 있음을 알게 된 후 각 개념의 연결이 선명해지는 느낌을 받았습니다. 5.~8.은 배웠던 것을 정리한 것입니다. 아무쪼록 제가 이해한대로 설명한 것이 SVD를 이해하는데 도움이 되었으면 좋겠습니다. 틀린 것이 있다면 알려주세요. 감사합니다.
도움 받았던 자료입니다.
https://people.sc.fsu.edu/~jburkardt/classes/gateway_2014/lecture_week09.pdf
http://matrix.skku.ac.kr/math4ai-intro/W12/
Part 3 에서 배울 내용 미리 공유합니다.
<SVD 와 주성분 분석과 공분산 행렬>
주성분 분석은 원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환하는 기법이다.
그런데 원 데이터의 분포에 대한 정보는 공분산 행렬에 담겨 있다. 왜냐하면 공분산 행렬은 주대각선 상의 성분에 각 확률변수가 얼마나 퍼져 있는지를
나타내는 분산과 주대각선 이외의 성분에 확률변수 간의 상관관계를 나타내는 공분산으로 되어 있기 때문이다. 따라서 주성분 분석은 공분산 행렬과 관계가 있다.
데이터 행렬 가 센터링(mean-centered) 되어 있는 행렬이면, 공분산 행렬는 다음과 같이 계산된다.
주성분 분석의 목표는 ‘공분산 행렬로 부터 얻은 정보’를 최대한 보존하는 ‘더 적은 개수()의 새로운 변수들’을 찾으려는 것이다. 의 특잇값 분해
로부터 다음 관계를 얻는다.
따라서 , 즉 ()인 관계가 성립한다. 이때 를 의 고윳값(eigenvalue), 를 고유벡터(eigenvector)라고 한다.
는 번째 PC의 분산을 나타내며, 는 번째 축을 나타낸다. (고윳값, 고유벡터에 관한 자세한 사항은 대학수학에서 다룬다. http://matrix.skku.ac.kr/math4ai/part1/ )
이상구(LEE SANGGU)7월 23일 오전 3:24
김진웅 군은 내가 가르친 어떤 학생보다 SVD를 잘 이해하였고, classemate 들에게 쉽게 설명하였습니다. 설명에 틀린 부분 없습니다. Very good. SVD 읽은 다른 학생들은 . . . 모두 . . . 여기 아래에 코멘트 꼭 다시기 바랍니다. ^^
채희준(2016****00)7월 24일 오전 11:24
교재를 통해 공부하면서 어려움을 겪고 있던 부분이었습니다. 교재에는 간략히 적혀있던 부분들을 자세히 설명해주셔서 감사합니다. 덕분에 잘 이해할 수 있었습니다.
[Final OK by SGLee]
Q by 김정한 A by 이상구 교수님 F by 김정한 댓글 by 채희준 : [2주차] 선형변환에 대한 개념 정리 및 질문 <-- 답 입니다.
작성자 : 김정한(2017****99)작성일 : 7월 26일 오후 10:55
Q1. R^n 에서 R^n 으로 보내는 모든 선형변환을 R^n 위의 선형 연산자 라고 부르나요? 답: Yes
예를 들어 R^2에서 x축, y축 또한 원점을 지나는 임의의 직선에 대한 대칭 변환 모두 선형 연산자라고 부를 수 있는 것일까요? 답: Yes
답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
답: 복잡한 치역에서 생각해야 할 거리/크기에 관한 함수 T(x) 에 대한 모든 연구를 이미 모두 알고 있는 간단한 정의역에서 해도 되는 엄청난 장점이 있습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다. 특히 T가 단사일 때는 왜 ker T={0}인가요?
답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html 에 증명 있습니다.
[증명]
교수님 답변에 추가적인 의견을 내보았습니다.
Q1. 임의의 직선에 원점을 지나는 임의의 직선에 대한 대칭 변환이 모두 선형 연산자라는 것은 아래와 같은 증명으로 판명이 가능합니다.
이러한 단순 직선 뿐만 아니라 층밀림 변환이라는 것도 존재한다는 것을 파악할 수 있었습니다.
예를 들어 위와 같은 변환은 각 점을 x축 따라 ky만큼 평행이동 시킨 것이라고 알 수 있습니다.
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
: 예시로 R^2를 생각해보면, R^2에서 길이를 보존하게 되면 선형변환의 이미지가 단위 원 안에 머물러 있어, 일반적으로 연구가 쉬워진다고 생각하게 되었습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다.특히 T가 단사일 떄는 왜 ker T={0}인가요?
:
첫번째 증명: Ker T에 임의의 벡터가 있다고 하면 T(v)=0 인데 T(0)은 언제나 0이다. 이 때 T가 단사이므로(단사의 정의에 의해) v=0라고 말할 수 있다. 결론적으로 ker T={0}이다.
두번째 증명: 만일 T(v1)=T(v2)에서 T(v2)를 뺴주면 0=T(v1)-T(v2)로 표현해줄 수 있다. 또 T는 선형 변환이므로 T(v1)-T(v2)=T(v1-v2)로 풀어쓸 수 있다. 그렇다면 v1-v2는 ker T 안에 있고, ker T에는 {0}-> 영벡터 하나밖에 없으므로 v1-v2는 영벡터이고 v1=v2가 될 수 밖에 없다. 따라서 T는 단사라고 할 수 있다.
개념 출처: 인공지능을 위한 기초수학 [교재]
4개의 댓글
이상구(LEE SANGGU)7월 27일 오전 2:24
김정한 군, 아주 잘 했습니다. 다 맞는 말 들 입니다.
채희준(2016****00)7월 27일 오전 10:20
>>> Q1. 임의의 직선에 대한 대칭 변환이 모두 선형 연산자라는 것은 아래와 같은 증명으로 판명이 가능합니다. <<<에서 '임의의 직선'을 '원점을 지나는 임의의 직선'으로 해야 정확하다고 생각합니다. 증명 과정에도 원점을 지나는 직선이라 되어있음을 확인하실 수 있습니다. 임의의 직선이라 하면, y=ax+b를 이야기 하는데 b가 0이 아닌 경우, 이 직선에 대한 대칭은 선형변환이 아닙니다.예를 들자면, y = 1 직선에 대한 대칭 변환을 생각해 봅시다. x1 = (0,0), x2 = (1,0)이라 할 때, T(x1) = (0,2), T(x2) = (1,2), T(x1 + x2) = (1,2)로 T(x1) + T(x2) = T(x1+x2)가 성립하지 않음을 확인할 수 있습니다.
채희준(2016****00)7월 27일 오전 10:33
선형 변환에서 길이보존(isometry)이 가지는 이점과 'T가 단사일 필요충분조건이 kerT={0}이다' 라는 것에 대한 정확한 증명과정을 생각해보지 못하고 넘어갔었는데 김정한 학우님 덕분에 좋은 내용을 배워갑니다.
김정한(2017****99)7월 27일 오후 7:00
수정 완료했습니다. 좋은 지적 감사드립니다~
[Final OK by SGLee]
특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
작성자 : 전재현(2015****91)작성일 : 7월 27일 오후 9:03
SVD를 공부하면서 실제로 어떻게 활용될 수 있을지 고민하던 중에 진행해본 작업입니다.
저와 같은 궁금증을 품으셨던 분들에게 도움이 되기를 바랍니다 :)
주 참고자료 : darkpgmr.tistory.com/106 (특이값 분해의 활용)
들어가기에 앞서
특이값분해의 원리를 충분히 이해하시고 읽어주시면 감사하겠습니다. 김진웅 학우의 ‘2주차 SVD 정리’ 글이 도움이 될 것입니다. ߘ
최소자승법 : ‘최소제곱법’이라고도 불리며 어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법(위키백과)
최소자승법을 설명한 이유는 이번에 사용하려는 의사역행렬이 이와 유사한 개념으로 활용되기 때문입니다. 역행렬이 존재하지 않는 비가역행렬에 의사역행렬을 생성하여 비가역행렬 A에서 Ax = b의 해를 A의 의사역행렬 A+를 활용하여 x = A+b 형태로 계산하고 이 x가 llAx-bll를 최소화하게끔 만드는 식으로 활용합니다. (오차의 제곱의 합이 최소가 되는 해를 구하는 최소자승법의 개념을 응용한다는 뜻입니다)
의사역행렬의 SVD 공식은 A+ = VΣ+UT 이며 기존 SVD 공식에서 U와 V의 순서가 바뀌고 전치가 바뀌며, Σ에서 0이 아닌 고유값들의 역수를 취한 후 전치하여 nxm행렬로 만듭니다. 기존 SVD 공식이 A = UΣVT 였던 것과 비교하며 확인하시기 바랍니다.
(https://bskyvision.com/256 참고)
기반 데이터
통계청 해외직접투자 현황, 2002 ~ 2019년까지의 연도별 투자금액 데이터 (KOSIS)
(수식을 간단하게 만들기 위해 해당 데이터를 천만 달러 단위로 축약하여 사용)
투자금액 추이가 다음과 같은 모습을 보이고 있으므로 모델을 2차 포물선으로 만들기로 합니다.
모델
연도를 x, 투자 금액을 y로 하고서 y = ax2 + bx + c로 모델을 형성하고 이를 선형 연립방정식으로 재정리하면 아래와 같아집니다.
ax12 + bx1 + c = y1
ax22 + bx2 + c = y2
ax32 + bx3 + c = y3
…
ax182 + bx18 + c = y18
역행렬이 존재한다면 해당 점을 모두 지나는 포물선이 존재한다는 뜻인데 불가능한 일이므로 의사역행렬을 이용합니다. Python에서는 numpy 패키지의 pinv()함수를 이용하면 의사역행렬을 손쉽게 구할 수 있습니다. 하지만 SVD를 이용하여 이를 구해내는 과정을 경험하는 것이 목적이므로 직접 풀어보며 돌아가는 방법을 택하겠습니다.
코딩 (with Python)
먼저 필요한 패키지들을 import 한 뒤 앞서 설명한 행렬 A와 B를 생성합니다.
하단의 A.shape와 B.shape는 행렬의 mxn 형태를 보여주는 식입니다.
다음과 같이 알맞게 행렬 A와 B가 형성되었습니다.
그 이후에는 특이값 분해를 실행합니다. numpy.linalg 패키지의 svd 함수를 활용하여 간단하게 특이값 분해를 진행할 수 있습니다.
결과로 Sigma Value에 고유값이 3개 형성된 것을 볼 수 있습니다.
이제 의사역행렬을 만들어낼 차례입니다. 이를 위해서 앞서 설명한대로 s를 S_mat의 형태로 변형합니다.
Reciprocal()함수를 이용해 고유값들의 역수를 취한 re_s를 만들고 transpose()함수를 이용하여 이를 전치한 S를 만든 뒤, S를 대각행렬에 0을 붙인 형태인 S_mat으로 만듭니다.
이때 S_mat은 nxm 행렬이 된다는 것을 잊지맙시다.
(그림출처: https://darkpgmr.tistory.com/106)
위와 같이 s가 S_mat으로 변형됩니다.
공식에 맞게 각 행렬들을 수정한 뒤에 의사역행렬 piA를 계산합니다.
만약 piA가 제대로 구해졌다면 A에서 piA의 전치를 뺀 행렬은 영행렬에 가까워져야 할 것입니다.
결과가 어느정도 0에 가깝게 나타난 것 같습니다. (사실 더 0에 가깝게 만들고 싶었지만 실패했습니다..)
이제 구해진 의사역행렬으로 해를 구해보겠습니다.
직접 손 코딩으로 구해본 의사역행렬이 numpy에서 제공하는 pinv()함수와 비교했을 때 얼마나 차이가 있는지 확인해봅시다.
완벽하게 동일한 결과가 만들어졌습니다! 원리를 이해했으니 앞으로는 pinv()함수를 사용하여 간편하게 계산하도록 합시다..!
이제 2020년의 금액을 추정해보고 이를 시각화하여 표현해봅시다
앞서 구한 값들을 a,b,c에 대입하여 구해진 2020년의 해외직접투자 금액은 56,237 천만 달러로 추정되었습니다.
전체 그래프로 확인했을 때 2006년부터 곡선을 중심으로 위아래로 변화하며 상승하는 모습을 보이는데 2020년에는 다시 하락세를 형성한다고 예측되었습니다.
아직 2020년이 다 끝나지않아서 실제로 맞아 떨어지는지는 알 수 없습니다만, 더 높은 정확도를 가지는 모델들을 활용하는 것이 좋아 보입니다.
마치며
지금까지 python을 활용하여 2020년 해외직접투자 금액을 추정하는 모델을 SVD와 의사역행렬을 이용하여 만들어보았습니다.
이번 주 초에 완성해서 올려보고 싶었으나 처음 배우고 행해보는 일이라 꽤나 많은 시간이 소모되었습니다.
또 타인의 눈에도 잘 진행된 시도였는지 모르겠네요.
다만 해당 과정에서 SVD와 의사역행렬에 대한 개념, 그리고 이를 활용하는 방법에 대하여 제대로 숙지할 수 있었던 것 같습니다.
여러분들도 기회가 된다면 직접 코딩해보며 개념을 익혀보시는걸 추천 드립니다 :)
(파이썬 원본 파일은 요청하시면 공유하도록 하겠습니다)
--------------------------------------------------------------------------
많은 분들이 좋은 반응을 보여주셔서 고생한 보람이 가득한 결과였습니다.
교수님께서 이번 기말고사 유형으로 만들어보자는 의견을 내주셨는데, 적극 찬성입니다!
이번 경험을 통해 실제로 배운 개념을 활용해보는 시도는 결과를 떠나 이를 익히고 기억하는데 큰 도움이 된다고 느꼇습니다.
기말고사 형식으로 추가된다면 저와 비슷한 시도를 해보려고 생각하던 학우분들께도 큰 동기부여와 기회가 만들어질 수 있을 것 같습니다.
무엇보다 재미있을 것 같습니다! 긍정적으로 고려해주시면 감사하겠습니다 :)
채희준 학우님께서 제 코드를 활용해보고 싶어하시는 듯 하여 원본 파이썬 파일을 첨부합니다.
SVD와 의사역행렬, 그리고 파이썬을 공부하시는데 도움이 되기를 바랍니다.
svd_pinv_amount_of_investment.py
채희준(2016****00)7월 27일 오전 10:54
좋은 글 감사합니다. 이론을 배우고 이를 실제 데이터를 활용한 코딩을 해보고 싶었는데, 컴퓨터 언어에 대해 가진 지식이 부족해 실제로 시도해보지는 못하고 있었습니다. 전재현 학우님, 올려주신 코드를 따라가며 연습을 해보고 싶은데, 혹시 코드를 활용해도 괜찮을까요...?
5. 실습
[Final OK by SGLee]
[실습] Part I -3 특이값분해(SVD), 의사역행렬 with 파이썬
작성자 : 채희준(2016****00)작성일 : 8월 5일 오후 1:59
※전재현 학우님의
'특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기'
파이썬 코드를 활용해 실습했습니다.
#저는 모델을 y = ax^3 + bx^2 + cx +d 로 해봤습니다.
import numpy as np, matplotlib.pyplot as plt
from numpy.linalg import svd
year = np.arange(2003, 2020, 1)
A = np.array([2002**3, 2002**2, 2002, 1])
for years in year:
add = np.array([years**3, years**2,years,1])
A = np.vstack((A,add))
B = np.array([[4056],[4770],[6552],[7282],[11876],[22687],[24021],[20709],
[24637],[29082],[28540],[30192],[26998],[27180],[34986],[43696],[49781],[61847]])
# 특이값 분해
U, s, Vt = np.linalg.svd(A, full_matrices=True)
#의사역행렬 구하기
re_s = np.reciprocal(s)
S_mat = np.diag(re_s)
for i in range(0,14,1) :
plus = np.array([[0],[0],[0],[0]])
S_mat = np.hstack((S_mat,plus))
Ut = np.transpose(U)
V = np.transpose(Vt)
piA = np.dot(V, np.dot(S_mat,Ut))
X = np.dot(piA, B)
print(X)
piA_t = np.linalg.pinv(A)
X_t = np.dot(piA_t,B)
print(X_t)
x = np.array([[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],
[2011],[2012],[2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020]])
forcast = 2020**3*X[0]+2020**2*X[1] + 2020*X[2] + X[3]
add_b = np.array([forcast])
y = np.vstack((B,add_b))
plt.figure(figsize=(15,5))
plt.plot(x,y,'o', markersize = 10)
plt.ylabel('money')
plt.xlabel('year')
plt.xlim(2001,2021)
plt.ylim(0,80000)
plt.plot(x,X[0]*x*x*x+X[1]*x*x+X[2]*x+X[3])
plt.xticks([2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,
2015,2016,2017,2018,2019,2020])
plt.title('Amount of investment to abroad', loc='center')
print(forcast)
plt.show()
[[ 3.12093785e+01]
[-1.88167547e+05]
[ 3.78167713e+08]
[-2.53340282e+11]]
[[ 3.51993928e-02]
[-1.40171873e+02]
[ 1.39547336e+05]
[ 2.08229222e+02]]
[68690.52740479]
제 모델로 했을 때는 pinv() 함수와는 다른 해가 나왔습니다.
pinv() 함수로 구한 해를 이용해 2020년 전망치와 그래프를 구하면 다음과 같습니다.
[56271.88436551]
comment.
이미 짜여진 코드로 실습을 하는데도 어려움이 많았습니다. 그 의미를 파악하고 제 모델에 맞게 변형을 해가는 과정에서 SVD, 의사역행렬, 파이썬에 대해 많이 배울 수 있었습니다.
그리고 단순히 이론을 공부하는 것에서 끝나는 것이 아니라 실제 데이터와 공부한 것을 활용해 추세선을 그리고 미래를 예측해 볼 수 있다는 것이 신기했고 재미있었습니다.
직접 코딩을 하고 다른 사람도 학습해 볼 수 있도록 그 코드를 공유해준 전재현 학우님. 감사합니다!
이상구(LEE SANGGU)8월 5일 오후 4:53
Good^^
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘
##함수 정의, 함수 그리기, 함수 분리 그리기
##극한·좌극한·우극한 구하기, 도함수 구하기, 접선의 방정식 구하기, 최대값·최소값 구하기, 적분
##평면 그리기, 벡터 그리기, 내적·외적·사잇각 구하기
##벡터함수 정의, 벡터함수 그리기
##벡터도함수 구하기, 위치벡터·접선벡터 그리기, 곡선 길이 구하기
##편도함수 구하기, 2계편도함수 구하기, 연쇄법칙
##그래디언트·방향도함수·방향미분계수 구하기, 임계점 구하기, 극값 구하기-고유값·소행렬식
##함수 정의, 함수 그리기, 함수 분리 그리기
#함수 정의
var('x')
h=abs(x)^sqrt(2)
f1(x)=-abs(x-3)
f2(x)=abs(x-3)
#함수 그리기
var('x')
h=abs(x)^sqrt(2)
A = plot(h, x, -3, 3, linestyle="--", color='green')
B = plot(1-e^(-x)/e^x+1, x, -3, 3)
show(A + B, ymax=10, ymin=-10)
print()
#함수 분리 그리기
var('x')
f1(x)=-abs(x-3)
f2(x)=abs(x-3)
plot(piecewise([[(-3, 0), f1], [(0, 3), f2]]), (x, -3, 3)).show()
print("=====")
##극한·좌극한·우극한 구하기, 도함수 구하기, 접선의 방정식 구하기, 최대값·최소값 구하기, 적분
#극한·좌극한·우극한 구하기
var('x')
g(x)= (x/abs(x))*ln(abs(x))/(e^x+1)
print("limit of g(x)=", limit(g(x), x=0))
print("l.limit of g(x)=", limit(g(x), x=0, dir='-'))
print("r.limit of g(x)=", limit(g(x), x=0, dir='+'))
#도함수 구하기
var('x')
f(x)=cos(e^x-1)+sin(1-e^x)
print("derivative of f(x)=", diff(f(x), x))
print("2nd derivative of f(x)=", diff(diff(f(x), x), x))
print("3rd derivative of f(x)=", diff(diff(diff(f(x), x), x), x))
#접선의 방정식 구하기
var('x')
f(x)=x^5-3*x^4+sqrt(abs(x))
df(x)=diff(f(x), x)
y(x)=df(1)*(x-1)+f(1)
print("tangent line of f(x) at x=1:", y(x))
p1=plot(f(x), x, -1, 3, linestyle="--", color='blue')
p2=plot(y(x), x, -1, 3, color='red')
show(p1+p2)
print()
#최대값·최소값 구하기
var('x')
f(x)=x^5-x^3
plot(f(x), x, -1, 1).show()
print("derivative = 0:")
print(solve(diff(f(x))==0, x)) #-1/5*sqrt(5)*sqrt(3), 1/5*sqrt(5)*sqrt(3), 0
ma=max(f(-1/5*sqrt(5)*sqrt(3)), f(1/5*sqrt(5)*sqrt(3)), f(-1), f(1))
mi=min(f(-1/5*sqrt(5)*sqrt(3)), f(1/5*sqrt(5)*sqrt(3)), f(-1), f(1))
print("maximum of f in [-1,1]:", ma)
print("minimum of f in [-1,1]:", mi)
#적분
var('x')
f(x)=(e^x)/(x+3)
p1=plot(f(x), -1, 1, fill='axis')
p2=plot(f(x), -2, 2, color='red')
show(p1+p2)
print("integral of f in [-1,1]:", integral(f(x), x, -1, 1).simplify_full().n(digits=5))
print("=====")
##평면 그리기, 벡터 그리기, 내적·외적·사잇각 구하기
#평면 그리기
var('x, y, z')
implicit_plot3d(x+y+z==1, (x,-3,3), (y,-3,3), (z,-3,3))
#벡터 그리기
a = vector([0, 1])
b = vector([1, 0])
c = a + b
print(c)
plot(a, color='red')+plot(b, color='green')+plot(c, color='black')
#내적·외적·사잇각 구하기
a = vector([1, 2, 3, 4, 5, 6, 7])
b = vector([0, 1, 0, 1, 5, 6, 7])
print("inner product:", b.dot_product(a))
print("cross product:", b.cross_product(a))
print("theta(radian):", arccos(b.dot_product(a)/(a.norm()*b.norm())).n(digits=5))
print("=====")
##벡터함수 정의, 벡터함수 그리기
#벡터함수 정의
var('t')
r = vector([sin(2-t), cos(t^2), t])
#벡터함수 그리기
var('t')
r = vector([sin(2-t), cos(t^2), t])
C = parametric_plot3d(r, (t, -pi, pi), color='green', thickness=2)
Ar = arrow3d(r(t=0), r(t=0+0.1), color='red')
show(C+Ar)
print("=====")
##벡터도함수 구하기, 위치벡터·접선벡터 그리기, 곡선 길이 구하기
#벡터도함수 구하기
var('t')
r(t) = (sin(2-t), cos(t^2))
dr = diff(r(t), t)
print("r`(t) =", dr(t))
#위치벡터·접선벡터 그리기
var('t')
r(t) = (sin(t), cos(t))
dr = diff(r(t), t)
sp = r(0.1)
ep = dr(0.1)/abs(dr(0.1)) + r(0.1)
p = parametric_plot(r(t), (t, -pi, pi))
tv = line([sp, ep], color='red')
show(p + tv)
#곡선 길이 구하기
var('t')
r(t) = (sin(t), cos(-t), e^t)
dr = diff(r(t), t)
s(t) = dr.norm()
print("length of r(t) [-pi,pi]:", integral(s(t), t, -pi, pi).n(digits=5))
parametric_plot3d(r(t), (t, -pi, pi))
print("=====")
##편도함수 구하기, 2계편도함수 구하기, 연쇄법칙
#편도함수 구하기
var('x, y')
f(x, y) = 12*x^2 + 21*y^2 - 2*x*y
print("f_x(x, y) =", diff(f(x, y), x, 1))
print("f_y(x, y) =", diff(f(x, y), y, 1))
#2계편도함수 구하기
var('x, y')
f = e^x*cos(y) - e^y*x^2
print("f_xx =", diff(f, x, 2))
print("f_xy =", diff(f, x, y))
print("f_yx =", diff(f, y, x))
print("f_yy =", diff(f, y, 2))
#연쇄법칙
var('u, v, s, t')
x = cos(u)*e^v
y = -u+v
z = s*sin(t)
print("dz/du =", diff(z(s=x, t=y), u).simplify_full())
print("dz/dv =", diff(z(s=x, t=y), v).simplify_full())
print("=====")
##그래디언트·방향도함수·방향미분계수 구하기, 임계점 구하기, 극값 구하기-고유값·소행렬식
#그래디언트·방향도함수·방향미분계수·헤시안 구하기
var('x, y')
f(x, y) = x + 2*y^2 + 3*x^3
u = vector([cos(pi/4), sin(pi/4)])
gradf = f.gradient()
print("gradient of f =", gradf)
print("directional derivative Duf(x, y) =", gradf(x, y).dot_product(u))
print("directional derivative Duf(0, 0) =", gradf(0, 0).dot_product(u))
print("Hessian of f =")
print(f.hessian())
#임계점 구하기
var('x, y')
f(x, y) = x^3 - y^2 + 3*x*y
gradf = f.gradient()
print("critical point :")
print(solve([gradf[0]==0, gradf[1]==0], x, y))
#극값 구하기-고유값·소행렬식
var('x, y, z')
f(x, y, z) = x^3 - y^2 + z^3 - x + y - z
gradf = f.gradient()
print("critical point :")
print(solve([gradf[0]==0, gradf[1]==0, gradf[2]==0], x, y, z))
h = f.hessian()
H = [None]*5
H[1] = h(1/3*sqrt(3), 1/2, 1/3*sqrt(3))
H[2] = h(1/3*sqrt(3), 1/2, -1/3*sqrt(3))
H[3] = h(-1/3*sqrt(3), 1/2, 1/3*sqrt(3))
H[4] = h(-1/3*sqrt(3), 1/2, -1/3*sqrt(3))
for i, h in enumerate(H[1:], start=1):
print("eigenvalues of H%d =" %i, h.eigenvalues())
for i in range(1, h.ncols()+1):
H_principal_minor = h.submatrix(0, 0, i, i).det()
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
print("H1 indefinite (1/3*sqrt(3), 1/2, 1/3*sqrt(3)) 안장점")
print("H2 indefinite (1/3*sqrt(3), 1/2, -1/3*sqrt(3)) 안장점")
print("H3 indefinite (-1/3*sqrt(3), 1/2, 1/3*sqrt(3)) 안장점")
print("H4 negative definite (-1/3*sqrt(3), 1/2, -1/3*sqrt(3)) 극대")
실습 Comment: 벡터 외적 구할 때 5차원이 오류를 내면서 7차원은 된다고 해서 신기했습니다. 배운대로 실제로 극값을 판별해 보니 재미있었습니다.
45’[실습] 4주차 실습‘
##경사하강법-(steepest descent method), 경사하강법-(Newton's method)
##이중적분, 이중적분-변수구간, 삼중적분, 통계적분
##Jacobian, 변수변환, 극좌표 변수변환(변수변환후)
##경사하강법-(steepest descent method), 경사하강법-(Newton's method)
#경사하강법-(steepest descent method)
A = diagonal_matrix(RR, [15, 10, 5, 1])
b = vector(RR, [1, 2, 3, 4])
x0 = vector(RR, [0, .1, .2, 3])
d0 = -b
r = []
for i in range(0, 200):
if i%20==0: print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b))
d0n = d0.norm()
r.append((i, d0n))
if d0n <10^(-7):
break
w = A*d0
a = d0.inner_product(d0)/(d0.inner_product(w))
x1 = x0-a*d0
d1 = A*x1-b
x0 = x1; d0 = d1
print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b))
show(line2d(r) + point(r, color='red'))
#경사하강법-(Newton's method)
var('x, y')
tol=1e-8
f(x, y) = (x-3)^6+(x-3)^4*y^2 + (y+2)^2
gradf = f.gradient()
hessf = f.hessian()
x0 = vector(RDF, [2, -1])
g0 = gradf(x0[0], x0[1])
g0n = g0.norm()
print("x0 =", x0.n(digits=6), "f(x0) =", f(x0[0], x0[1]).n(digits=6))
k = 0
while g0n >tol:
h = hessf(x0[0], x0[1])
d0 = h.solve_right(-g0)
x0 = x0 + d0
k = k+1
print("x%d =" %k, x0.n(digits=6), "f(x%d) =" %k, f(x0[0], x0[1]).n(digits=6))
g0 = gradf(x0[0], x0[1])
g0n = g0.norm()
print("=====")
##이중적분, 이중적분-변수구간, 삼중적분, 통계적분
#이중적분
var('x, y')
f(x, y) = x^3*y^4
print("double integral dydx=", integral(integral(f, y, -1, 0), x, 1, 2))
print("double integral dxdy=", integral(integral(f, x, 1, 2), y, -1, 0))
#이중적분-변수구간
var('x, y')
f(x, y) = 1 + 2*y^2 + 3*y^3
print("double integral on x^2=", integral(integral(f, y, 0, x^2), x, -1, 1))
#삼중적분
var('x, y, z')
f = x^3 - y^2 + z
print("triple integral dxdydz=", integral(integral(integral(f, x, 0, 1), y, 0, 1), z, 0, 1))
#통계적분
var('x, y')
f = exp(-x)
print("integral e^(-x)=", integral(f, x, 0, infinity))
f = exp(-x^2)
print("integral e^(-x^2)=", integral(f, x, 0, infinity))
f = exp(-x^2-y^2)
print("integral e^(-x^2-y^2)=", integral(integral(f, y, 0, infinity), x, 0, infinity))
f = 1/9*exp(-(x+y)/3)
print("integral on [X+Y<1/2]=", integral(integral(f, y, 0, 1/2-x), x, 0, 1/2).n(digits=5))
print("=====")
##Jacobian, 변수변환, 극좌표 변수변환(변수변환후)
#Jacobian
var('u, v')
T = (u + 2*v^2, 3*u^2 + 4*v)
print("Jacobian =", jacobian(T, (u, v)).det())
#변수변환
var('x, y, u, v')
print("x(u,v), y(u,v)=")
print(solve([u == x-2*y, v == 2*x+3*y], x, y)) #x=3/7*u+2/7*v, y=-2/7*u+1/7*v
T = (3/7*u + 2/7*v, -2/7*u + 1/7*v)
J = jacobian(T, (u, v)).det()
f(x, y) = x*y + x^2 + y^2
print("double integral dudv=", integral(integral(f(T[0], T[1])*J, u, 0, 1), v, 2, 3))
#극좌표 변수변환(변수변환후)
var('r, theta')
f = 4*r
print("double integral drdθ=", integral(integral(f, r, 0, 2), theta, 0, pi))
정리 Comment: 경사하강법을 실습하여 다변수함수의 최소값을 구할 수 있게 되었습니다. 치환적분은 수작업을 해야 함을 느꼈습니다.
[2] [Final OK by SGLee] Q, A &Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정
[Final OK by SGLee] Q, A & Finalized by 이승재, 박상협, 박정호, 김정한, SGLee [HW] 벡터의 직교, Gram Schmidt 정규직교화 과정
Question. (By 박상협)
1. 정사영의 정의에서, y-p가 x에 직교하므로 (x) (y-p) = 0 이라고 하는데 이 부분이 왜 그런지 잘 이해되지 않습니다.
<--1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 두 벡터가 서로 직교할때 벡터의 내적이 0이 되는 이유가 궁금합니다. <--- 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
(선형대수학이 처음이라 기초가 많이 미흡합니다. 도와주시면 감사하겠습니다!)
Answer by SGLee.
1. 그림에서 보듯이 w = y-p 를 (Projection of y onto x 인) 벡터 p 와 직교가 되도록 잡았으니 ... p 와 w 그 둘의 내적을 구하면 당연히 영이 되는 것이랍니다. http://matrix.skku.ac.kr/2018-album/LA-Sec-7-7-lab.html 그렇게 직교 orthogonal 가 되도록 w 를 정의한 것입니다.
2. 이 개념이 2차원에서, 3차원으로 , 그리고 4차원으로 그대로 확장이 되어 G-S 정규 직교화법이 만들어 지는 것이랍니다. http://matrix.skku.ac.kr/2012-album/Gram-Schmidt.html
3. 관련 동영상은 아래 웹사이트를 참조하세요. (Korean) https://youtu.be/EBCi1nR7EuE (English) https://youtu.be/Px6Gaks9fXQ
Answer by 박정호
내적을 정의할 때 벡터의 각 성분끼리의 곱의 합으로도 표현할 수 있지만 a*b*cos@로도 표현할 수 있습니다. a, b는 벡터의 크기니까 0이 아니므로 내적이 0이라면 코사인 값이 0인 것이고 코사인을 0으로 만들어주는 각이 90도이기 때문에 수직이라고 볼 수 있습니다. 2차원, 3차원에서는 수식으로나 그림으로 증명할 수 있고 그 이상의 차원에서도 내적을 같은 식으로 정의할 수 있기 때문에 내적이 0이다라는 것은 직교를 의미합니다.
Answer by 김정한
내적을 표현할 때는 x 보다 ⋅(dot 기호)를 사용하는게 바람직해 보입니다. w를 y에서 x방향으로의 성분(p)을 제외한 부분으로 생각하고 p는 x를 스칼라배한 것이므로 둘의 내적은 0입니다[직교].
이러한 직교 상황에 벡터의 내적이 0인 이유는 위에 박정호 학우분 말씀 처럼 두 벡터 각각의 크기에 두 벡터가 이루는 각도의 cos값을 곱한 스칼라 값으로 나타내 줄 수 있기 떄문입니다. 즉 cos(90degree)=0이고 직교할 때의 내적의 결과 값은 0임을 알 수 있습니다.
Comment by 이승재
- 박상협 학우님께서 질의 해 주신 부분은 제가 정사영이라는 개념을 처음 접하였을때 당시 어려움을 겪었던 부분 중 하나 입니다.
답변 해 주신 분들이 잘 설명해 주셔서 이해가 한층 더 되었던 것 같습니다.
(부족한 부분은 개인적으로 찾아 보아 정사영에 대한 이해도를 높일 수 있도록 하겠습니다.)
[3][Final OK by SGLee] Q by 김정한 A by 이상구 교수님 F by 김정한 댓글 by 채희준 : [2주차] 선형변환에 대한 개념 정리 및 질문 <-- 답 입니다.
[1]선형 변환
입력과 출력이 모두 벡터인 함수를 변환(Transformation)이라 한다.
[2]선형 변환의 조건
[3] 핵(kernel)
개념 정의만으로는 이해가 조금 안되어 간단한 예제를 가지고 설명해보고자 한다.
예를 들어 2차원 상에 선형 변환 T:R2->R2, T(x,y)=(x-y,0)에 대하여
ker T를 구해보면, ker T={(x,y) ∈ R2 l (x-y,0)=(0,0)}
={(x,y) ∈ R2 l y=x}이다.
다시 말해 R2안에 있는 직선 y=x가 T의 kernel이 되는 것이다.
[4] 단사와 전사, 전단사
[5] 선형변환이 단사일 필요충분조건
Q1. R^n 에서 R^n 으로 보내는 모든 선형변환을 R^n 위의 선형 연산자 라고 부르나요? 답: Yes
예를 들어 R^2에서 x축, y축 또한 원점을 지나는 임의의 직선에 대한 대칭 변환 모두 선형 연산자라고 부를 수 있는 것일까요? 답: Yes
답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
답: 복잡한 치역에서 생각해야 할 거리/크기에 관한 함수 T(x) 에 대한 모든 연구를
이미 모두 알고 있는 간단한 정의역에서 해도 되는 엄청난 장점이 있습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다.특히 T가 단사일 떄는 왜 ker T={0}인가요?
답: http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-8.html 에 증명 있습니다.
[증명]
교수님 답변에 추가적인 의견을 내보았습니다.
Q1. 임의의 직선에 원점을 지나는 임의의 직선에 대한 대칭 변환이 모두 선형 연산자라는 것은 아래와 같은 증명으로 판명이 가능합니다.
이러한 단순 직선 뿐만 아니라 층밀림 변환이라는 것도 존재한다는 것을 파악할 수 있었습니다.
예를 들어 위와 같은 변환은 각 점을 x축을 따라 ky 만큼 평행이동 시킨 것이라고 알 수 있습니다.
Q2. R^n 에서 R^m 으로 보내는 선형 변환에서 길이보존(isometry)가 가지는 메리트가 정확히 무엇인가요? 연산이나 변환 예측에 용이해서인가요?
: 예시로 R^2를 생각해보면, R^2에서 길이를 보존하게 되면 선형변환의 이미지가 단위 원 안에 머물러 있어, 일반적으로 연구가 쉬워진다고 생각하게 되었습니다.
Q3. R^n 에서 R^m 으로 보내는 선형 변환이 단사일 필요충분조건이 왜 저렇게 나오는지 조금 이해가 어렵습니다.특히 T가 단사일 떄는 왜 ker T={0}인가요?
:
첫번째 증명: Ker T에 임의의 벡터가 있다고 하면 T(v)=0 인데 T(0)은 언제나 0이다. 이 때 T가 단사이므로(단사의 정의에 의해) v=0라고 말할 수 있다. 결론적으로 ker T={0}이다.
두번째 증명: 만일 T(v1)=T(v2)에서 T(v2)를 뺴주면 0=T(v1)-T(v2)로 표현해줄 수 있다. 또 T는 선형 변환이므로 T(v1)-T(v2)=T(v1-v2)로 풀어쓸 수 있다. 그렇다면 v1-v2는 ker T 안에 있고, ker T에는 {0}-> 영벡터 하나밖에 없으므로 v1-v2는 영벡터이고 v1=v2가 될 수 밖에 없다. 따라서 T는 단사라고 할 수 있다.
개념 출처: 인공지능을 위한 기초수학 [교재]
[4] [3주차] 일변수함수와 미적분 내용정리 및 실습
점점 x=-pi/2에 근사해가 가까워지는 양상을 볼 수 있었다.
*최댓값과 최솟값의 정리
:f(x)가 폐구간 [a,b]에서 연속이면 이 구간에서 f(x)가 최댓값을 취하는 점 및 최솟값을 취하는 점이 존재한다.
[3]적분
: 어떤 구간에서 정의된 함수 f(x)에 대하여 이 구간의 모든 x에 관하여 F'(x)=f(x)를 만족하는 함수 F(x)가 존재할 때 F(x)를 f(x)의 원시함수 또는 부정적분이라고 한다.
f(x)가 주어졌을 때 그 부정적분 F(x)를 구하는 것을 f(x)를 적분한다고 한다.
*평균값의 정리[적분]
*리만합과 적분
즉 일정한 간격이 작아질수록(n->infinite로 갈수록) 리만합은 그 구간에서 적분값과 유사해진다.
이러한 양상을 좀 더 명확히 보이기 위해 실습을 해보았다.
[실습]
f(x)=x^2-5x+11를 두고 [0,6]을 적분하면 48이라는 적분값이 나온다.
이 떄 n=5 , n=10, n=15일 때 리만합의 값을 구해보았다.
점점 리만합이 (n이 커질수록) 적분값과 유사해지는 양상을 볼 수 있었다.
[5][Finalized by 나종진] 4주차 질문 적분영역이 직사각형이 아닌 이중적분에 대한 질문 답변 by. 김호연, 박은아,김정한, SG LEE
연속함수의 2중적분의 경우 적분영역이 직사각형이 아닌경우 문제입니다.
Q1. 이 그림에서 y=2-2x를 적분하여 D를 구하고 한번 더 구분구적을 사영하여 z축 4까지 구해서 사면체의 부피를 구하는 것으로 이해했습니다. 이게 맞는 이해인가요?
Q2. 위의 문제에서 xy-축 상의 적분영역 R 이라고 되어 있는데 이 부분이 이해가 되지 않습니다.
저는 이 문제를 2-2y^2을 y 로 적분하고 x 로 적분하는 방법으로 글로 쓰기에 어렵지만 적분 기호가 어디있는지 몰라 (적분)이라고 적겠습니다. (이부분은 찾아서 수정해두겠습니다)
(적분)1~-2 [2y-1/3y^3]1-x~0 dx
해서 2-2x-1/3(1-x)^3을 1~-2까지 적분을 하는 것으로 이해했습니다. 그리고 답도 같게 나왔습니다.
그렇게 이해했지만 저 1-x 그래프의 -2~1까지의 저 적분부분 삼각형 모양의 저 그림이 무엇을 나타내는지 이해가 되지 않습니다.
혹시 무엇을 나타내는 것입니까?
1번 질문 그림
1596729959431.jpg
2번 질문 그림
1596729961024.jpg
final
A1. 적분을 두번 하여 부피를 구하는 것이 맞다.
이를 이용하여 통계에서 부피 등을 쉽게 구할 수 있다.
A2. 1번 문제의 그림처럼 1-x그래프의 삼각형 모양 위로 부피를 나타내는 그림이다.
comment.
교재와 강의를 통해 부족한 내용을 학우분과 공유하면서 함께 알아가서 좋았다.
온라인 OH시간에 생각지도 못하게 정답을 배울 수 있어서 매우 뜻깊었다.
[6][Final OK by SGLee] Q and finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
[Final OK by SGLee] Q and finalized by 김정한, 박은아, 정원철, 천가영 [3주차] 다변수함수와 미적분(1) 내용정리 및 질의
1.벡터와 공간 기하
2.편도함수와 그래디언트
*편도함수란?
아래의 그림을 예시로 생각해보면 점 P에서의 곡선 APB의 접선의 기울기는 이 점에서의 x에 관한 z의 변화율이고, 점 P에서의 곡선 CPD의 접선의 기울기는 이 점에서의 y에 관한 z의 변화율이다.
3.연쇄법칙
*정의 [방향도함수,그래디언트,헤시안]
: u=(u1,u2)를 단위벡터(크기가 1인 벡터)라 하자. 그러면 점 (a,b)에서 u방향으로의 f의 방향도함수는 아래와 같이 정의 된다.
4.극대, 극소, 안장점
*기본적인 극대, 극소 [최대, 최소]의 의미
:(a,b) 근방의 모든 (x,y)에 대하여 f(a,b)>=f(x,y)이 성립하면, f(x,y)는 (a,b)에서 극대가 되고, f(a,b)를 극댓값이라 한다.
마찬가지로 (a,b) 근방의 모든 (x,y)에 대하여 f(a,b)<=f(x,y)이 성립하면, f(x,y)는 (a,b)에서 극소가 되고, f(a,b)를 극솟값이라 한다.
이 때 f(x,y)의 정의역의 모든 (x,y)에 대하여 f(a,b)>=f(x,y)[or f(a,b)<=f(x,y)]이 성립하면 f(x,y)는 (a,b)에서 최대[최소]가 되고, f(a,b)를 최댓값[최솟값]이라 한다.
* Fermat의 임계점 정리
:f가 (a,b)에서 극대 또는 극소가 되고, f의 편도함수가 존재하면
fx(a,b)=0 fy(a,b)=0이 성립한다. ->∇f(a,b)=0
질의
1.
이 정리가 이해가 되지 않습니다. 왜 fxy와 fyx가 존재하고 연속이면 둘의 값이 같은 것인가요?
2. 정확히 방향도함수가 의미하는 것이 무엇인지 모르겠습니다. 이미 존재하는 스칼라장에서 어느 특정한 포인트에서의 기울기를 그래디언트라고 하고 임의로 단위벡터 u를 선정해 이 둘을 내적하면 방향도함수를 구할 수 있는데, 이러한 계산이 이미 설정되어있는 스칼라장과 각각의 점들의 그래디언트에서 제가 원하는 방향으로의 벡터를 설정하여 f가 어느 특정 방향에 따라 빠르게 증가하고 감소하는지를 보이기 위함이라고 말할 수 있을까요? (그렇다면 방향도함수는 제가 설정한 방향[벡터]를 통해서는 f가 얼마나 변하는지 즉 변화율을 나타내는 것인가요?) 제 이해가 맞는지 모르겠습니다.
[7][Final OK by SGLee] Finalized by 김정한 [4주차] 다변수함수와 미적분(2) 내용정리 및 실습 by 김정한
1] Gradient Descent Algorithm
:이러한 방식의 기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다.
-> 경사하강법은 탐색방향을 현재의 위치 xk의 근방에서 가장 가파르게 하강하는 방향 dk=-∇f(xk)로 사용한다. 그러나 이 경우 해 근처에서 zigzag현상이 발생하여 마지막 단계에서 수렴속도가 많이 늦어진다.
*뉴턴 방법
->그러나 뉴턴 방법은 헤시안을 계산해야 하므로 변수 n이 큰 함수의 경우 혜시안을 계산하는 데 많은 연산이 필요하여 효과적이지 않을 수 있다. 그리고 초기 근사해 x1이 문제의 해 x*의 근방에 있어야만 뉴턴 방법이 수렴한다는 보장이 있으나, 이는 미리 알 수 없으므로 실제 뉴턴 방법을 적용할 때는 step-size ak>0도 같이 고려한다. 즉 적절한 line search를 동반한다. 그 후 x(k+1)을 계산한다.
[2] 중적분
직사각형 영역 R=[a,b]X[c,d] = {(x,y) ∈R^2 l a<= x <=b, c<=y <= d} 에서 f(x,y)의 이중적분은 다음과 같이 정의된다.
[실습]
변수변환의 명확한 이해를 위해 실습 예제를 하나 풀어보았다.
∬7xy dx dy (R에서) 를 구하는 것이고
R은 xy 평면 상의 네 직선 x-2y=0, x-2y=2, 2x+3y=0, 2x+3y=3으로 둘러싸인 평행사변형이다.
영역 R의 경계는 x-2y=0, x-2y=2, 2x+3y=0, 2x+3y=3이므로 변수변환은 다음과 같이 줄 수 있다.
x-2y=u, 2x+3y=v, u=0,u=2,v=0, v=3
-> x=(3u+2v)/7 , y=(v-2u)/7 로 표현해줄 수 있고
야코비안은 = 1/7이다.
즉 이중적분은
1/7 * ∬ (3u+2v)(v-2u)l1/7l du dv = -3/7이 나온다.
sage로 본래의 영역 R과 계산 값을 나타내어보면 아래와 같다.
comment: 경사하강법이 어떠한 알고리즘으로 적용되는지 알 수 있었다. 특히 wolfe condition에서 xk에서 x k+1로 이동할 때 함숫값이 충분히 감소해야한다는 것과 너무 작은 ak는 배제하여 알고리즘이 적절한 진전을 이루도록 하는 것을 알 수 있었는데 함숫값이 감소해야한다는 명확한 목적성과 적절한 진전을 이루도록 하는 효율성을 찾아볼 수 있었다. 또한 이중적분에서 직각좌표계에서 극좌표로의 변환을 암기식으로 외우기만 했는데 이번 활동을 통해 왜 그러한 변환을 보이는지 변수변환을 통해 알 수 있었다.
[8] Final OK by SGLee [Finalized by 박진형] 실습 및 질문 '<적분 관련하여 개발한 도구들> 작성자 : 이상구(LEE SANGGU) ' by 박진형, 김정한, 이상구(LEE SANGGU) 교수님
Final OK by SGLee [Finalized by 박진형] 실습 및 질문 '<적분 관련하여 개발한 도구들> 작성자 : 이상구(LEE SANGGU) ' by 박진형, 김정한, 이상구(LEE SANGGU) 교수님
적분 도구 실습 (<적분 관련하여 개발한 도구들> by 이상구 교수님)
[1번째 코드 실습]
코드:
@interact
def _(a=((1,10,0.1)),x_range=range_slider(-10,10,1,(-4,4), label='X Range'),y_range=range_slider(-10,10,1,(-5,5), label='Y Range')):
f(x)=3*x^3-a*(x-1/2)-5
F=integral(f(x),x)
xm, xma = x_range
ym, yma = y_range
print (F)
P=plot(f, (x,xm,xma),ymin=ym, ymax=yma, fill=true)
show(P)
[2번째 코드 실습]
코드:
@interact
def _(a=((1,10,0.1)),x_range=range_slider(-10,10,1,(-5,5), label='X Range'),y_range=range_slider(-10,10,1,(-5,5), label='Y Range')):
f(x)=arctan(x)
F=integral(f(x),x)
xm, xma = x_range
ym, yma = y_range
print (F)
P=plot(f, (x,-4,4),xmin=xm,xmax=xma,ymin=ym, ymax=yma, fill=true)
show(P)
[3번째 코드 실습]
코드 :
html("<i> <b> Numerical Integration Methods : 수치적 적분 시각화 <p></p> </b>" )
import scipy
import numpy
from scipy.special.orthogonal import p_roots, t_roots, u_roots
from scipy.integrate import quad, trapz, simps
from sage.ext.fast_eval import fast_float
from numpy import linspace
show_weight_graph=False
# 'Hermite': {'w': e**(-x**2), 'xmin': -numpy.inf, 'xmax': numpy.inf, 'func': h_roots},
# 'Laguerre': {'w': e**(-x), 'xmin': 0, 'xmax': numpy.inf, 'func': l_roots},
methods = {'Legendre': {'w': 1, 'xmin': -1, 'xmax': 1, 'func': p_roots},
'Chebyshev': {'w': 1/sqrt(1-x**2), 'xmin': -1, 'xmax': 1, 'func': t_roots},
'Chebyshev2': {'w': sqrt(1-x**2), 'xmin': -1, 'xmax': 1, 'func': u_roots},
'Trapezoid': {'w': 1, 'xmin': -1, 'xmax': 1,
'func': lambda n: (linspace(-1r,1,n), numpy.array([1.0r]+[2.0r]*(n-2)+[1.0r])*1.0r/n)},
'Simpson': {'w': 1, 'xmin': -1, 'xmax': 1,
'func': lambda n: (linspace(-1r,1,n),
numpy.array([1.0r]+[4.0r,2.0r]*int((n-3.0r)/2.0r)+[4.0r,1.0r])*2.0r/(3.0r*n))}}
var("x")
def box(center, height, area,**kwds):
width2 = 1.0*area/height/2.0
return polygon([(center-width2,0),
(center+width2,0),(center+width2,height),(center-width2,height)],**kwds)
@interact
def weights(n=slider(1,30,1,default=10),f=input_box(default=3*x+cos(10*x),type=SR),
show_method=["Legendre", "Chebyshev", "Chebyshev2", "Trapezoid","Simpson"]):
ff = fast_float(f,'x')
method = methods[show_method]
xcoords,w = (method['func'])(int(n))
xmin = method['xmin']
xmax = method['xmax']
plot_min = max(xmin, -10)
plot_max = min(xmax, 10)
scaled_func = f*method['w']
scaled_ff = fast_float(scaled_func, 'x')
coords = zip(xcoords,w)
max_weight = max(w)
coords_scaled = zip(xcoords,w/max_weight)
f_graph = plot(scaled_func,plot_min,plot_max)
boxes = sum(box(x,ff(x),w*ff(x),rgbcolor=(0.5,0.5,0.5),alpha=0.3) for x,w in coords)
stems = sum(line([(x,0),(x,scaled_ff(x))],rgbcolor=(1-y,1-y,1-y),
thickness=2,markersize=6,alpha=y) for x,y in coords_scaled)
points = sum([point([(x,0),
(x,scaled_ff(x))],rgbcolor='black',pointsize=30) for x,_ in coords])
graph = stems+points+f_graph+boxes
if show_weight_graph:
graph += line([(x,y) for x,y in coords_scaled], rgbcolor='green',alpha=0.4)
show(graph,xmin=plot_min,xmax=plot_max,aspect_ratio="auto")
approximation = sum([w*ff(x) for x,w in coords])
integral,integral_error = scipy.integrate.quad(scaled_ff, xmin, xmax)
x_val = linspace(min(xcoords), max(xcoords),n)
y_val = map(scaled_ff,x_val)
trapezoid = integral-trapz(y_val, x_val)
simpson = integral-simps(y_val, x_val)
html("$$\sum_{i=1}^{i=%s}w_i\left(%s\\right)= %s\\approx %s =\int_{-1}^{1}%s \,dx$$"%(n,
latex(f), approximation, integral, latex(scaled_func)))
error_data = [trapezoid, simpson, integral-approximation,integral_error]
print "Trapezoid: %s, Simpson: %s, \nMethod: %s, Real: %s"%tuple(error_data)
show(bar_chart(error_data,width=1),ymin=min(error_data), ymax=max(error_data))
[4번째 코드 실습]
코드:
html("<i> <b> Interactive Fourier Series: Fourier Series 시각화 <p></p> </b>" )
html("<i> <b> Posted by WalkingRandomly on 14 Jul 2012<p></p> </b>" )
def ftermSquare(n):
return(1/n*sin(n*x*pi/3))
def ftermSawtooth(n):
return(1/n*sin(n*x*pi/3))
def ftermParabola(n):
return((-1)^n/n^2 * cos(n*x))
def fseriesSquare(n):
return(4/pi*sum(ftermSquare(i) for i in range (1,2*n,2)))
def fseriesSawtooth(n):
return(1/2-1/pi*sum(ftermSawtooth(i) for i in range (1,n)))
def fseriesParabola(n):
return(pi^2/3 + 4*sum(ftermParabola(i) for i in range(1,n)))
@interact
def plotFourier(n=slider(1, 30,1,10,'Number of terms')
,plotpoints=('Value of plot_points',[100,500,1000]),Function=['Saw Tooth','Square Wave','Periodic Parabola']):
if Function=='Saw Tooth':
show(plot(fseriesSawtooth(n),x,-6,6,plot_points=plotpoints))
if Function=='Square Wave':
show(plot(fseriesSquare(n),x,-6,6,plot_points=plotpoints))
if Function=='Periodic Parabola':
show(plot(fseriesParabola(n),x,-6,6,plot_points=plotpoints))
여러 함수의 정적분 값을 계산해낼 수 있는 도구입니다. 매우 활용도가 높은 도구라고 생각되었습니다.
구분구적법의 등분수 n을 점차 늘려감에 따라 이차함수의 l정적분 값 - 구분구적법 값l, 즉 오차가 줄어듦을 알 수 있었습니다.
n을 10으로 했을 떄 error 는 4.86이었고 n을 30으로 하니 error는 0.54였고 n을 50으로 늘리니 error는 0.1944였다.
n이 커질수록 오차는 작아지는 것을 그래프를 직접 보면서 구분구적법을 공부한다면 이해가 매우 쉽고 빠를 것이라고 생각하였고
그렇기에 중,고등학교 학생들에게 매우 유용할 도구라고 생각되었습니다.
위에서 보면 동일한 함수를 구분구적법 하는데 end point rule 만을 변경하면서 진행해보았습니다.
endpoint 가 midpoint, left, right, upper, lower 일 때로 나뉘는데, 이 모든 경우에서 각각의 l정적분 값 - 구분구적법 값l, 즉 오차가 달랐습니다.
위의 설정된 함수의 경우에는 error 가 midpoint rule 을 사용할 때 가장 작았고 upper point rule 을 사용할 때 error 가 가장 컸습니다.
이는 일반적이기보다는 각각의 함수에 따라 error 가 가장 작은 end point rule 이 있을 것입니다.
위와 같은 다양한 실습들을 진행해보았고 위에 나와있지 않더라도 그 외의 다른 다양한 실습 또한 진행해보았습니다.
직접 그래프의 변화를 관찰하면서 공부를 하면 그 이해가 훨씬 쉬울 것이라고 또 한번 느꼈습니다.
마지막 실습으로 하나 질문을 드리자면 위에서 a 가 의미하는 것이 무엇인지 알 수 있을까요?
코드를 봐도 이해가 되지 않습니다.
그래프에서도 a를 변화시키면서 관찰해보았지만 아무런 변화가 일어나지 않았습니다.
혹시 제가 놓치거나 빠트린 무언가가 있는것인가 하여 질문드립니다.
[9]Final OK by SGLee [Final] 그래디언트와 전자기학 by 김정한 finalized by 김정한
Final OK by SGLee [Final] 그래디언트와 전자기학 by 김정한 finalized by 김정한
[1]그래디언트의 의미
3차원 공간에서의 Gradient이다.
수식을 살펴보면 Del f가 벡터가 된 것을 알 수 있다.(f는 스칼라장)
즉 Gradient는 어떠한 scalar function f의 증가율이 최대가 되는 방향과 얼마나 증가하는지를 벡터 하나에 담아내기 위한 수학적 도구이다.
[2]전자기학에서의 활용
그래디언트의 활용에 들어가기에 앞서
먼저 전위와 전기장에 대해 개략적으로 파악할 필요가 있다.
전위란?
(electric potential)
:전기장 내에서 단위 전하가 갖는 '위치 에너지'
전기장 E내에서 단위 전하q를 P점으로 이동시키려면 중심 전하와 척력이 생기므로 에너지가 필요하다. 전하를 이동시킬때 외부에서 단위전자에 해준 일만큼 단위전자는 에너지 보전의 법칙에 의해 전기 위치에너지를 갖게 된다. 그러므로 단위전하 q는 처음 지점에서보다 이동지점인 P지점에서 더 높은 위치에너지를 갖는다
좀 더 우리에게 친숙한 용어는 전위 보다는 전압일 것이다.
이 때 전압이 바로 단위 전하가 갖는 위치 에너지의 '차이'이다.
(전압에 의해 전류가 흐른다.)
전기장이란?
전하 Q 주위에 있는 다른 전하 q는 쿨롱의 법칙에 따라 Q로부터 힘을 받는다. 이 힘을 다른 관점에서 보면 전하 Q가 주변 공간의 성질을 바꾸었고, 바뀐 공간이 전하 q에 힘을 준다고 묘사할 수 있다. 전기장은 이렇게 바뀐 공간의 성질을 수학적으로 표시한 것이다.
정량적인 이해를 위해 큰 양의 전하 Q와 양의 점전하 q가 있는 경우를 생각하자. 이 때 점전하 q가 있는 위치에서의 전기장 벡터, 즉 E는 점전하 q에 작용하는 전기력 F를 시험전하 q로 나눈 양으로 정의한다.
이처럼 전위와 전기장이라는 것이 존재하고 이 두가지 개념은 (정확히는 전위'차'와 전기장)
이와 같은 관계를 가진다.
위 식으로부터 우리는 dV(전위차의 미소 증가량)=-E·dL로 표현할 수 있고 또한 편미분의 연쇄 법칙에 따르면
이 성립하므로
임을 고려하면
이므로, 벡터로 전기장 E를 표현하면
3차원 공간 상에서 위와 같은 식이 성립한다.
즉 더 깔끔하게 정리를 하면 E= - ∇V 라는 식을 얻을 수 있는 것이다.
즉 전기장이 전위의 음의 기울기벡터로서의 역할을 한다.
출처: Introduction to Engineering Electromagnetics (Yeon Ho Lee)
위키 백과 (전위, curl , divergence)
[+더 알아보기]
Del operator
위에서 보았듯이 scalar function에 del operator를 붙이면 gradient를 표현할 수 있었다.
허나 del operator은 gradient뿐만 아니라 다른 곳에서도 활용이 가능한데
대표적으로 divergence와 curl을 찾아볼 수 있었다.
Divergence
벡터 미적분학에서 발산 또는 divergence는 벡터장이 정의된 공간의 한 점에서의 장이 퍼져 나오는지, 아니면 모여서 없어지는지의 정도를 측정하는 연산자이다. 명확한 정의는 부피에 비해 작은 영역의 표면을 지나는 벡터장의 순흐름이며 닫힌 평면의 면적분은 밖으로 빠져나오는 벡터 flux의 합을 나타낸다.
벡터장의 divergence는 각 지점에서 다음과 같은 스칼라 값을 갖는 스칼라 함수가 된다.
위와 같은 식은 결국 ∇ · F 로 쓰일 수 있다.
(직교좌표계에서 연속이고 미분가능한 벡터장을 F=Fx i + Fy j + Fz k로 정의되어있을 때 )
Curl
Curl은 3차원 벡터장을 다른 3차원 벡터장으로 대응시키는 1차 미분 연산자의 하나이다. 수식에서는
'∇ X' 로 나타낸다.
이 curl의 경우 직교 좌표계에서
로 표현되는 기호 행렬식이다.(F=F1i+F2j+F3k -> 어떠한 벡터장)
comment: 이번에 미적분 강의를 들으면서 gradient말고도 흥미로운 수학적 도구들이 있는데 강의 자체에서는 다루지 못하는게 다소 아쉬워 내용을 추가해 보았다.
만일 프로젝트를 기획하게 된다면 현재 복수전공하고 있는 전기전자공학에서 미적분을 베이스로 하여 실제 어떤식으로 위와 같은 개념들이 사용되고 이해(혹은 적용)될 수 있는지를 알아보고 싶다. 개인적으로 단순히 개념만 보는 것보다 이와 같이 실제 사용되는 용도를 통해 이해하는 것이 더 흥미롭다고 느꼈다.
정리(4개)
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
29’3주차 다변수함수의 극대극소판정법 정리‘
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
41’4주차 Gradient Descent Algorithm 추가 정리‘
18’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
SVD를 공부하면서 알아야 할 것들이 무엇이 있는지 정리할 필요성을 느껴 정리해 보았습니다. 조금이나마 도움 되길 바랍니다.
1. 와 는 항상 대칭행렬이다. 각각 , 정사각행렬이다.
2. 와 에 대하여 0 아닌 고유값이 서로 같다.
3. 의 고유값은 모두 0보다 크거나 같다.
4. 의 rank와 의 rank는 같다.
5. n차정사각행렬 와 가 직교닯음 ⇔ 인 직교행렬 가 존재.
6. 직교대각화가능 한 n차정사각행렬 ⇔ 는 대칭행렬 ⇔ 는 n개의 일차독립인 고유벡터를 가짐 &서로 다른 고유값에 대응하는 고유벡터들은 서로 직교.
7. 에서, 직교대각화가능한 n차정사각행렬 의 직교대각화하는 는 의 정규직교화된 고유벡터 를 열로 갖는 직교행렬, 는 대각선성분으로 의 고유값 을 갖는 대각선행렬.
8. 와 는 항상 대칭행렬이므로, 와 는 항상 직교대각화가 가능.
○ 임의의 행렬 는 SVD를 통하여 로 분해된다는 것입니다.
는 singular value와 singular vector를 가지는데, 가 의 singular value 를 갖고 있고, 와 가 의 singular vector ,를 열로 갖고 있습니다.
그러면 , , 를 구해봅시다.
는 를 직교대각화하는 직교행렬입니다. 를 구할 때는 의 고유값(의 고유값이 아닙니다)과 고유벡터를 구하고, 고유벡터를 정규직교화하여, 그것을 열(right singular vector )로하는 행렬로 를 구하게 됩니다.
이 때 고유값을 같이 구했으므로, 이 고유값의 square root인 singular value 를 대각선성분으로 하는 대각선행렬 를 함께 구하게 됩니다. singular value 를 단조감소하도록 배치하여 와 를 구해야 합니다.
는 를 직교대각화하는 직교행렬입니다. 를 구할 때와 같이 하기 보다, 이미 구해 놓은 와 를 이용합니다. 를 구할 때는 를 열(left singular vector )로하는 행렬로 를 구하게 됩니다.
이로써 , , 를 구했습니다.
○ 이제, 왜 singular value 는 고유값의 square root이고, 의 대각선성분으로 고유값이 아닌 singular value 를 갖는지 알아보겠습니다.
직교대각화가능한 와 이를 직교대각화하는 직교행렬 로부터, 무엇이 와 직교닮음인지 알 수 있습니다.
와 가 직교닮음인 것입니다.
를 직접 계산해보면 입니다.
즉, 입니다.
마찬가지로, 와 는 직교닮음이고, 입니다.
singular value 가 왜 고유값의 square root인지 알아보겠습니다.
직교대각화가능한 의 , 여기에서는 가 대각선성분으로 의 고유값 을 갖는 대각선행렬이 됩니다. (7.을 떠올립시다)
따라서 의 식이 세워지게 되고 singular value 는 의 square root, 가 되는 것입니다.
마찬가지로, 의 대각선성분으로 고유값 이 아닌 singular value 를 갖는 이유는, 가 대각선성분으로 고유값 를 가지는 것이고, 는 대각선성분으로 singular val ue 를 갖게되는 것이기 때문입니다.
이로써, 왜 singular value 는 고유값의 square root이고, 의 대각선성분으로 고유값이 아닌 singular value 를 갖는지 알아보았습니다.
○ 저는 singular value 가 고유값의 제곱근이라는 사실을 듣고, 고유값은 음수일수도 있는데 어떻게 되는거지라고 생각했는데, 3.의 성질이 있음을 알고나서 의 고유값은 양수 또는 0이니 제곱근을 가질 수 있음을 이해하였고, 더불어서 SVD에서 쓰이는 고유값은 의 고유값이 아닌 의 고유값임을 다시금 깨닫게 했던 좋은 기회였습니다. 또, 에서 책에서는 이 의 rank라고 적혀 있어서 이건 가 아니라 와 관련있는것이 아닌가 했는데 4.의 성질을 보고 이해하게 되었습니다. 등등 왜 이렇게 되는지 이해가 명확히 되지 않다가 1.~4.의 성질이 있음을 알게 된 후 각 개념의 연결이 선명해지는 느낌을 받았습니다. 5.~8.은 배웠던 것을 정리한 것입니다. 아무쪼록 제가 이해한대로 설명한 것이 SVD를 이해하는데 도움이 되었으면 좋겠습니다. 틀린 것이 있다면 알려주세요. 감사합니다.
도움 받았던 자료입니다.
https://people.sc.fsu.edu/~jburkardt/classes/gateway_2014/lecture_week09.pdf
29’3주차 다변수함수의 극대극소판정법 정리‘
○ Taylor 정리에서 시작합니다.
미적분학에서 Taylor 정리를 로 배웠습니다.
이 Taylor 정리를 다변수함수로 확장하면 가 됩니다.
이차근사식은 Taylor 정리에서 3번째 항인 이차항까지만을 가져온 것인 입니다.
다변수함수와 이차근사식의 관계는 근방에서 입니다.
(책에서는 대신 입니다.)
(책의 부분에서 대신 를, 대신 를 넣으면 이차근사식과 유사한 식이 나올 것입니다.
입니다.)
○ 이제 다변수함수의 극대극소판정법을 알아보겠습니다.
극대극소판정법은 다변수함수 의 2계편도함수가 임계점 에서 연속일 때 적용 가능합니다.
임계점은 인 점입니다. 이차근사식이 *가 됩니다.
'의 이차형식'을 찾게 되는데, 이는 '의 이차근사식의 이차형식'을 말합니다. 이 부분입니다.
(이 부분은 책에 나와 있습니다: 부호만이 중요하므로 앞의 계수를 떼어냅니다. 와 를 적용하여, 의 이차형식은 입니다.)
이 의 이차형식 안의 (의 부호) 또는 (의 부호)로 다변수함수의 극대극소판정을 하는 것입니다.
○ 그렇다면, 이차형식으로 어떻게 함수의 극대극소를 판정할 수 있다는 것일까요?
식 *으로부터 입니다. 는 상수이므로, 만이 의 극대극소를 설명할 것입니다.
앞 강의에서 배웠듯이, 가 positive definite ⇔ . 네, 근방의 들은 인 것입니다. 는 극소입니다.
마찬가지로, 가 negative definite ⇔ 이므로, 근방의 들은 인 것입니다. 는 극대입니다.
가 indefinite ⇔ 에 따라 또는 이므로, 의 방향에 따라 근방의 들이 보이는 행태가 달라집니다. 는 극대극소이 아닌 saddle-point입니다.
(극대값, 극소값으로 써야 할 곳도 극대, 극소로 표현하였습니다.)
이렇게 이차형식으로 함수의 극대극소를 판정할 수 있는 이유를 알아봤습니다.
○ 정리 Comment: 처음에 책에서 Taylor 정리가 나왔을 때, 식을 이해하기 어려웠습니다. 여러 자료들을 보고 정리하여 Taylor 정리로부터 나온 이차근사식을 이해할 수 있었고, 이를 시작점으로 하여 다변수함수의 극대극소판정법의 원리(특히, 이차형식과 극대극소판정의 연결고리)를 이해할 수 있었습니다. 이번 정리가 도움이 되었으면 좋겠습니다. 틀린 부분이 있다면 알려주세요. 감사합니다.
참고한 자료들 입니다.
https://www.cs.princeton.edu/courses/archive/fall18/cos597G/lecnotes/lecture3.pdf
http://www.math.jhu.edu/~jmb/note/localmax.pdf
https://people.maths.bris.ac.uk/~maxmr/opt/multvar.pdf
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘
º Gradient Descent Algorithm은 함수 f(x)의 최소값을 음의 gradient로 반복하여 구하는 방법입니다.
함수 f(x)는 최대최소값 정리(최소→극값또는경계값), 제약조건이 없는 조건(최소→극값), Fermat의 임계점 정리(극값→∇f=0)에 의해 그 최소값을 ∇f=0에서 찾을 수 있습니다.
(∇f=0에는 최소값, 극소값, 안장점이 있으므로 최소값만이 아닌 극소값 또는 안장점에 수렴할 수 있습니다.)
복잡한 함수 f(x)에 대해서는 ∇f=0의 해를 구하는 것이 어려우므로, 앞에서 근을 구하기 위해 뉴턴방법을 이용한 것 처럼 반복근사하여 ∇f=0의 근을 찾아가는 Gradient Descent Algorithm을 적용하게 됩니다.
º Gradient Descent Algorithm의 핵심은 에서 방향과 크기를 찾는 것입니다. 이 될 때까지 입니다.
방향 는 로 찾으면 Gradient Descent Method, 로 찾으면 Conjugate Gradient Method, 로 찾으면 Newton Method 입니다.
크기 를 찾는 것을 line search라고 합니다. 크기 를 찾기 위한 방법으로 ① exact line search ② inexact line search가 있습니다.
º 이 그림을 먼저 보겠습니다.
[출처: 교재 http://matrix.skku.ac.kr/math4ai/part2/]
축부터 보겠습니다. x축은 찾아야 할 , y축은 함수값 인 좌표평면입니다.
곡선을 보겠습니다. 곡선은 인 그래프입니다. 여기서 방향 는 함수값 를 가장 가파르게 감소시키는 로 이미 정해진 값입니다. 일 때 값을 갖습니다. 에서 방향 로 얼마나 뻗어나가야 최소를 찾을 수 있을까?를 알고자 함수값 과 대응해 그린 그래프입니다.
를 찾기 위해 ① exact line search를 적용한다면 저 그래프의 최소점에 대응하는 로 를 바로 찾게 되는 것입니다. 대게 cost가 많이 드는 방법입니다. (여기서 최소값을 찾은 것은 아닙니다.)
º 다음으로 저 빨강, 초록, 파랑선을 설명하기 위해 알아야 할 내용을 상기시켜보겠습니다.
방향도함수(방향미분계수)는 입니다. 한 점 에서의 기울기는 가 됩니다.
직선방정식은 입니다.
입니다.
빨강선을 보겠습니다. 빨강선의 기울기는 입니다. 빨강선의 직선방정식은 입니다.
초록선과 파랑선의 기울기는 빨강선의 기울기에 각각 와 을 곱한 값입니다. 이므로 빨강선보다 완만한 초록선, 초록선보다 완만한 파랑선이 될 것입니다.
초록선을 보겠습니다. 초록선의 기울기는 입니다.
파랑선을 보겠습니다. 파랑선의 기울기는 입니다. 파랑선의 직선방정식은 입니다.
º 를 찾기 위한 ② inexact line search는 Wolfe condition 과 를 만족하는 로 를 찾습니다.
조건 (1)은 파랑선 밑으로 를 찾아야 한다는 것입니다. 접점에서의 를 로 합니다. 조건 (2)는 초록선 의 기울기보다 한 점에서의 기울기가 더 커야 한다는 것입니다. 그 를 라 합니다.
그러면, 는 에서 하나의 값을 고르는 것입니다.
이상으로 Gradient Descent Algorithm을 정리하였습니다.
º 오늘 배운 Gradient Descent Algorithm은 한 번에 이해하기 정말 어려운 알고리즘이었습니다. 그래프를 해석하면서 Wolfe condition의 의미를 알 수 있어서 좋았습니다. inexact line search에 대해서 잘 알게 되었습니다. 틀린 것이 있다면 꼭 알려주세요. 감사합니다.
41’4주차 Gradient Descent Algorithm 추가 정리‘
º 다음은 교재 예제 에서
exact line search(steepest-descent method)를 수행하여
어떻게 를 유도해 내었는지를 정리합니다.
조건은 와 입니다.
에서 와 를 찾아야 합니다.
예제에서는 exact line search를 하면서 steepest-descent method를 사용하였습니다.
이고 이 함수에서는 입니다.
(일변수함수와 비교하면 이해 되실 겁니다. )
이제 를 구하기 위해서, 를 에 대하여 전개합니다. (exact line search는 를 최소화하는 를 찾습니다.)
*은 가 symmetric이므로 성립합니다.
이제 를 에 대하여 미분합니다.
인 가 를 최소화합니다. (가 positive definite이기 때문에 최소화입니다.)
즉,
네, 맞습니다. 는 입니다.
정리하면, steepest descent method에서 가 positive definite symmetric인
simple quadratic function의 는 입니다.
º정리하면서 Gradient Descent Algorithm에서 exact line search를 어떻게 하는지 예제를 통해 알게 되었습니다.
큰 도움을 받은 자료입니다.
https://ocw.mit.edu/courses/sloan-school-of-management/15-084j-nonlinear-programming-spring-2004/lecture-notes/lec5_steep_desce.pdf
풀이(2개)
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’
47’[중간고사 과제] 열린문제 4문제‘
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’
[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이
[HW 10문제 풀이 by 김진웅] 기초수학 입문 열린문제 풀이
Solved by 김진웅
Finalized by 장환승
Final OK by SGLee
[열린문제 1] 다른 교재에서 찾은 몇 가지 다항함수의 개형을 그리시오.
(1) (2)
[열린문제 2] 그래프의 개형을 그리시오.
[열린문제 3] 앞에서 배운 함수들 중 학습한 함수의 합성함수를 만들고, 그래프를 그리시오.
[열린문제 4] 다음 학생들의 문제풀이를 참고하여 다양한 방정식의 (근사)해를 구하시오.
(1) (2)
-0.7199997828641306 0.9986407863870402 1.8571838602077428 4.536403654973528
[열린문제 5] 행렬에 대해 학습한 다른 교재의 행렬 연산을 시행해 보시오.
A, B, C, k에 대하여 A - B, k*A + B, A*C*B를 수행하였습니다.
A = random_matrix(ZZ, 6, 7, x=-100, y=100)
B = random_matrix(ZZ, 6, 7, x=-100, y=100)
C = random_matrix(ZZ, 7, 6, x=-10, y=10)
k = ZZ.random_element(x=-100, y=100)
print("A =")
print(A)
print("B =")
print(B)
print("C =")
print(C)
print("k =", k)
print()
print("A - B =")
print(A - B)
print("k*A + B =")
print(k*A + B)
print("A*C*B =")
print(A*C*B)
[열린문제 6] 인터넷이나 다른 교재에서 5차 (이상) 행렬을 찾아서, 전치행렬과 역행렬이 존재하는지를 확인하고, 존재하면 찾아보시오.
7X7행렬 A에 대하여 전치행렬과 역행렬을 찾아봤습니다.
A = matrix([[1, 2, 3, 4, 5, 6, 7], [1, 2, 4, 8, 16, 32, 64], [2, 3, 5, 7, 11, 13, 17],
[0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1]])
print("A =")
print(A)
print()
print("A^T =")
print(A.transpose())
print()
print("A is invertible?")
print(A.is_invertible())
if A.is_invertible():
print("inverse of A =")
print(A.inverse())
[열린문제 7] 거리 척도를 사용하여 유사도를 계산할 수 있는 데이터의 종류에는 어떤 것이 있는지 생각해보시오.
데이터의 속성 간 비율(데이터의 방향)보다는 그 속성 자체의 절대량이 중요한 데이터들이 있습니다. 이들은 거리 척도로 유사도를 계산할 때 그 유사도가 유의미합니다.
대표적인 예로, 위치좌표 데이터가 있습니다.
[열린문제 8] 위의 거리 척도로 유사도를 판단하기가 용이하지 않은 데이터의 경우에 유사도를 판단하는데 사용이 가능한 다른 척도는 무엇이 있을지 생각해보시오.
데이터의 속성 간 비율만을 계산하는 각도 척도가 있습니다.
[열린문제 9] 두 개의 7차원 벡터(데이터) 사이의 거리(distance)를 직접 구하시오.
랜덤한 7차원 벡터의 거리를 구했습니다.
a = random_vector(ZZ, 7, x=-100, y=100)
b = random_vector(ZZ, 7, x=-100, y=100)
print("a =")
print(a)
print("b =")
print(b)
print()
print("dist(A, B) =", (a - b).norm())
[열린문제 10] 어떤 데이터들이 코사인 유사도를 사용하여 분석 가능할지 생각해보시오.
데이터의 속성 간 비율만이 중요한 데이터들이 코사인 유사도를 사용할 때 그 값이 유의미합니다.
대표적인 예로 색의 색상(Hue)이 있습니다.
[열린문제 11] 두 개의 5차원 데이터(벡터) 사이의 내적과 사잇각 를 구하시오.
랜덤한 5차원 벡터로부터 내적과 사잇각(radian과 degree)을 구했습니다.
a = random_vector(ZZ, 5, x=-100, y=100)
b = random_vector(ZZ, 5, x=-100, y=100)
ab = a.inner_product(b)
an = a.norm()
bn = b.norm()
cos_sim = ab/(an*bn)
ang = arccos(cos_sim)
print("a =")
print(a)
print("b =")
print(b)
print()
print("a.b =", ab)
print("||a|| =", an)
print("||b|| =", bn)
print("cosine similarity =", cos_sim.n(digits=3))
print("angle(rad) =", ang.n(digits=3))
print("angle(degree) =", (ang*180/pi).n(digits=3))
[열린문제 12] 다른 교재의 선형 연립방적식의 해를 위의 명령어로 구하시오.
랜덤한 5x5 행렬 A와 5차 벡터 b를 이용하여 Ax=b의 해를 구하고 다시 Ax를 계산하여 검산했습니다.
A = random_matrix(ZZ, 5, 5, x=-10, y=10)
b = random_vector(ZZ, 5, x=-10, y=10)
print("A =")
print(A)
print("b =")
print(b)
print()
print("x =", A.inverse()*b)
print("x =", A.solve_right(b))
print()
print("b =", A*A.solve_right(b))
[열린문제 13] 주어진 선형연립방정식이 유일해를 갖는지, 무수히 많은 해를 갖는지, 해가 존재하지 않는지를 판단하는 것은 첨가행렬의 RREF를 구하여 이것만 자세히 보면 바로 판단이 가능한 이유를 설명하시오.
RREF의 가장 큰 특징은 leading 1을 보고 leading variable(해당 행에 leading 1이 있음)과 free variable(해당 행에 leading 1이 없음)를 한눈에 구분해 낼 수 있음과 동시에 leading variable간 연관성이 제거된 해, 각 leading variable이 free variable로만 이루어진 해를 한눈에 파악할 수 있다는 것입니다. 이로 하여금 leading variable이 없는 첫 행이 있다면 그 행의 마지막 성분이 0이 아닐 때에는 해가 존재하지 않고, 그렇지 않다면 free variable이 하나라도 존재하면 무수히 많은 해를 갖고, free variable 없이 leading variable만이 존재한다면 유일해를 갖게 되는 것입니다.
[열린문제 14] 평면의 6개의 점에 (best fit 하는) 3차의 최소제곱곡선 을 구할 수 있음에 대하여 토론하시오.
6개의 데이터를 3차함수에 대입하여 나온, 3차함수의 계수 a, b, c, d를 미지수로 갖는 6개의 선형방정식을 묶어 선형연립방정식을 만들면 그 행렬형태는 6x4 계수행렬 A와 4x1 벡터 u의 곱은 6x1 벡터 y라는 식으로 표현됩니다. Au=y에 대한 최소제곱해는 입니다. 서로 다른 6개의 점에 대하여 계수행렬 A의 열벡터들 은 일차독립을 이룹니다. 따라서 A가 full column rank이므로 A^tA가 가역이 되고. 6개의 점에 대하여 3차 최소제곱곡선을 구할 수 있습니다. 이와 같이, n개 이상의 서로 다른 점이 있다면 위의 최소제곱해를 이용하여 n차 최소제곱곡선을 구할 수 있습니다.
[열린문제 15] 다른 교재에서 찾은 선형연립방정식의 최소제곱해를 구하시오.
선형연립방정식의 최소제곱해
def gs_orth(A):
m, n = A.nrows(), A.ncols()
r = A.rank()
if m <n:
raise ValueError("The number of rows must be larger than the number of columns.")
elif r <n:
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt()
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)])
R1 = Q1*A
Q = simplify(Q1.transpose())
R = simplify(R1)
return Q, R
A = matrix([[1, -1, 4], [1, 4, -2], [1, 4, 2], [1, -1, 0]])
b = vector([4, 1, -1, 3])
Q, R = gs_orth(A)
print(R.solve_right(Q.transpose()*b))
[열린문제 16] 다른 교재에서 찾은 행렬의 특잇값 분해(SVD)를 구하시오.
의 SVD ,,
A = matrix(RDF, [[1, 2, 3], [4, 5 ,6]])
U,S,V = A.SVD()
print("A = ")
print(A)
print("U = ")
print(U.n(digits=2))
print("S = ")
print(S.n(digits=2))
print("V = ")
print(V.n(digits=2))
print("USV^t = ")
print((U*S*V.transpose()).n(digits=2))
47’[중간고사 과제] 열린문제 4문제‘
[열린문제 1] 다른 교재에서 찾은 (연속) 미분가능한 함수의 3계 도함수(3rd derivative)를 구하시오.
의 3계도함수
코드입니다.
var('x')
f(x)=e^(sin(x))
print("derivative of f(x)=", diff(f(x), x))
print("2nd derivative of f(x)=", diff(diff(f(x), x), x))
print("3rd derivative of f(x)=", diff(diff(diff(f(x), x), x), x))
derivative of f(x)= cos(x)*e^sin(x)
2nd derivative of f(x)= cos(x)^2*e^sin(x) - e^sin(x)*sin(x)
3rd derivative of f(x)= cos(x)^3*e^sin(x) - 3*cos(x)*e^sin(x)*sin(x) - cos(x)*e^sin(x)
손으로 푼 것과 일치합니다.
[열린문제 2] 주어진 구간에서 두 번 미분가능한 함수를 골라서 그 함수의 극댓값, 극솟값 및 그 구간에서의 최댓값, 최솟값을 찾아보시오.
의 극댓값 0 at x=0, 극솟값 -108/3125 at x=2/5, 최댓값 0.00121 at x=1.1, 최솟값 -108/3125 at x=2/5
코드로 풀었습니다.
var('x')
f(x)=x^5-3*x^4+3*x^3-x^2
show(plot(f(x),(x,-0.1,1.1)))
print(solve(diff(f(x))==0, x)) # x=2/5 x=1 x=0
print("local maximum of f at 0:", f(0))
print("local minimum of f at 2/5:", f(2/5))
ma=max(f(2/5), f(0), f(-0.1), f(1.1))
mi=min(f(2/5), f(0), f(-0.1), f(1.1))
print("global maximum of f in [-0.1,1.1]:", ma)
print("global minimum of f in [-0.1,1.1]:", mi)
[
x == (2/5),
x == 1,
x == 0
]
local maximum of f at 0: 0
local minimum of f at 2/5: -108/3125
global maximum of f in [-0.1,1.1]: 0.00121000000000038
global minimum of f in [-0.1,1.1]: -108/3125
[열린문제 3] 함수 의 최솟값을 구하시오. 단 =0 , eta=0.1 , epsilon=10^-6 으로 한다.
의 최솟값 4.64
Gradient Descent Method로 풀었습니다.
var('x')
f(x)=9*x^2-7*x+6
#Gradient Descent Method
A = diagonal_matrix(RR, [18])
b = vector(RR, [7])
c = 6
eta = 0.1
epsilon = 10^(-6)
x0 = vector(RR, [0])
d0 = -b
r = []
for i in range(0, 200):
if i%20==0: print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c)
d0n = d0.norm()
r.append((x0[0], 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c))
if d0n <epsilon:
break
a = eta
x1 = x0-a*d0
d0 = A*x1-b
x0 = x1
print(i, x0, 1/2*x0.inner_product(x0*A)-x0.inner_product(b)+c)
show(plot(f(x),(x,0,1)) + point(r, color='red'))
0 (0.000000000000000) 6.00000000000000
20 (0.384405305259862) 4.63906981158831
40 (0.388837196689053) 4.63888891293764
60 (0.388888292918401) 4.63888888889209
71 (0.388888940082364) 4.63888888888891
71번째에 tolerance안으로 들어옵니다.
[열린문제 4] 다양한 미분가능 함수인 경우, 일단 그래프의 개형을 그리고, 눈으로 확인되는 극솟값을 포함하는 작은 구간들을 정한다. 임의의 미분가능한 함수를 골라서 그 후, 각각의 구간에서 시작점을 잡아 경사하강법을 적용한다. 결과값(output)에 대하여 토론하시오.
김진웅: gradient descent method는 search direction 와 step-size 를 잘만 잡아준다면 발산하지 않고 정해 놓은 최소값·극소값에 수렴할 것입니다. 그렇지 않으면 발산을 하거나 다른 최소값·극소값에 수렴하거나 최소값·극소값이 아닌 안장점에 수렴할 수 있습니다. 문제에서, 각각의 작은 구간들이 다른 최소값·극소값과 안장점을 포함하지 않고 경사하강법의 와 를 잘 정의하면 모든 결과값은 정해 놓은 최소값·극소값에 수렴할 것입니다.
[https://ruder.io/optimizing-gradient-descent/index.html#visualizationofalgorithms]
질문(5개)
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
9‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
17’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
34’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
[HW 질문] 열공간, 행공간, 영공간 사이의 관계
질문 by 김진웅
답변 by 정환승, 유가이올렉산드르
Finalized by 김진웅
행렬 A와 열공간 Row(A), 행공간 Col(A), 영공간 Null(A) 사이의 관계
의 증명을 알고 싶습니다.
장환승(2016****69)7월 19일 오전 12:09
u라는 벡터가 Null(A)에 속하는 벡터라고 하고 v라는 벡터는 Row(A)에 속하는 벡터라고 하면, A^T = [w1 w2 ... w(n)] 이라고 하면 (크기가 n) v = a1w1 + a2w2 + .... + a(n)w(n) v = (A^T)a a^T = [a1 a2 .... a(n)] u*v(내적) = (u^T)v = (u^T)(A^T)a = ((Au)^T)a = (0^T)a = 0 따라서 Row(A) ㅗ Null(A) 입니다. ^T 는 transpose 를 의미합니다.
Finalized by 유가이 올렉산드 [HW 질문 ] 열공간 , 해공간 , 영공간 사이의 관계
질문 by 김진웅
답변 by 장환승
추가답변 및 Finalized by 유가이 올렉산드르
Q: 행렬 A와 열공간 Row(A), 행공간 Col(A), 영공간 Null(A) 사이의 관계
의 증명을 알고 싶습니다.
참고: http://matrix.skku.ac.kr/LA-Lab/7-2/7-2.htm
http://matrix.skku.ac.kr/LA-K/Ch-7/
주어진 행렬의 기본 공간들 사이의 관계
● Col(), Col()=Row(,
● Row()Null(), Null()Row(),
● Col()Null( ), Null( )Col()
http://matrix.skku.ac.kr/nla/rank-review/Reciew-rank.htm
Main Theorem Let TFAE
(1) A가 invertivle
(2) det A 0
(3) A ~ (row equivalent)
(4) A는 Elementary matricces의 product
(5) PA=LDU with all 0
(6) Ax=b has a solution
(7) N(A)={0}
(8) A의 col's가 가 L.I
(9) C(A) =
(10) A has a left inverse
(11) rank A = n
(12) A의 row's가 L.I
(13) R(A)=
(14) A has a right inverse
(15)* L.T A : via A(x)=Ax 가 단사
(16)* 위의 L.T가 전사
(17)* 0은 A의 고유값이 아니다,
A:
u 라는 벡터가 Null(A)에 속하는 벡터라고 하고
v 라는 벡터는 Row(A)에 속하는 벡터라고 하면,
A T = [w1 w2 ... w(n)] 이라고 하면 (크기가 n )
v = a 1 w 1 + a 2 w 2 + .... + a n w n
v = (A T )a
a T = [a 1 a 2 .... a n ]
u*v(내적 ) = (u T )v = (u T )(A T )a = ((Au)T )a = (0 T )a = 0
따라서 Row(A)⊥ = Null(A) 입니다.
T 는 transpose 를 의미합니다.
추가 답변 :
► 아래에 증명에도 참고하세요 .
1) Prove that, Row(A)⊥ = Null(A)
Prove:
2) Prove that, Col(A)⊥ = Null(A T )
Prove:
Final Comment: 두 학우분의 답변으로 행공간의 perp가 영공간이고, 열공간의 perp가 transpose의 영공간임을 증명을 통해 잘 알게 되었습니다. 감사합니다.
9‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
[HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법
질문 by 김진웅
답변 by 이재화, 전재현, 이상구
Finalized by 김진웅
선형연립방정식 Ax=b에 대하여 mxn(m>=n) 계수행렬 A가 full column rank이면 QR분해를 통해 쉽게 최소제곱해를 구할 수 있습니다.
그렇다면, A가 full column rank가 아닌 경우는 어떤 것이 있을까요? 예컨대 식(데이터)이 미지수보다 부족하여 m<n인 경우가 있을 것입니다. 이 외에 A의 열벡터들이 서로 일차독립이지 않는 경우로 어떤 예가 있을까요?
또, 이렇게 A가 full column rank가 아닌 경우에는 어떤 방법으로 쉽게 최소제곱해를 구할 수 있을까요?
이재화 7월 19일 오전 1:27
A가 full column rank가 아닌 경우 A의 SVD를 이용하여 구할 수 있습니다.
전재현(2015****91)7월 19일 오전 3:23
1. 정사각행렬의 경우 열이 일차독립이지 않은 경우는 det A= 0인 행렬들이 모두 예가 될 수 있습니다. 2. 즉 정사각행렬의 경우, 역행렬이 존재하지 않거나, 하나의 열벡터를 나머지 열벡터들의 일차결합으로 표현할 수 있다거나 등등입니다. 이 경우 열벡터들이 서로 일차독립이지 않는 예가 됩니다. 무수히 많은 예가 있습니다. <잘못 생각하고 있는게 있다면 답변 부탁드립니다. <--- 잘 이해 하셨습니다.>
이상구(LEE SANGGU)7월 19일 오전 5:22
1. 선형연립방정식 Ax=b에 대하여 mxn(m>=n) 계수행렬 A가 full column rank가 아닌 경우는 ... 이재화 박사님 의견대로 SVD 를 이용하면 됩니다. 2. 그리고 이런 경우... A가 full column rank가 아닌 경우에는 ... 쉽게 생각하면 ... 먼저 A^T 의 REF 를 구하여, 일차독립인 벡터들을 구분하고, 나머지 일차종속인 벡터들 ... 즉 대응하는 열 column 중에서 일차종속인 것들은 ... 다 제외하고 .. 남은 Full column rank 갖는 (부분) 행렬 (submatrix)에 QR분해를 하는 아이디어를 적용하여... 답을 구하고... 그 답이 원래 문제 에 어떤 의미를 주는 답인지 ... Re -interpretation 하시면 됩니다. SVD 나 일차종속인 열을 제외하고 ... 알고리즘을 적용하는 ... 이런 기법들을 이용하여 ... 필요로 하는 ... 최적해를 구할 수 있습니다. 3. 이 외에 A의 열벡터들이 서로 일차독립이지 않는 경우로 어떤 예가 있을까요? <--- 무수히 많은 예가 있습니다.
Final Comment: 선형연립방정식의 계수행렬이 full column rank가 아닌 경우로 'det A=0' 등 무수히 많은 예가 있고, 그러한 경우에는 SVD(고유값분해)를 이용하거나 일차종속인 열을 제외하는 방법을 이용하여 최적해를 구하게 된다는 것을 배웠습니다. 감사합니다.
16’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
[HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원
질문 by 김진웅
답변 by 유가이올렉산드르, 이상구
Finalized by 김진웅
어떤 행렬 A 와 B 가 주어졌을 때 ...
서로 같은 (중근의) 고유값에 대응하는 (일차독립인) 고유벡터들이 이루는 부분공간 (eigenspace) 의 차원이 다를 때가 있는데 ...
어떻게 구분하여 알 수 있나요?
A 의 닮은 대각선행렬 :
B 의 닮은 대각선 행렬 : 라는 의미는? 무엇인가요?
유가이올렉산드르(2018****33)7월 21일 오전 2:58
Let's try to analyze the given example.
The first matrix "D = ([[1, 0], [0, 1]])" has two eigenvalues (1 and 1) but they are obviously not distinct. Since A is the identity matrix, Av=v for any vector v, i.e. any vector is an eigenvector of A. We can thus find two linearly independent eigenvectors (say <-2,1> and <3,-2>) one for each eigenvalue.
But, the second matrix "D = ([[1, 0], [1, 1]])" also has non-distinct eigenvalues of 1 and 1. All eigenvalues are solutions of (A-I)v=0 and are thus of the form <t,0>. Hence, in this case there do not exist two linearly independent eigenvectors for the two eigenvalues 1 and 1 since <t,0> and <s,0> are not linearly independent for any values of s and t.
Remark 1: Every eigenvalue with multiplicity = n will be associated with n different (as in linearly independent) eigenvalues.
Multiplicity is how many "times" it shows up as an eigenvalue. It is like when you find only one solution to a second degree equation, which always has two roots. This solution has a multiplicity = 2.
Remark 2: If a matrix has more than one eigenvector the associated eigenvalues can be different for the different eigenvectors.
Geometrically, the action of a matrix on one of its eigenvectors causes the vector to stretch (or shrink) and/or reverse direction.
이상구(LEE SANGGU)7월 21일 오전 4:17
Good.
1. 답은 Ax = lamda x 의 해공간의 차원 은 2 이고, Bx = lamda x 의 해공간의 차원은 1 이 라는 의미입니다.
즉, A 의 고윳값 1은 고유공간의 차원은 2 이고, B의 고유공간의 차원은 1 이라는 의미입니다.
고유공간(eigenspace) 에 대하여 좀 더 알아봅시다.
2. 더 자세히 설명하자면
행렬에 대응하는 고유값들은 여러분들이 이미 알고 있는 (대수적) 중복도를 가질 수 있습니다.
지금 물어본 그리고 유가이 군이 아주 자세히 준 설명은 , 고윳값에 대한
기하적 중복도 (Geometric multiplicity) 라는 새 개념 입니다.
1. 고윳값에 대응하는 기하적중복도는 그 고윳값에 대응 하는 일차독립인 고유벡터들의 개수 를 의미 합니다. 또 고윳값 lamda 에 대해 Ax = lamda x 의 해공간의 차원도 lamda 의 기하적 중복도 와 일치 합니다. 그래서 기하적 중복도는 연립 방정식을 풀어서 구하면 됩니다.
3. 즉 위의 둘이 기하적 중복도에 대한 같은 정의 입니다.
4. 여러분들은 지금 단계에서는 대충 그렇게만 알고 지나가시고, 보통 선형대수학
입문의 9장 Jordan 표준형 http://matrix.skku.ac.kr/JCF/ 배울때 Jordan 표준형을 구하라는 문제를 풀면서
자동으로 각 고윳값의 기하적 중복도를 한눈에 확인 합니다.
더 자세한 내용은 JCF 에서 천천히 배우면 됩니다.
5. JCF 은 명령어 하나로 쉽게 구하도록 만들어 두었습니다. http://matrix.skku.ac.kr/JCF/
5. 그것을 보시면 각 고윳값에 대응하는 Jordan block 의 개수가 그 고윳값의 기하적 중복도 임을 너무 쉽게 알 수 있습니다.
인공지능 기초수학 에서는 그 정도 만 아시면 됩니다.
스스로 진지하게 인공지능에 필요한 수학 내용을 스스로
깨우쳐가는 좋은 질문과 답을 하는 여러분들을 Respect
합니다. ^^
Final comment:
위에 D_1 의 고유값 1은 대수적 중복도가 2, 기하적 중복도가 2이고,
밑에 D_2의 고유값 1은 대수적 중복도가 2, 기하적 중복도가 1인 것이군요.
기하적 중복도라는 새 개념이 있다는 것과 JCF를 배우면 기하적 중복도를 알 수 있다는 것을 알았습니다.
모두 좋은 답변들 감사드립니다.
17’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
[HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬
질문 by 김진웅
답변 by 이상구
Finalized by 김진웅
Q1. (Euclidean) isometry와 직교행렬은 어떠한 관계를 가지나요?
Q2. (Euclidean) isometry의 표준행렬이 항상 직교행렬이 되나요?
이상구(LEE SANGGU)7월 21일 오후 2:00
먼저 동형 사상(同型寫像, isomorphism, iso는 같다는 의미고 morphism은 mapping의 의미입니다.)은 서로 구조가 같은 두 대상 사이에, 모든 구조를 보존하는 사상이다.
에 대하여는 http://matrix.skku.ac.kr/knou-knowls/cla-week-14-sec-9-3.html 을 보시기 바랍니다. Isometry (iso는 같다는 의미고 metry 는 metric 즉 거리 라는 의미입니다. 따라서 거리를 보존한다는 의미입니다.) 이 둘은 다른 용어인데 혼동하신 듯합니다.
isometry 는 길이를 보존한다는 의미이고, isomorphism 은 구조를 보존하는 mapping 입니다. 차이가 있습니다.
Q1. 그렇다면, (Euclidean) isometry 동형 사상(同型寫像, 문화어: 동형넘기기, 영어: isomorphism) 과 직교행렬은 어떠한 관계를 가지나요?
<--- Q1. 답. 우선 (Euclidean) isometry 를 의미하는 것은 동형 사상(同型寫像, 문화어: 동형넘기기, 영어: isomorphism) 과 는 다른 개념입니다.
그리고 직교행렬은 길이를 보존 하는 (Euclidean) isometry 함수의 한 예입니다.
따라서 질문을 틀렷습니다. 맞는 질문은
(Euclidean) isometry 와 직교행렬은 어떠한 관계를 가지나요? 라는 질문이면
정답은 직교행렬은 길이를 보존 하는 (Euclidean) isometry 함수의 한 예입니다. 다 맞는 답니다.
Q2. (Euclidean) isometry 동형사상의 표준행렬이 항상 직교행렬이 되나요?
답. (Euclidean) isometry 함수가 항상 직교행렬 (또는 Unitary 행렬) 이 되는 것은 아니지만,
반대로 직교행렬 (또는 Unitary 행렬) 은 항상 (Euclidean) isometry 함수 입니다.
Final Comment
동형사상은 거리를 보존하는 것이 아니라 `구조`를 보존하는 변환이라는 것,
`거리`를 보존하는 변환으로 isometry(등거리변환)라는 용어를 쓴다는 것,
직교행렬은 항상 등거리변환의 표준행렬이 된다는 것과 등거리변환은 선형변환이 아닐 수 있으므로 표준행렬이 존재하지 않을 수도 있다는 것을 알았습니다.
등거리변환이 선형변환이어서 표준행렬을 갖게 될 때, 그 표준행렬이 직교행렬이 되지 않는 예로 어떤 것이 있는지 궁금합니다.
좋은 답변 감사드립니다.
34’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
[질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프
질문 by 김진웅
답변 by 박정호, 전재현
Finalized by 김진웅
임계점에서 함수의 극대극소가 됨을 판단할 때 함수의 Hessian 행렬이 positive definite, negative definite, indefinite 임에 따라 극소, 극대, 안장점이 됨을 배웠습니다.
그렇다면, (1)positive semidefinite이나 (2)negative semidefinite이 될 때 극대극소를 판별하는 방법과 그려지는 그래프 그리고 (3)indefinite가 (양,음)일 때와 (양,음,영)일 때 극대극소를 판별하는 방법이나 그려지는 그래프가 차이나는지 궁금합니다.
박정호 (2014****10)8월 1일 오후 5:08
1. positice definite와 같이 극소를 가집니다. 아래로 볼록한 이차함수를 앞뒤로 길게 늘린 모양을 생각해 보세요.
2. 1과 마찬가지로 위로 볼록한 이차함수를 쭉 늘린 모양이므로 극대를 가집니다.
3. 0이 포함될 때는 xy평면과 평행한 방향으로 쭉 늘어지는 그림이 그려질 것입니다.
전재현 (2015****91)8월 1일 오후 5:30
3. Hessian 행렬의 고유값에 양, 음 모두 존재할 경우에는 안장 모양의 쌍곡포물면(hyperbolic paraboloid)이 그려지며, 고윳값중 하나가 0이면 함수 의 모습은 포물기둥 모양의 그래프가 그려집니다. (http://matrix.skku.ac.kr/math4ai/part2/ 임계점 파트 참고)
Final Comment: semidefinite인 경우에도 definite의 경우와 같이 극대극소를 갖는다는 것과, 그 모양은 0을 포함한 경우에도 평면 상의 그래프가 공간 상에서 길게 늘어진 모양을 한다는 것을 알게 되었습니다.
답변(21개)
3‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’
8‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’
10‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘
15’[Final OK by SGLee] finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
21’[해결] SAGE 질문 SyntaxError‘
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘
28’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘
30’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘
31’finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘
33’[Final OK by SGLee] [3주차] 요약 및 질문’
36’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘
37’[Final OK by SGLee] finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘
43’[Final OK by SGLee] final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘
3‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’ : Norm의 정의를 설명함.
Final OK by SGLee with 권서영 [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구
질문 by 이동현
답변 by 김진웅 , 나종진, 임동선, 이재화, 이상구
Finalized by 채희준
Q : llXll 으로 표현되는 노름의 값이 X*X로 표현되는 내적의 값과 동일하게 x1 x2 ..... xn 의 값을 제곱한 것으로 표현되는것 같은데 왜 내적이 노름의 제곱 (llXll)2 으로 표현되는지 이해가 안됩니다. 그리고 노름의 개념이 함수에서 길이를 표현하는 개념인것 같은데 내적은 어떤 개념으로 표현될 수 있는지 궁금합니다.
A :
김진웅(2015****73)7월 17일 오전 11:44
Norm의 정의 ||x|| = sqrt(x1^2 + ... +xn^2) 내적의 정의 x.y = x1y1 + .. +xnyn x.x = x1x1 + ... + xnxn = (sqrt(x1x1 + ... + xnxn))^2 = (||x||)^2
나종진(2017****17)7월 17일 오후 12:15
노름은 길이를 표현하는 개념이지만 내적은 어떤 개념인지 교재에 나오지 않아서 저도 내적을 어떤 개념으로 이해해야될지 고민이었습니다. 저는 내적을 각도 개념으로 이해했습니다. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
여기에 코시-슈바르츠 부등식 아래 정의를 보게되면 x·y=||x||*||y||*cosΘ 라고 나와있어 저는 각도의 개념으로 이해했습니다. 도움이 되셨으면 좋겠습니다.
임동선(2017****79)7월 17일 오후 12:55
엄밀하게 말하면 대칭성, 선형성, 정부호를 만족하는 벡터공간을 내적공간이라고 합니다.
그 중에 가장 대표적인 것이 R^n 에서 위와 같이 정의된 것 입니다. 또한 주어진 내적 공간에 대해서 노름을 정의를 할 수 있습니다. 위와 같이 노름을 정의하면 잘 정의된 노름이고, 위의 경우는 두 값이 같습니다.
이재화 7월 17일 오후 5:17
1. 직관적으로 노름은 벡터의 길이, 내적은 두 벡터 사이에 이루는 각을 정의하는 개념이라고 생각하면 됩니다.
2. 노름과 내적은 주어진 데이터가 얼마나 유사한지를 비교하는데 사용되는데 각각 사용하는 척도가 다릅니다.
3. 두 데이터 사이의 거리로 유사성을 비교할 때 노름이 사용되고, 두 데이터 사이의 패턴(방향)만 관심있을 때에는 두 벡터 사이의 각으로 유사성(코사인 유사도)을 비교합니다. 이때 내적이 사용됩니다. [참고] http://matrix.skku.ac.kr/math4ai-intro/W3/
4 . 내적을 활용한 코사인 유사도는 자연어 처리에도 사용된다고 합니다. [참고] https://wikidocs.net/24603
이상구(LEE SANGGU)7월 17일 오후 11:27
실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다.
추가 답변 및 정리 : http://matrix.skku.ac.kr/math4ai/ 에서 인용
정의. |
의 노름(norm, length, magnitude) |
의 벡터 에 대하여
을 의 노름(norm, length, magnitude)이라 한다.
정의. |
[내적(Euclidean inner product, dot product)] |
의 벡터 , 에 대하여 실수
을 와 의 내적 (Euclidean inner product, dot product)이라 하고 로 나타낸다. 즉
= =
이 두 정의를 비교하면,
▪
노름의 제곱은 내적과 같음을 확인할 수 있습니다.
그리고 노름은 벡터의 길이 또는 크기를 나타낸다면,
내적은 두 벡터 사이에 이루는 각 또는 두 벡터 사이의 관계를 나타낸다고 생각하면 될 것 같습니다.
※참고자료
1. http://matrix.skku.ac.kr/LA-K/Ch-1/LA-Lab-kor-Ch-1.html
의 벡터 , 에 대하여
,
인 를 와 가 이루는 각(angle, 사잇각)이라 한다.
2. http://matrix.skku.ac.kr/math4ai-intro/W3/
주어진 데이터를 분류하기 위해서는 각 데이터마다 우리가 다룰 수 있는 (계산할 수 있는) 형태로 표현할 수 있고, 각 범주와 얼마나 가까운지 (혹은 유사한지) 계산하여 최종 판단해야 한다.
이러한 척도를 데이터의 유사도 (similarity)라고 한다.
그렇다면 서로 다른 두 데이터가 얼마나 유사한지 어떻게 평가할 수 있을까?
가장 쉽게 생각해볼 수 있는 것은 두 데이터 사이의 거리 를 계산하는 것이다.
는 원점에서 점 에 이르는 거리 와 같다. 따라서 두 벡터 , 에 대하여 는 두 점 와 사이의 거리(distance)가 되며, 다음이 성립한다.
위 정의는 3차원은 물론 고차원 데이터에 대해서도 동일한 형태로 확장된다.
그러나 데이터 분석가가 단지 데이터의 패턴(방향)에만 관심이 있는 경우, (거리)척도는 적합하지 않다.
예를 들어, 아래와 같이 좌표평면 상에 벡터로 표현된 두 데이터 와 는 패턴(방향)은 유사하지만
거리는 매우 큰 값을 갖게 되어, (거리)척도로는 “두 데이터가 관계가 없다”고 판단하게 되기 때문이다.
단지 데이터의 패턴(방향)에만 관심이 있는 경우에는 유사도를 어떻게 측정해야 할까? 이번에 우리는 데이터의 패턴(방향)에만 관심이 있으므로,
두 데이터(벡터)가 이루는 사잇각 로 유사도를 측정할 수 있을 것 이다. 예를 들어, 가 작으면 데이터의 유사도가 높고, 가 크면 데이터의 유사도가 낮다고 판단할 수 있다.
그러나 사잇각은 벡터의 내적(inner product)으로부터 정의되므로, 를 직접 계산하기 보다는 벡터의 내적을 이용하여
의 코사인 값으로 유사도를 측정한다. 이를 코사인 유사도(cosine similarity)라고 한다.
장환승(2016****69)7월 18일 오후 10:53
내적이라는 개념은 알고 있었는데, 자연어 처리 또는 데이터의 패턴 개념에 있어 내적이라는 것이 어떻게 활용되는지 보니까 신기하네요. 코사인 유사도 라는 개념이 내적과 글을 통해 확 와닿습니다. 감사합니다.
권서영(2020****27)7월 19일 오전 1:29
Final Comment: 제가 교수님 강의를 공부하면서 미묘하게 헷갈리던 부분이 무엇인지 확신할 수 없어 고민중이었는데, 학우님께서 노름과 내적의 개념에 대해 질문한 글을 읽고 저 또한 개념정리가 미약하다는 것을 깨달을 수 있었습니다. 많은 학우분들이 내적은 '각'의 개념이라 정리해 주셔서 개념 정리가 되고, 왜 각이며 내적이 어떤 분석 (데이터의 패턴 혹은 방향)에 사용되는지 정리해주신 답변들을 읽어보며 내적과 노름의 개념과 응용을 정리할 수 있었습니다. 사실 내적이 왜 ||x||로 바 두 개를 사용하는 것일까? 라는 일차원적인 의문을 가지고 있었으나 (잘못된 생각이지만) 질문이 유치하게 보여 묻지 못했습니다. 하지만 교수님이 "실수크기는 절대값 | x |, 벡터의 노름은 || x || Matrix norm 은 세개 bar 로 ||| A ||| 로 구분하여 사용한다 고 이해하시면 됩니다."라고 서술해주셔서 납득을 할 수 있었습니다. 먼저 강의 내용을 다 이해하고 정리하고 다른 분들 질문과 finalized된 글을 읽어 볼 것이 아니라 (교재를 읽은 후 ... 다른 학생들이 토론한 내용을) 미리 읽으면서 (Re-Finalize 하거나, 추가로 질문하거나, Final 코멘트를 달면서) 자신의 이해를 더욱 높일 수 있고 추가적인 지식도 얻을 수 있음을 깨달았습니다.
좋은 질문과 답변 공유해 주셔서 감사합니다.
5‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ : RREF로 역행렬을 구하는 과정을 설명함.
최종 Comment
일차원 벡터의 덧셈, 스칼라배 연산에 있어서 일차원 벡터를 하나의 숫자로 대응할 수 있다는 점을 알게되었고, 기본행 연산을 기본행렬의 곱으로 진행하는 방식에 대해 이해하고 역행렬을 구하는 과정에서 Gauss-Jordan 소거법을 활용하여 RREF를 만드는 과정과 결과에 대해 자세하게 알 수 있었습니다.
덕분에 많이 배웠습니다. 상세한 설명에 감사드립니다 :)
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’ : sage 코드상 Gram-Schhmidt 정규직교화법 원리를 설명함.
Q. 벡터의 빼기연산을 활용하면 어떠한 과정을 통해 벡터들이 직교화 되는지 이해가 잘 가지 않습니다.
이에 대해 설명해주시면 너무 감사할것 같습니다.
QR분해는 full column rank인 행렬 A를 Col(A)의 정규직교기저를 열로 하는 직교행렬 Q와 상삼각행렬 R의 곱으로 표현 가능하다는 것입니다.
QR분해를 한다는 것은 주어진 행렬 A로부터 아직은 알지 못하는 Q와 R을 구해내는 것입니다.
행렬 A에서 Gram-Schmidt 정규직교화법을 통해 Q를 구한다면 R은 Q^tA로 구할 수 있습니다. (A=QR에서 R=Q^-1A. Q는 직교행렬이므로 R=Q^tA.)
안타깝게도, sage의 gram_schmidt()함수는 하삼각행렬 M과 직교기저를 행으로 하는 직교행렬 G를 구해줍니다. (A=MG)
정규직교기저를 열로 하는 직교행렬 Q와 상삼각행렬 R을 구하기 위해서 적절한 변환을 하는 gs_norm() 함수를 정의합니다.
먼저, A^t.gram_schmidt()를 수행하여 직교기저를 행으로 하는 직교행렬 G를 얻어냅니다. A가 아닌 A^t를 적용하는 이유는 mxn행렬(m>n)일 때 G가 제대로 나오지 않기 때문입니다. 추정컨대, gram_schmidt() 함수가 column-by가 아닌, row-by이기 때문인 것 같습니다. A^t의 행기저를 A의 열기저로 쓸 수 있는 이유는 Col(A)=Row(A^t)이기 때문입니다.
G를 normalize하여 Q1을 얻습니다. 이 Q1은 정규직교기저를 행으로 하는 직교행렬입니다.
Q1과 A로 부터 R을 구합니다. 위의 R=Q^tA를 이용합니다. 여태껏 Q1을 transpose 하지 않은 이유입니다.
이제 Q1을 transpose하여 Q를 얻습니다.
따라서, gs_norm() 함수로 A를 QR분해 할 수 있습니다.
Gram-Schmidt 정규직교화법은 gram_schmidt() 내부에 구현되어 있습니다.
8‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’ : 직교의 정의를 설명함.
Question by 장환승
1. 강의를 듣다 보니 일차독립이라는 말이 나와서 갑자기 궁금해진 부분이 n차 독립도 존재하는가 입니다.
정의에 관한 내용을 찾아보니 1차 독립은 원어로 linearly independent 이던데, 일차함수가 직선을 의미하고 일차독립의 정의를 생각해봤을 때, n차 독립이라는 것은 없을 것 같기는 한데 잘 모르겠습니다.
2. 오늘 들은 수업내용 중, 내적이라는 것을 할 때, 서로 직교하는 두 벡터 간의 내적은 0이라는 것을 자연스럽게 활용하셨는데 저도 고등과정을 통해서 직교하면 내적하면 0이다 라는 것이라고 외우기만 했지 원리를 몰라 찾아보았습니다.
도움이 되셨길 바라며... 위 과정에서 생각해보니, 오늘 배운 영벡터의 경우, 직교에 대한 판단을 어떻게 하는지 궁금합니다. 두 벡터가 직교한다는 것은 뭔가 머릿속으로 직각으로 만나는 것인데, 영벡터의 경우 내적은 0인데 직교에 대한 정의를 어떻게 내리나요?
Answer by 김진웅(2015****73)7월 19일 오전 00:00
1. (대수적 독립(algebraic independence), 아핀 독립(affinely independence) 같은 것은 있는데) 사실 행렬이나 텐서 같은 것들은 모두 벡터로 구성되어 있고 일차독립은 벡터의 집합에 대해서 성립하는 것이므로 실제로 2차 독립이라든지 n차 독립 같은 것은 없는 것 같습니다. 벡터의 집합으로 구성한 원소의 집합에 대하여 2차 독립을 논할 수 있을지도 모르겠습니다. 2.직교의 정의는 벡터의 내적 값이 0이므로, 영벡터와 내적한 모든 벡터는 직교하게 됩니다.
Answer by 이상구(LEE SANGGU)7월 19일 오전 5:15
1. 1차 독립 linearly independent 은 벡터들의 일차결합 linear combination 을 영벡터로 놓고, 연립방정식을 풀어서, 계수가 모두 영 인 즉, 연립방정식이 영벡터 만을 유일한 해로 가지는 경우, 우리는 그 주어진 벡터늘이 1차독립 이라고 합니다 . 그리고 n차 독립이라는 정의는 없습니다. 2. 영아닌 두 벡터의 내적이 영이면, 두 벡터는 orthogonal 직교 한다고 합니다. 가정을 negation 한 경우로 이런 문제는 Tautology 관련 이슈인데 ... 하나의 영벡터를 다른 영아닌 벡터와 내적을 구한 경우는 값이 항상 영이므로, 이 경우는 영벡터가 다른 벡터와 직교한다고 정의해도, 모순이 없으므로 직교한다고 정의하는 것. 정도로 이해 하시고 다음 단계로 진행하세요.
장환승(2016****69)7월 19일 오후 3:12
아하 감사합니다.
10‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’ : 직교성분을 설명함.
[HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요?
다름이 아니라 정사영의 정의 (아래 사진파일 첨부) 에서 x*(y-p) = 0 이라 서술이 되어 있는데
그렇다면 w가 0이 되는 것인가요? <--- 아닙니다.
두 벡터가 직교하면 내적이 0이 된다 서술이 되어 있던데, 그 개념이 연결되어 있는 것인가요? <--- 물론 연결되어 있습니다.
만약 그렇다면(연결되어 있습니다. ), 혹시 설명해 주실 수 있으실까요? 감사합니다 ㅜㅜㅜ
답:
2개의 댓글
김진웅(2015****73)7월 19일 오전 1:20
원벡터 y에서 정사영 벡터 p를 뺀 것이 벡터성분 w입니다. (w=y-p) 원벡터가 정사영하는 공간에 속해있지 않는 한, 벡터성분 w는 0이 되지 않습니다. x와 y-p 그러니까 x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다.
이상구(LEE SANGGU)7월 19일 오전 5:26
김진웅 군 , 답을 아주 정확하게 주었습니다. w 가 영벡터가 아니라 ... x와 w는 서로 직교하므로, x·(y-p)=0 그러니까 x·w=0인 것입니다. 주어진 x 와 y 로 부터, projection p 를 구한 후, 이것을 이용하여 w 가 x 와 orthogonal 이 되도록 w를 정의한 것 입니다.
11’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’ : sage 코드상 vector()함수를 설명함.
[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 &실습 &질의
asked by 임성규
answered by 김진웅, sanggulee
<질의 및 답변 내용>
3. 질의
3.1 예제를 실습하면서 궁금한 점이 생겼습니다. v=vector([1489,-1239,293]) 로 변수를 선언 하면 v에 단순 list가 아닌 벡터의 개념으로 데이터가 저장되는지 궁금합니다.
answered by 김진웅 : sage의 vector() 함수는 Vector class(주어진 input에 따라 Vector_integer_dense,Vector_rational_dense,FreeModuleElement_generic_dense 등등) 객체를 반환합니다. 단순 list와는 달리, norm() method 등을 쓸 수 있습니다.
commented by 임성규 : vector라는 함수가 따로 존재하는 이유 중 하나로 여러가지 반환값과 추가 매소드를 지원함을 알게 되었습니다. 감사합니다.
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘ : 행렬이 full column rank일 때 행렬의 전치행렬과 행렬의 곱의 행렬식이 0이 아님을 설명함.
[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,
[Discuss] How to find least square solution? 해가 존재하지 않는 연립방정식의 optimal solution [최소제곱해, least square solution] 는 어떻게 구하나?]
작성자 : 이상구(LEE SANGGU)작성일 : 7월 10일 오후 1:15
조회수 : 24
오차(error)
• 때로는 최소제곱법을 이용하여 구한 근사 직선이 오차가 너무 커지는 경우도 있다. 예를 들면, 그림 14-2-2 (a), (b) 의 경우는 최적곡선이 직선이 아니다. 실제로(a), (b) 의 경우에 데이터의 점에 가장 근사한 곡선은 각각 2차식인
• 이고 3차식인
• 이다. 일반적으로 데이터의 점 에 가장 근사한 차의 다항식
(7)
• 을 구하고자 할 때는 다음과 같이 한다.
(a) (b)
그림 14-2-2 데이터 점들을 이었을 때 직선이 나오지 않는 경우
• 우선, 식 (7)에 주어진 데이터의 점을 대입하여 미지수가 인 연립방정식
(8)
• 를 얻는다. 만일 의 값 중 서로 다른 것이 개 있다면, 이므로 정규 시스템 는 유일한 해 를 갖는다. 이 때 이 계수를 갖는 차 다항식이 바로 가장 근사한 곡선의 방정식이다.
위의 내용 중에서 마지막 부분,
만일 의 값 중 서로 다른 것이 개 있다면, 이므로 가 잘 이해가 되지 않습니다... 어떻게 가 되는 건가요?
***
선형대수학에서 방데르몽드 행렬(-行列, 영어 : Vandermonde matrix)은 각 행이 초항이 1인 등비수열로 구성된 행렬이다. 프랑스의 수학자 알렉상드르 테오필 방데르몽드의 이름에서 따왔다. 다항식 보간법, 최소 자승 근사법 등에서 나타난다.
방데르몽드 행렬은 다음과 같은 형태를 가진다.
간단히 표현하면 모든 i와 j에 대하여 다음과 같이 쓸 수 있다.
일부에서는 이 행렬의 전치행렬을 방데르몽드 행렬이라고 부르기도 한다.
nxn 방데르몽드 행렬의 행렬식은 다음과 같이 간단히 정리할 수 있다.
이 행렬식을 방데르몽드 행렬식 또는 방데르몽드 다항식(Vandermonde determinant, Vandermonde polynomial)이라고 한다.
https://ko.wikipedia.org/wiki/%EB%B0%A9%EB%8D%B0%EB%A5%B4%EB%AA%BD%EB%93%9C_%ED%96%89%EB%A0%AC
증명 https://steemit.com/kr-math/@beoped/vandermonde-determinant
답:
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로
데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다.
따라서 A^T A 의 행렬식도 영이 아닙니다.
* 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립
이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다.
[3-4] 가 다음과 같을 때 연립방정식 의 최소제곱해를 찾아라.
3. ,
Ans 이므로
4. ,
Ans
A=matrix([[1, 3, 5, 2, -2], [-2, 1, -2, 1, 0], [-1, -3, 0, 1, 0], [-3, 0, 1, 0, 0], [0, 1, 2, -2, 1]])
print A
print
b=matrix(5, 1, [1, 0, 1, 0, 0])
print b
print
AT=A.transpose()
AtA=AT*A
print AtA
print
Atb=AT*b
print Atb
print
AtA.solve_right(Atb)
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
# normal equation로 계산한 것과 비교
AtA = A.transpose()*A
Atb = A.transpose()*b
AtA.solve_right(Atb)
따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
박정호(2014****10)7월 19일 오후 5:35
A의 column들이 일차 독립일 경우 A^TA가 역행렬을 갖습니다. 현재 A의 열이 k+1개가 있으므로 x_1, x_2, ..., x_n 중 서로 다른 값이 k+1개만 되면 column끼리의 일차 결합이 불가능해서 full column rank를 가진다는 설명인 것 같습니다.
이상구(LEE SANGGU)7월 19일 오후 5:53
위의 행렬 A 가 Vandermonde ... (반데르몬드, 방데르몽드) 행렬이라고 합니다. 그 행렬식 이 https://freshrimpsushi.tistory.com/736 으로 데이터를 측정하는 시간 들인 x_1, x_2, ..., x_n 들이 다르기먄 하면 항상 영이 아니므로 가역행렬이 된답니다. 따라서 A^T A 의 행렬식도 영이 아닙니다. * 그리고 일단 Vandermonde ... (반데르몬드, 방데르몽드) 행렬 모양의 m by k 행렬 A 에서 k 개의 열이 1차 독립이면, k by k 행렬인 A^T A 가 rank k 인 행렬이므로 , A^T A 는 가역행렬이고 A^T A 의 행렬식은 영이 아닙니다. 따라서 위의 방식으로 최소제곱해를 항상 구할 수 있습니다.
김진웅(2015****73)7월 19일 오후 6:16
'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다'는 것은 n 은 적어도 k+1개 이상이고, '서로 다른' 조건에 의하여 (1)'A는 full column rank를 갖는다'는 것입니다. '|A^tA|≠0'이라는 것은 'A^tA가 가역'이라는 것입니다. 'A^tA가 가역'이라는 것은 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (A의 가역을 보이기 위해서 'Ax=0일 때 x=0'을 보이면 됩니다.) 따라서, 'x1,...,xn의 값 중 서로 다른 것이 k+1개 있다면 |A^tA|≠0이다'라는 것은 (1)'A는 full column rank를 갖는다'일 때 (2)'A^tAx=0 일 때, x=0'이라는 것입니다. (1)을 이용하여 (2)가 옳음을 보이면 됩니다. (2)의 A^tAx=0부터 시작합니다. x^tA^tAx=0 (x^t를 양변에 곱했습니다.) (Ax)^tAx=0 (Ax)·(Ax)=0 (Ax는 nx1 벡터입니다. 벡터끼리의 내적입니다.) ||Ax||^2=0 Ax=0 입니다. (1)에 의해, 즉 'Ax=0이면 x=0'(full column rank이면 왼쪽 식을 만족합니다)에 의해 x=0입니다. 따라서 (1)일 때 (2)'A^tAx=0 일 때, x=0'가 옳음을 보였습니다.
박정호(2014****10)7월 19일 오후 10:39
방데르몽드 행렬식을 보니 명확하게 이해가 되었습니다. 감사합니다.
15’[Final OK by SGLee] finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘ : 단위벡터로 선형변환의 표준행렬을 구함을 설명함.
[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)
작성자 : 김범준(2017****99)작성일 : 7월 20일 오후 4:51
조회수 : 37
선형변환에서 표준행렬을 구할때 단위벡터를 활용하는데
(우선 질문 표현이 틀려서 교수님이 고쳐주셨습니다)
R^3의 표준 단위 standard unit 벡터 [100][010][001] 를 이용하여
R^3의 표준기저 는 열(column) vectors e_1 = (1, 0, 0) = [1 0 0]^T (3 by 1 vector) , e_2 = (0, 1, 0)=[0 1 0]^T (3 by 1 vector), e_3 = (0, 0, 1) =[0 0 1]^T (3 by 1 vector) 인 것은 알았습니다.
( (column) vectors 를 이용하여야만 A x = b [ m by n 행렬 곱하기 n by 1 vector = m by 1 vector ] 표현이 이해된답니다)
Q. 1 즉 3*3 행렬 R^3 에서 각각의 열(column) vectors 벡터를 단위벡터라고 이해하면 되는 건가요? <--- 아닙니다.
Q. 2 그리고 선형변환에 대응하는 표준행렬을 구할 때 왜 단위행렬이 아닌 단위벡터 가 필요한지 로 나눠서 이용하는지 궁금합니다.
일단. 아래를 보시고 누가 Q 2 에 답을 보태주십시요^^
이상구(LEE SANGGU)7월 20일 오후 5:18
https://m.blog.naver.com/PostView.nhn?blogId=ldj1725&logNo=220267079754&proxyReferer=https:%2F%2Fwww.google.com%2F 을 보세요^^
김진웅(2015****73)7월 20일 오후 10:23
Q2. 예를들어 R^3의 표준기저 들을 순서대로 각각 주어진 선형변환을 취해 얻은, R^2 안의 이미지 (output 벡터) 벡터들을 . . . 순서대로 <열 column 벡터>로 하는 2 by 3 행렬 . . . 이 <(표준기저들 가진) 주어진 선형변환에 대한 표준 행렬 표현 standard matrix, matrix representation of linear transformation >이기 때문입니다. 즉, 행렬에 벡터를 곱하니까 벡터가 나오고. 이것이 우리가 정의역 과 치역을 벡터들의 집합 으로 보는 것이고, 행렬을 함수 로 보는 것과 모두 일치 합니다. 1. 자세한 증명은 책 (T:R^n→R^m을 임의의 선형변환이라 할 때,...) 에 나와 있습니다.
김호연(2020****32)7월 24일 오전 2:10
풀이가 우수합니다.
comment: PBL중간보고서를 작성중에 final선언을 하지않은것을 발견하여 이제서야 final 합니다. 처음에 증명을 보았을때는 이해가 힘들었지만 김진웅학우의 코멘트를 보면서 하나씩 따라가다보니 누군가에게 설명할 정도는 아니지만 제 스스로의 이해는 가능하였습니다. 감사합니다.
19’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘ : sage 코드상 linear_transformation()이 보이는 표준행렬을 설명함.
표준행렬에 대해 질문있습니다
질문 by 이상현
답변 by 김진웅
Finalized by 천가영
Q.
위 그림에서 파랗게 선택된 부분이 선형변환T의 표준행렬이라고 합니다.
하지만 저는 3차원의 U를 2차원의 V로 변환하고 있었고
그러기 위해서는 U(x,y,z)^(T)라고 할때 2x3 행렬을 3x1 행렬과 곱해 2차원 V와 부합하는 2x1 행렬을 도출해 내기위해
표준행렬이 2x3 행렬이어야 한다고 생각합니다.
그러나 위 그림에서 선형변환T의 표준행렬이 3x2 행렬 이라고 합니다. 왜 이렇게 나오나요?
A
"notation의 차이 떄문입니다" 그간 선형변환 T(x)를 배울 때 domain 벡터(pre-image)를 표준행렬의 '오른쪽'에 곱한 것으로 배웠습니다. (T(x)=Ax) 그런데 linear_transformation() 함수는 VectorSpaceMorphism객체를 만들어 내면서 이 객체가 표현하는 행렬을 domain 벡터(pre-image)를 표준행렬의 `왼쪽`에 곱한 것으로 표시합니다. (T(x)=x^tA') A'=A^t 이므로, sage에서 표시한 행렬은 A를 transpose 한 것이라고 생각하시면 됩니다. 다음을 실행해보면 정상적으로 작동합니다. x=vector(ZZ, [1,2,3]) print(TA(x))
느낀점 :
학우분들의 좋은 질문과 친절한 답변 덕분에 linear_transformation() 함수에 대해 더 잘 이해하게 되었습니다. 내용 이해와 요약을 위주로 공부하며 실습 진도가 밀려 있는데 서둘러 해야겠다는 생각도 들었습니다.
21’[해결] SAGE 질문 SyntaxError‘ : sage 코드상 sage 작동 원리 중 preparse를 설명함.
2주차 SAGE에서 실습을 하다가 SyntaxError가 나와서 멈췄습니다.
혹시 해결할 수 있는 방법을 알고계신 분 계십니까?
김진웅(2015****73)7월 23일 오후 5:16
print(preparse('h(x, y, z) = [x + 2*y, -x - y, z, x + z]')) 해 보시면 해당 구문을 먼저 파싱하여 __tmp__=var("x,y,z"); h = symbolic_expression([x + Integer(2)*y, -x - y, z, x + z]).function(x,y,z) 이런 형태로 만들어 주는데 그런 작업을 제대로 수행하지 못하고 있는 것 같습니다.
나종진(2017****17)7월 23일 오후 6:43
sage.skku.edu에서 실행하니 되었습니다. sage에서 실행을 눌러도 실행값이 안떠서 SageMathCell에서 해서 그랬던것같습니다. 해결되었습니다. 감사합니다.
이상구(LEE SANGGU)7월 24일 오전 5:40
Good^^
22‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’ : 특성방정식의 간략한 설명과 sage 코드상 is_diagonalizable(QQBar)를 설명함.
Q.
01 닮은 행렬 설명 중 , 삼각행렬의 특성방정식에 대하여 언급하신 부분이 있는데 , 특성방정식에 대해서 자세한 설명을 찾기 힘들어 , 설명을 해주시길 부탁드립니다 .
1) 특성 방정식이란 무엇인지 (특별히 삼각행렬의 특성방정식에 대해 )
2) 특성 방정식을 구하는 방법 (간략히 )
A. (by 김진웅)
특성방정식은 고유값과 관련이 있습니다.
Q.
02 자체 예제 213 번의 결과가 오류로 인하여 나오지 않는데 , 어떤 오류고 어떻게 해야 정상적으로 작동되는지 아시는 분 계신다면 알려주길 부탁드립니다 .
A. (by 김진웅, SGLee)
A=random_matrix(ZZ,5,5) print(A.is_diagonalizable(QQbar)) 하시면 될 겁니다.
Comment (by 이승재)
오류에 대해 정상적으로 작동할 수 있게 알려주신 분들 모두 감사드립니다. :) 덕분에 오류 나지 않고 정상 작동한것을 확인했습니다.
특성방정식에 대한 추가자료를 보면서 어느정도 이해가 갔습니다. 자료 올려주신 것에 감사드립니다.
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘ : sage 코드상 plot() 함수의 detect_poles옵션을 설명함.
[Final OK by SGLee] 100점 입니다. 협동적 학습경험
[Final OK by SGLee] 100점 입니다. Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준
var('x')
plot((x^2 - 4)/abs(x – 2),x,-1,3)
손으로 그릴때에는 아래와 같이 그리는 것이 맞다고 생각합니다.
(왜냐하면, x=2일때 y가 -4이상4이하의 값을 가지는것은 아니라고 생각했기 때문입니다.) 혹시 sage에서 함수를 구현할때 이러한 부분까지
고려해서 그리는 방법이 있을까요?
김진웅학우님의 답변
김진웅(2015****73)7월 27일 오후 5:02
detect_poles="show" 옵션을 plot()함수의 parameter에 넣어주면 됩니다. plot((x^2 - 4)/abs(x - 2),x,-1,3, detect_poles="show")
그 결과
var('x')
plot((x^2 - 4)/abs(x - 2),x,-1,3, detect_poles="show")
박은아학우님의 답변- 불연속점을 알 경우에 적용가능한 코드
박은아(2016****73)7월 27일 오후 5:11
김진웅 학우분께서 답변해주셨지만, 만약 불연속점을 알고있다면 아래와 같이 exclude를 사용하는 방법도 있습니다. var('x') plot((x^2-4)/abs(x-2),x,-1,3,exclude=[2])
그 결과
var('x')
plot((x^2-4)/abs(x-2),x,-1,3,exclude=[2])
28’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘ : 미적분학의 기본정리 증명에 다른 변수가 들어가면 안 된다는 것과 그럴 필요도 없음을 설명함.
[HW-3주차-자료공유]미적분학의 기본정리와 그 증명
작성자 : 김범준(2017****99)작성일 : 7월 27일 오후 8:00
조회수 : 27
현재 교과서에 있는 정리입니다.
정리. |
미적분학의 기본정리 (적분과 미분의 연결고리) |
가 에서 연속이고 를 의 임의의 한 부정적분, 이라 하면 다음식이 성립한다.
제가 증명방식이 궁금해 찾아보다가 알게된것들(이미 알고계신분들도 있으시겠지만)을 공유하고자 합니다.
1. 미적분학의 기본정리는 제1정리와 제2 정리가 있습니다. 현재 교과서에 있는것은 제2정리입니다.
2.제1 정리는 미분과 적분이 서로 역연산 관계에 있다는 것입니다. 이는 교과서에 미적분학의 기본정리라고 표기는 명시적으로 따로 되어있지는 않지만, 교과서에 적분의 연산이 그 내용을 포함하고 있습니다.
3. 제 2정리의 증명은 다음과 같습니다.(책에서 x라는변수로 표시한 것을 t변수로 표시한 차이 밖에 없습니다.)
함수 를 다음과 같이 정의하자.
함수 가 의 임의의 부정적분이므로 다음이 성립한다.
(단, 는 상수)- 여기까지는 미분과 적분이 역연산관계에 있다는 점을 통해 알 수 있습니다.
함수 와 모두 에서 연속이므로 다음이 성립한다.
4. 따라서 제 2정리가 말하고자 하는 것은 부정적분간의 차를 이용해 정적분을 구할 수 있다는 것 입니다.
혹시 제가 정리한 내용중에 잘못된 부분이 있으면 댓글로 알려주시면 갑사합니다.
전재현(2015****91)7월 28일 오후 6:10
문득 궁금한 부분이 생겨 여쭤봅니다. 만약 F(b) - F(a)에서 a가 아닌 다른 값이 들어가도 같은 의미를 가지나요? 어차피 무수히 많이 존재할 수 있는 상수 C를 없애는건 동일하니 상관없을까요?
김진웅(2015****73)7월 28일 오후 10:49
함수 G를 a에 대하여 정의하였기에, F(b) - F(a)에 a아닌 다른 값이 들어가면 네번째 등호를 넘어가지 못할 것입니다. 어차피 함수가 연속이게만 하면 되는 임의의 a,b이므로 모든 경우를 커버할 것입니다.
comment: 제가 찾아본 증명법칙 하에서는 성립하지 않습니다. 그리고 적분을 이미지화 했을때의 이해를 바탕으로 하면,
떤 구간에서 정의된 함수 에 대하여 이 구간의 모든 에 관하여 를 만족하는 함수 가 존재할 때 를 의 원시함수 또는 부정적분(indefinite integral)이라고 한다. 가 주어졌을 때 그 부정적분 를 구하는 것을 를 적분한다 고 한다.
의 부정적분을 로 나타내고 를 적분기호, 를 피적분함수, 를 적분변수 라고 한다. 가 의 한 부정적분이면
는 임의의 상수) (3-2)
이다. 식 (3-2)의 우변의 를 적분상수 라고 한다.
에서 연속인 함수 는 에서 적분가능 이라고 하며, 의 로부터 까지의 정적분(definite integral)을 로 정의한다.
F(b)-F(a)를 통해 정적분을 구하는 것이 옳은풀이라고 생각합니다.
30’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘ : 2계도함수와 n계도함수의 의미를 설명함.
(10강) (미적분 1 극한과 도함수)를 듣는중에 궁금한 점이 생기어 여쭤봅니다.
제가 이전에 듣던 강의중에 파생상품론이라는 수업을 들었는데 2계도함수 활용하여 파생상품 함수의 볼록성를 구하는 방식을 사용했엇는데요. 미분은 기울기를 알 수 있고 적분은 면적을 구할수 있듯이 2계도함수를 활용하면 어떤 값을 구할 수 있어서 볼록성을 알 수 있게 되는 것인가요?
그리고 비슷한 주제로 3계도함수. 4계도함수를 구하는 목적이 무엇인가요?
김진웅(2015****73)7월 29일 오전 10:55
2계도함수는 기울기의 변화를 알려줍니다. 2계도함수가 양수이면 기울기가 커질 것이고, 음수이면 기울기가 작아지게 됩니다.
그래서 2계도함수가 0인 지점 사이의 구간들은 볼록하고 오목하게 됩니다.
이와 같이 n+1계도함수는 n계도함수의 변화를 알려줍니다. 그 함수의 변화를 알고 싶을 때 구하면 됩니다.
이상구(LEE SANGGU)7월 29일 오전 11:00
https://darkpgmr.tistory.com/132 을 보세요
1. 3계도함수. 4계도함수 도함수도 필요시 사용하려고 구 할 수 있는지 없는지는 언제나 미리 알아 둡니다. 그러나 Gradient, Jacobian 행렬, Hessian 행렬, Laplacian 등에 모두 쓰이는 1계나 2계 도함수 보다 사용도는 떨어집니다.
2. Gradient, Jacobian 행렬, Hessian 행렬, Laplacian 등 2계도함수 활용 은 무수히 가능합니다.
3. 2계도함수를 활용하면 기울기가 양에서 음으로 그리고 음에서 양으로 변하는 구간을 찾을 수 있어서 그 구간에서의 아래로 볼록, 또는 위로 볼록을 쉽게 답을 준답니다.
- Gradient(그레디언트): http://en.wikipedia.org/wiki/Gradient
- Jacobian(야코비언) 행렬: http://en.wikipedia.org/wiki/Jacobian_matrix
- Hessian(헤시안) 행렬: http://en.wikipedia.org/wiki/Hessian_matrix
- Laplacian(라플라시안): http://en.wikipedia.org/wiki/Laplace_operator
박은아(2016****73)7월 29일 오후 3:09
이계도함수는 오목성(위로 볼록, 아래로 볼록), 변곡점, 임계점 판정에 사용할 수 있습니다.
오목성: 이계도함수가 양의 값을 가지면 위로 오목(볼록함수라고도 한다.)하게 되는데, 이는 접선이 함수의 그래프 아래쪽에 위치함을 의미한다. 유사하게, 이계도함수가 음의 값을 가지면 아래로 오목(오목함수라고도 한다.)하게 되는데, 이는 접선이 함수의 그래프의 위쪽에 위치함을 의미한다.
변곡점: 이계도함수의 부호가 바뀌면, 함수의 그래프는 아래로 오목에서 위로 오목으로 바뀌거나 그 반대가 된다. 이러한 경우가 일어나는 점을 변곡점이라고 부른다. 이계도함수가 연속이라고 하면, 비록 이계도함수가 0이 되는 모든 점이 변곡점인 것은 아니지만, 변곡점에서 이계도함수의 값은 0이 된다.
임계점: 이계도함수와 그래프의 관계는 함수의 임계점 (즉, f'(x)=0 )이 극대 또는 극소인지를 판정하는데 사용될 수 있다.
출처: https://en.wikipedia.org/wiki/Second_derivative
임성규(2015****08)7월 29일 오후 3:33
미분법의 중요한 학습의미 중 하나로 미분법을 이용하여 함수를 그래프로 표현할 수 있습니다.
도함수로 원래 함수의 극값을 알 수 있습니다.
이계도함수로 함수의 극대와 극소, 그래프의 개형 (오목, 볼록)을 알 수 있습니다.
그 이유로 도함수는 함수 그래프위의 한점에서 접선의 기울기를 의미하며 이계도함수는 접선 기울기의 변화를 측정하여 나타내기 때문입니다.
따라서 이계도함수가 양이면 위로 오목하고 이계도함수가 음의 값인 구간에서는 아래로 오목함을 알 수 있습니다.
3차이상의 고계 도함수는 김진웅 학우분이 말씀하신 것 처럼 n+1계도함수는 n계도함수의 변화를 알려줌을 도함수와 이계도함수와의 관계를 통해 알 수 있습니다.
다만 저도 고계 도함수가 어디에 응용되고 활용이되는지 궁금하여 자료를 찾아보았으나 적합한 자료를 찾을 수 없었습니다.(혹여 찾으신 분은 남겨주시면 감사하겠습니다.)
같은 고민을 하신분의 글이 있어 참고자료로 남깁니다.
이 글을 쓰신분은 삼계도함수를 원운동에 적용해 보았으며 그 이유로 원운동이 가속도가 일정한 속도로 바뀌는 운동이기 때문입니다.
즉, 삼계도함수를 이용하여 이계도함수로 구할 수 있는 가속도의 변화를 측정할 수 있다는 생각입니다.
참고자료 : https://nfish.tistory.com/entry/3계-도함수
31’finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘ : sage 코드상 var()함수와 3차원 벡터 표기를 위해 plot()함수를 설명함.
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
print d
implicit_plot3d(d,(x, 0, 20), (y, 0, 20), (z, 0, 20))
(13, 10, 7)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-4301d71bae1a> in <module>()
4 d = a + b + c
5 print d
----> 6 implicit_plot3d(d,(x, Integer(0), Integer(20)), (y, Integer(0), Integer(20)), (z, Integer(0), Integer(20)))
NameError: name 'y' is not defined
3차원 벡터의 합을 그래프를 통해 나타내고 싶어서 여러 코드들을 보고 시도하였지만 구현하는데 실패하였습니다. 어떤 방식으로 접근해야 할 지 궁금합니다.
또한 plot과 show처럼 그림으로 나타낼 수 있는 여러 명령어간의 차이도 궁금합니다.
김진웅(2015****73)8월 1일 오후 5:24
일단 저 오류 name 'y' is not defined는 코드 맨 앞에 var('x', 'y', 'z')를 넣으면 해결됩니다. implicit_plot3d()에는 함수를 넣어야 하는데 벡터를 넣었기 때문에, f(x,y,z)=(d[0],d[1],d[2])를 정의하여 적용해봅니다. 함수 f를 정의하고 적용해 보면 'tuple' object is not callable 오류가 뜨는데, multiple equation을 받지 않는 것 같습니다. implicit_plot3d() 함수 대신에 plot_vector_field3d() 함수에 함수 f를 적용하면 결과가 1개로 나오지 않고 벡터공간에 모두 존재하게 표시됩니다. 가장 간단한 방법은 plot(d)하면 됩니다.
var('x', 'y', 'z')
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
plot(a, color= 'red' ) + plot(b, color = 'green') + plot(c, color = 'blue') + plot(d, color= 'black' )
정원철학우분께서 개인적으로 연락을 주셔서 https://sagecell.sagemath.org/ 를 통해 다시 실현해본 결과 다음과 같았습니다.
Type some Sage code below and press Evaluate.
var('x', 'y', 'z')
a = vector([3,5,2])
b = vector([7,1,4])
c = vector([3,4,1])
d = a + b + c
plot(a, color= 'red' ) + plot(b, color = 'green') + plot(c, color = 'blue') + plot(d, color= 'black' )
결과적으로 변수선언(var이 빠졌던 부분이 문제였던것 같습니다.)
추가: 천가영학우분의 show와 plot의 차이에 대한 설명
천가영(2020****17)7월 31일 오후 7:10
저도 plot과 show 함수에 대해 궁금해서 관련 내용을 찾아보았습니다. 제가 이해한 바에 따르면, show 함수는 변수에 저장(할당)된 그래프를 그려주는 역할을 하며, show(변수명) 혹은 변수명.show()의 방식으로 사용 가능한 것 같습니다. 그리고 plot 함수는 괄호 안에 함수식과 변수에 대한 정보를 입력하면 그 함수의 그래프를 그려주는 명령어인 것 같습니다. https://doc.sagemath.org/html/en/tutorial/tour_plotting.html plot 함수에 대해 덧붙이자면 , plot 함수에 대해 아래와 같은 설명이 있습니다. plot() - plot of a function or other Sage object (e.g., elliptic curve). 이 설명에 따르면 plot 함수는 함수 뿐 아니라 타원 곡선과 같은 것들도 그려주는 것 같네요 https://doc.sagemath.org/html/en/reference/plotting/sage/plot/plot.html
comment: sage.skku.edu 에서 구동상 문제가 있다하여 명령어 코드가 잘못된것이라 판단하기는 힘들다.
33’[Final OK by SGLee] [3주차] 요약 및 질문’ : 뉴턴방법의 주의점을 설명함.
[6일차]
• 극한 '0<|x-a|<δ → |f(x)-b|<ε, 모든 ε>0'인 δ 존재 → b는 f(x)의 x→a 극한
연속 (1) 좌극한 (2) 우극한 (3) f(a) (4) 좌극한=우극한=f(a) → f(x)는 연속 at x=a
• 미분가능 f(x) at x=a ⇔ lim h→0 {f(a+h)-f(a)}/h 존재
• 미분계수 lim h→0 {f(a+h)-f(a)}/h = f'(a)
도함수 각 점 x에 그 점에서의 미분계수를 대응한 함수 f`(x)=lim h→0 {f(x+h)-f(x)}/h
f(x)를 미분한다 ⇔ f(x)의 도함수를 구한다
tangent line y=f`(a)(x-a)+f(a) normal line tangent line에 수직인 직선
최대최소값의 정리 f(x) 연속 [a,b] → f(x)의 최대값·최소값 존재, (1) 극값 또는 (2) 양 끝값이 최대값·최소값 후보
뉴턴 방법 함수의 근을 그래프와 도함수로 구하는 방법, a_{n+1} = a_{n} - f(a_{n})/f`(a_{n})
• 부정적분 F`(x)=f(x)인 F(x) 존재 → F(x)는 f(x)의 부정적분, ∫f(x)dx
f(x)를 적분한다 ⇔ f(x)의 부정적분을 구한다
f(x) 미분가능 [a,b] → f(x) 연속 [a,b] → f(x) 적분가능 [a,b]
정적분 ∫a,b f(x)dx
평균값 정리 f(x) 연속 [a,b] → ∫a,b f(x)dx=(b-a)f(ξ), a<ξ<b인 ξ 존재
미적분학 기본정리 f(x) 연속 [a,b], F`(x)=f(x) → ∫a,b f(x)dx=F(b)-F(a)
[7일차]
• 외적 a X b = |[i j k][a1 a2 a3][b1 b2 b3]|, 벡터
코시슈바르츠 부등식 |x·y| ≤ ∥x∥∥y∥, x·y = ∥x∥∥y∥cosθ
• 편도함수 f_x = lim h→0 {f(x+h, y)-f(x, y)}/h about x of f
(1)f_xy (2)f_yx (3) f_xy, f_yx 모두 연속 → f_xy = f_yx → Hessian ∇² 대칭행렬
방향도함수 D u f(a,b) = lim t→0 {f(a+tu1, b+tu2)-f(a, b)}/t at (a,b) about u of f
f(x,y) 미분가능 (a,b) → Du f(a,b) = ∇f(a,b)·u = ∥∇f(a,b)∥cosθ
(a,b)에서 ∇f(a,b)의 방향이 f가 가장 가파르게 증가하는 방향
(a,b)에서 -∇f(a,b)의 방향이 f가 가장 가파르게 감소하는 방향
• 그래디언트 f의 편도함수를 성분으로 하는 벡터 ∇f(a,b) = <f_x, f_y>
헤시안 f의 2계편도함수를 성분으로 하는 행렬 ∇²f(a,b) = [[f_xx f_xy][f_yx f_yy]]
• 임계점 ∇f(a,b)=0 인 점 (a,b) → (1) 극소·극대점 또는 (2) 안장점(극소·극대 모두 아닌 점)
임계점에서 다변수함수 극대극소판정법: 다변수함수의 Hessian 행렬 (Δ부호) 또는 (λ부호)로 판단
H가 positive definite → 임계점은 극소, H가 negative definite → 임계점은 극대, H가 indefinite → 임계점은 안장
김진웅 학우분의 요약글을 가져왔습니다. 하단은 제가 개인적으로 중요하다고 생각해 추가한 부분입니다.(from http://matrix.skku.ac.kr/math4ai/part2/)
Newton’s Method (뉴턴 방법) : 실숫값 함수의 근(근사값)을 그래프와 도함수를 이용하여 쉽게 구하는 방법. https://darkpgmr.tistory.com/58
https://www.quora.com/In-which-cases-is-Newtons-method-not-applicable
주어진 함수의 그래프를 그린 후, Newton의 방법에 의하면 그 함수가 축과 만나는 근(무리수 값의 근)의 근사값을 소숫점 이하 몇 번째 자리까지든지 원하는 대로 정확하게 구할 수 있다.
[wiki 크리에이티브 커먼즈 그림]
최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해들을 생성한다. 위의 그림에서 곡선 를 생각하자. 을 방정식 의 근 에 대한 첫 번째 근사값이라 하자. 그럼 은 점 에서의 곡선 에 대한 접선의 방정식 이다. 그래프를 보고 을 에 적당히 가까운 값으로 선택하면, 이 접선은 보통 축과 점 에서 만나는데, 그 점의 좌표 는 보다 에 더 가까운 근사값이 된다. 따라서 위식에 를 대입하면, 을 얻는다. 다시 를 첫 번째 근사값으로 생각하고 다음 접선을 이용하면 를 얻는다. 이 과정을 반복하면 공식 , 을 얻게 된다. 이 Newton 의 공식을 반복하여 사용하면, 원하는 근을 소숫점 이하 몇째 자리까지라도 필요한 오차 이내로 정확하게 구할 수 있다.
《주의》 첫 번째 근사값 을 찾으려는 근 에 충분히 가깝게 택하지 못하면 Newton의 공식은 불합리한 결과를 초래할 수도 있다. 이를 보완하는 한 방법은 근에 상당히 가까운 근사값에 이를 때까지는 그래프를 먼저 그리거나, 이등분법(bisection method)을 사용하여, 근에 충분히 가까운 점에 온 후 Newton의 방법으로 전환하는 것이다.
이 과정을 아래 도구를 이용하여 실습하도록 하자.
http://matrix.skku.ac.kr/Mobile-Sage-G/sage-grapher-newton_method.html
미적분학 스토리텔링 http://matrix.skku.ac.kr/Calculus-Story/index.htm ■
질문
1. 《주의》 첫 번째 근사값 을 찾으려는 근 에 충분히 가깝게 택하지 못하면 Newton의 공식은 불합리한 결과를 초래할 수도 있다.
이 주의가 뜻하는 것이, 3차원 함수로 나타냈을 경우, 최솟값을 찾는 것이 아닌 극솟값에 빠지는 경우를 뜻하는 것인가요?
김진웅(2015****73)8월 3일 오전 1:01
뉴턴방법은 좌표평면(2차원) 상의 도구로 알고 있습니다.
위에 글에 뉴턴방법이 적용가능하지 않은 경우로 4가지 경우가 있다고 나옵니다. https://www.quora.com/In-which-cases-is-Newtons-method-not-applicable
이 그림도 잘 설명해줍니다. https://www.researchgate.net/profile/Paulo_Flores3/publication/299604992/figure/download/fig26/AS:613932318343200@1523384279523/Examples-in-which-the-Newton-Raphson-method-fails-to-converge.png (여기 (b)의 예는 초기값을 다른 근에 더 가깝게 선택했으므로 제외합니다. 찾고자 하는 근에 충분히 가깝지 않아 다른 근에 가깝게 되는 경우로 보겠습니다.)
(1) 찾고자 하는 근에서의 이계미분계수가 0
(2) 초기값(또는 뉴턴방법 적용하면서 나오는 값)에서의 미분계수가 0에 근사
(3) 초기값(또는 뉴턴방법 적용하면서 나오는 값)에서의 미분계수가 0
(4) 초기값이 극대극소 근처
어느 경우도 찾고자 하는 근에 수렴하지 못하고 발산하거나 다른 근에 수렴하게 됩니다.
(1)은 근이 문제, (2)(3)(4)는 초기값이 문제입니다.
이상구(LEE SANGGU)8월 3일 오전 4:35
Good. 장환승군이 요약 잘했고, 장 군 질문에 김진웅 군이 정확한 답을 주었습니다.
답.
1. 《주의》 첫 번째 근사값 을 찾으려는 근에 충분히 가깝게 택하지 못하면 Newton의 공식은 ... 발산 하거나, 엉뚱한 값으로 수렴한다.
가 의미 이고 김 군이 그 예의 그림을 위에서 제시 했습니다.
36’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘ : 극대극소가 어떻게 판별되는지 설명함.
아래 이미지를 보시면 f의 이차근사식 중 임계점 x=a 에서 grad f(a) = 0 이기 때문에
f(x) ≈ f(a) + 1/2 (x-a)^T ∇^2 f(a)(x-a)
가 되는 것 까지는 이해가 됩니다.
그런데 여기서 어떻게 우변의 두 번째 항이 함수 f의 x=a 에서의 극대, 극소를 결정하는 것인지 이해가 안 됩니다.
f(x)를 미분하면 f(a)는 사라지고 두 번째 항만 미분이 되므로 도함수에서 의미있는 항은 두 번째항이므로 다음과 같이 표현한 것인가요?
잘 이해가 안 됩니다.
이상구(LEE SANGGU)8월 2일 오후 2:41
= 이 아니라 f(x) ~~ 을 두개 표현 한 의미 가 바로 근사하다는 말 입니다
얘기한대로 delta x 의 세 제곱 을 곱하는 항 부터는 ... 4차 항, 5차항 등의 경우 ... 델타엑스가 적으면 ... 너무 작아져서 ... 큰 의미가 없어집니다.
김진웅(2015****73)8월 2일 오후 5:09
∇²f(a)가 positive definite이면 (x-a)^t∇²f(a)(x-a)>0 이어서 f(a)는 극소가 됩니다.
∇²f(a)가 negative definite이면 (x-a)^t∇²f(a)(x-a)<0 이어서 f(a)는 극대가 됩니다.
∇²f(a)가 infinite이면 방향에 따라 (x-a)^t∇²f(a)(x-a)>0일 때도 있고 (x-a)^t∇²f(a)(x-a)<0일 때도 있기에 f(a)는 안정점이 됩니다.
박진형(2018****59)8월 5일 오후 9:11
좋은 설명 감사합니다!
37’[Final OK by SGLee] finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘ : 다변수함수의 이차형식을 설명함.
[Final OK by SGLee] finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
[2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]
작성자 : 임성규(2015****08)작성일 : 8월 2일 오후 3:52
조회수 : 32
-이차형식(quadratic form)
- r^2상의 이차형식
- r^n상의 이차형식
-주축정리(principal axis theorem)
-양의 정부호 음의 정부호 부정부호
를 복습하던 중에 수업을 들을 당시에는 이해를 했었는데 다시 보니 수식의 뜻이 명확히 이해가 되지 않아 고민 끝에 질문을 남깁니다.
------------------------------------------------------------------------------------------------------------------------------
1. 질의
p.140
스크린샷 2020-08-02 오후 3.20.10.png
에서 노란 표시가 되어있는 부분에서 시그마표현식이 다시 보다보니 이해가 잘 가지 않습니다.
그리고 2. A = B (대칭행렬) + C (반대칭행렬) 로 나누어 썼을 때 , 항상 이차형식 값이 항상 q_[A} (x) = q_[B} (x) 인 이유에 대하여 조금 더 설명 부탁드립니다.
Comment: 교수님의 답변을 통해서 대칭행렬과 반대칭행렬의 합에 대해서, 진웅님의 설명을 통해서 이차형식의 식에 대해서 제대로 이해할 수 있었습니다. 뿐만 아니라 재밌는 실습예제를 접할 수 있었고, 마지막 문제에서 약간의 에러가 발생하였지만 교수님께서 피드백 주신 대로 하니까 잘 돌아가서 보람이 느껴졌습니다.
.
3개의 댓글
이상구(LEE SANGGU)8월 2일 오후 4:56
질문 2. 에 대한 답 http://matrix.skku.ac.kr/2008-Lecture/LAA-sglee/text-ch08.html 를 보시면 A = B (대칭행렬) + C (반대칭행렬) 로 나누어 썼을 때 q_[A} (x) = q_[B} (x) + q_[C} (x) 인데 항상 q_[C} (x) = 0 이므로 항상 q_[A} (x) = q_[B} (x) 이므로 A 대신 A 의 대칭행렬 부분인 {A + A^T }/ 2 인 B 로 q_{B} = q_[A} (x) 값을 구하면 마찬가지이므로 A 를 대칭행렬 로 여기고 이론을 전개해도 된다는 의미입니다.
김진웅(2015****73)8월 2일 오후 5:01
변수가 2개(x,y)였을 때는 이차형식이 x^2,y^2(같은 변수의 제곱)과 xy(다른 변수와의 곱)로 이루어진 합이었는데, 변수가 n개(x1,...,xn)로 확장할 때에는 이차형식이 x1^2,..., xn^2(같은 변수의 제곱)과 x1x2,...,xnxn-1(다른 변수와의 곱)으로 이루어진 합이 됩니다. 이것을 식으로 표현한 것이 Σaijxixj입니다. (aij는 각 항의 계수)< Ax, x>는 Ax와 x를 내적한 것이므로 x^tAx가 됩니다. x^tAx를 풀어보면 Σaijxixj가 됩니다.
이상구(LEE SANGGU)8월 5일 오전 7:45
그럼 아래 이차형식 내 자료 꼭 보고 Finalize 하세요 http://matrix.skku.ac.kr/2014-Album/Quadratic-form/
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘ : sage 코드상 다른 실습 사이트를 설명함.
[Final OK by SGLee]
질문 by 채희준
답변 by 김진웅, 이상구
Finalized by 채희준
Q :
수반행렬을 이용한 가역행렬의 역행렬 구하기를 해보는 중에 error 가 발생했습니다.
C = random_matrix(QQ, 10, 10)
print 'C='
print C
if C.is_invertible()==True:
dC = C.det() # 행렬식 구하기
adjC = C.adjugate() # 수반행렬 구하기
print("inverse of C = (1/dC)*adjC =")
print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기
else:
print 'C is not invertible'
교재 part1 예제에 나온 코드를 활용한 것인데 왜 이런 error가 뜨는 지 모르겠습니다.
행렬식과 수반행렬을 이용하여 행렬 의 역행렬을 구하여라.
A = matrix([[3, -2, 1], [5, 6, 2], [1, 0, -3]])
dA = A.det() # 행렬식 구하기
adjA = A.adjugate() # 수반행렬 구하기
print("inverse of A = (1/dA)*adjA =")
print((1/dA)*adjA) # 수반행렬을 이용한 역행렬 구하기
sage를 이용한 실습을 늦게 시작해 1주차 내용을 4주차에 와서 질문하게 됐습니다. 죄송합니다... 혹시 해결방법을 아시는 분은 도와주시면 감사하겠습니다.
A :
김진웅(2015****73)8월 4일 오전 1:16
여기에서 해 보세요 http://matrix.skku.ac.kr/KOFAC/ 실행 되는 것 확인했습니다. print는 괄호 쳐 주세요.
이상구(LEE SANGGU)8월 4일 오전 9:24
김진웅 군이 맞습니다. print는 괄호 쳐 주세요. <--- 명령어가 일부 update 되었습니다. 아래와 같이 하시면 됩니다. C = random_matrix(RDF, 10, 10) print ('C=') print (C) print if C.is_invertible()==True: dC = C.det() # 행렬식 구하기 adjC = C.adjugate() # 수반행렬 구하기 print("inverse of C = (1/dC)*adjC =") print((1/dC)*adjC) # 수반행렬을 이용한 역행렬 구하기 else: print ('C is not invertible')
comment:
http://sage.skku.edu/
여기서 실습을 했었는데, 여기는 업데이트 전 명령어를 사용하고 있었군요.
http://matrix.skku.ac.kr/KOFAC/ 에서 같은 코드로 실행해보니 제대로 나오는 것을 확인했습니다.
답변 해주셔서 감사합니다!!
43’[Final OK by SGLee] final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘ : 극대극소의 정의로 안장점을 설명함.
[Final OK by SGLee] final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅
3주차 임계점에 관한 질문입니다.
교재 p.178에 임계점에 대한 시각적인 이해 그림이 있습니다.
이 그림입니다.
이 그림이 평소 극대, 극소값을 보는 평면과 달라 이해가 잘 안됩니다.
제가 생각한 바로는 C점을 지나고 x축과 평행한 평면에 두고 생각하면 C점이 극댓값이 된다고 생각하였습니다.
꼭 x축과 평행하지 않아도 C점을 지나는 평면을 생각했을 때도 극대 또는 극소의 값을 갖을 것으로 봅니다.
어느 부분에서 극대,극소값을 갖지 않는지 궁금합니다.
Final
감사합니다.
극대,극소값이 되지 않는 경우가 있다고 해서 그 부분에 꽂혔나봅니다.
C점에서 극소도 되고 극대도 된다는 것이 모든 점에서 극소, 극대 한가지만 되는것이 아니라는 것을 알게되었습니다.
평면이 아닌 입체라서 당황했나봅니다. 제가 놓쳤던 부분을 알려주셔서 감사합니다.
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘ : 임계점 풀이와 cos값을 설명함.
교재 p. 181에 예제 13번을 풀다가 의문이 생겨서 질문을 올립니다.
제가 삼각함수에 대해서는 고등학교때 배운 sin,cos,tan의 30,45,60도 일 때가 전부입니다.
그래서 이번 수업에서 sin,cos가 나올 때마다 긴장하고 집중하면서 공부하고 있습니다.
일단 문제는
여기서 풀이 첫번째 줄에서 2x+z / 3 sin y / x+2z / 3 cos y가 되는 것은 이해가 되었습니다.
그리고 f 의 임계점 a=(0,n pi,0)인 것도 이해가 되었습니다.
일단 첫번 째 질문은 i)에서 임계점 a=(0,2k pi,0)로 두는 건지 궁금합니다.
크게 상관없어보이지만 2k를 두어 왜 짝수모양으로 두는지 궁금합니다.
두번 째 질문은 f의 헤시안행렬을 구할 때 y^2부분(2,2부분?)에서 왜 3이 나오는지 궁금합니다. 3cos (2kpi)= -3 아닙니까?
이렇게 계산이 되니 Δ1=2, Δ2=-6 이 되어 값이 다르게 나옵니다.
제가 삼각함수를 잘 몰라서 그런지 답이 다르게 나옵니다.
혹시 제가 계산 실수가 있는지 확인 부탁드립니다.
Fianl
A1. n pi 를 홀수와 짝수로 나누는 이유는 둘의 값이 다르기 때문이다.
홀수일 때는 안장점이 되고, 짝수일 때는 극소값이 된다.
A2. 3cos(2k pi)=3 이다. cos pi=-1, cos2pi=1이다.
comment
삼각함수에 대해 잘 알지 못해서 어려웠었다.
많은 학우분께서 도움을 주셔서 쉽게 해결되었다.
감사합니다.
김진웅(2015****73)8월 5일 오전 12:42
(1) 2kπ일 때와 (2k+1)π일 때가 나오는 값이 다르기 때문에 나누어 풉니다.
(2) 3cos(2kπ)=3입니다. cos(2kπ)=1이기 때문입니다. cos(0)=1
채희준(2016****00)8월 5일 오전 12:51
f의 임계점의 y 성분이 pi의 정수배 이므로 교재에서는 2k(짝수)pi 일 때와 2k+1(홀수)pi 일 때로 나눠서 풀고 있습니다.
그 이유는, cos(2kpi) = cos(0) =1이 되고 cos((2k+1)pi) = cos(pi) = -1이 되기 때문입니다.
fyy는 3cos(2kpi) = 3cos(0) = 3 이 됩니다.
나종진(2017****17)8월 5일 오전 12:57
추가질문 (1) 왜 이번 문제는 짝수일 때를 가정하고 푸는 건가요?
3siny가 0이 될 때는 n pi에 n이 짝수, 홀수 상관없지 않나요?
정원철(2017****79)8월 5일 오전 9:19
진웅님과 희준님이 설명하신대로 입니다.
sin과 cos의 그래프를 한번 생각해보시면 와닿으실 것 같습니다.
sin은 π값이 정수가 될 때 0이 되서 상관 없지만 기본적인 cosx는 2π일 때는 1, 2π+1일 떄는 -1을 가져 극대, 극소가 번갈아가며 나옵니다.
sin(kπ) = 0
cos(2kπ) = 1, cos(2kπ+1) = -1
김진웅(2015****73)8월 5일 오후 12:38
(1) 뒤에 가 보면 홀수일 때를 가정하고 푸는 과정이 나와 있습니다.
이미지는 풀이 (i)입니다. (ii)가 있습니다.
Comment(7개)
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘
24’2주차 4-1, 4-2 요약정리 및 질문‘
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’
[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.
작성자 : 장환승(2016****69)작성일 : 7월 17일 오전 11:06
조회수 : 67
[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.
저도 방 코드를 숫자로만 적어야 된다는 사실을 몰라서 10분정도 늦게 들어갔습니다.
제가 들어간 이후부터 내용을 정리하자면,
1. 궁금한 점이 있으면 언제든지 문의 게시판에 글 남겨달라.
2. OH 가 필요하다면 요청하고, 금요일 오전 10시 반부터 11시 20분까지는 교수님이 시간 낼 수 있다고 하셨습니다.
3. 선형대수학을 선이수한 학생들은 문의 게시판에 다른 학생들 질문에 답변해주고 part 2 , 미적분학 먼저 공부하라.
4. 공부하실 때는, 교수님께서 올려주신 사이트 http://matrix.skku.ac.kr/math4ai/ 읽으시면서 학습하시면 되는 것 같습니다.
궁금한 한 것도 여기 http://matrix.skku.ac.kr/math4ai/ 서 복사해서 QnA 에 가져오면서 ... ... "바로 여기 몇번째 줄에서 .. 다음 줄로 넘어가는 부분이 이해 안됩니다." 하고 물어보면 서로 쉽습니다.
다른 학생 질문에 대해 설명하실 때와 앞으로 무슨 내용을 배울 지 사이트에서 설명해주셨거든요.
김진웅(2015****73)7월 17일 오전 11:46
어떻게 들어가는 지 몰라 참석을 못하였는데, 정리 감사합니다!
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘
[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기
Solved and Finalized by 유가이 올렉산드르
I. 선형변환 (Linear Transformations) 강의 요약 및 정리
1. 행렬변환 (matrix transformation), 선형변환 (linear transformation)
► 입력과 출력이 모두 벡터인 함수를 변환 (transformation)이라 한다 . R n 에서 R m 으로의 변환 T: R n => R m 에서 w = T(x)를 벡터 x 의 T 에 대한 이미지 (image), x 를 벡터 w 의 원상 (pre-image)이라 한다 .
● Additional definition: A transformation (or function or mapping) T from R n to R m is a rule that assigns to each vector x in R n a vector T(x) in R m . The set R n is called the domain of T , and R m is called the codomain of T . For x in R n , the vector T(x) in R m is called the image of x (under the action of T ). The set of all images T(x) is called the range of T .
Figure 1: Domain, codomain, and range of T : R n => R m [2]
► 변환의 특수한 경우로 , A 가 mxn 행렬이고 , T A (x) = Ax , x ∈ R n 인 T A : R n => R m 를 행렬변환 (matrix transformation)이라 한다 .
●Additional definition (Matrix multiplication case): For each x in R n , T(x) is computed as Ax , where A is an mxn matrix. For simplicity, we sometimes denote such a matrix transformation by x ↦Ax . Note that, the domain of T is R n where A has n columns and the codomain of T is R m when each column of A has m entries. The range of T is the set of all linear combinations of the columns of A , because each image T(x) is of the form Ax .
► R n 에서 R m 으로의 변환 T : R n => R m 가 임의의 벡터 u , v ∈ R n 와 임의의 스칼라 k 에 대하여 다음 두 조건을 만족하면 T 를 R n 에서 R m 으로의 선형변환 (linear transformation)이라고 한다 .
(1)T(u+v) = T(u) + T(v) for all u , v in the domain of T ;
(2)T(ku) = kT(u) (k ∈R) for all scalars c and all u in the domain of T .
Note: R n 에서 R n 자신으로의 선형변환 T: R n => R n 를 R n 위의 선형연산자 (linear operator)라고 한다 .
●Remarks:
If T is a linear transformation, then T(0) = 0 and T(cu+dv) = cT(u) + dT(v) for all vectors u , v in the domain of T and all scalars c , d .
Note that, if a transformation satisfies equation T(cu+dv) = cT(u) + dT(v) for all c , d , it must be linear. Repeated application of T(cu+dv) = cT(u) + dT(v) produces a useful generalization:
T(c 1 v 1 + … + c p v p ) = c 1 T(v 1 ) + … + c p T(v p )
In engineering and physics, above equation referred to as a superposition principle .
► Theorem 1: Let T : R n ↦R m be a linear transformation. Then there exists a unique matrix A such that
T(x) = Ax for all x in R n
Here, A is the mxn matrix whose jth columns is the vector T(e j ), where e j is the jth columns of the identity matrix R n :
A = [T(e 1 ) ∙∙∙ T(e n )]
The matrix A above is called the standard matrix(표준행렬 ) for the linear transformation T .
■
● Remark: The term linear transformation focuses on a property of a mapping, while matrix transformation describes how such a mapping is implemented.
2. 핵 (kernel), 단사 , 전사 , 전단사 , 동형사상 (isomorphism )
► Theorem 2.1: Let T: R n -> R m be a linear transformation. Then T is one-to-one if and only if the equation T(x) = 0 has only the trivial solution .
► Theorem 2.2: Let T: R n -> R m be a linear transformation, and let A be the standard matrix for T . Then:
a.T maps R n onto R m if and only if the columns of A span R m ;
b.T is one-to-one if and only if the columns of A are linearly independent.
► 선형변환이 단사일 필요충분조건
R n , R m 이 벡터공간이고 T: R n -> R m 가 선형변환일 때 , T 가 단사일 필요충분조건은 ker(T) = {0}이다 .
연습문제 1: In the following problem, with T defined by T(x) = Ax , find a vector x whose image under T is b , and determine whether x is unique.
Solution
연습문제 2: In the following problem, fill in the missing entries of the matrix, assuming that the equation holds for all values of the variables.
Solution
1. Very fast method:
2. Slower, but more clear method:
Compare both sides
So, the matrix A is
■.
Comment: I think this to be a fairly simple, but useful topic in linear algebra. I would especially like to note its application in the field of image manipulation in Image Processing. I tried to summarize this topic as I understood it, and also gave several examples of solving problems manually for a deeper understanding.
김진웅(2015****73)7월 23일 오후 5:04
연습문제 2에서 A를 미지수로 잡을 필요 없이, e1=(1,0,0), e2=(0,1,0), e3=(0,0,1)를 [3x1-2x3, 4x1, x1-x2+x3]에 각각 대입하여 나온, T(e1)=(3, 4, 0), T(e2)=(0, 0, -1), T(e3)=(-2, 0, 1)를 열로하는 A를 구해도 될 것 같습니다. (solution 1과 비슷하지만 식으로 정리해 보았습니다.) 좋은 summary와 문제 잘 보았습니다. 감사합니다
24’2주차 4-1, 4-2 요약정리 및 질문‘
질문
1. 소행렬식을 이용하여, 이차형식의 정부호를 결정하는 것이 고윳값을 계산하는 cost가 들지 않기 때문에 좋은 방법인 것인가요?
제가 생각하기에 특정 행렬에서는(크기가 무척이나 큰 행렬..?) 반복문을 통해 소행렬식의 여러 개의 det을 구하는 것보다는 그냥 고윳값을 한 번 계산하는게 cost가 적을 수 있다는 생각이 듭니다.
2. 다음과 같은 정리에서
저 소행렬식을 통한 양의 정부호, 음의 정부호가 아닌 경우는 무조건 부정부호 인 것인가요? (준정부호 제외)
장환승(2016****69)7월 26일 오후 7:25
2번 질문은 정확하게 말해서, 두 조건을 제외한 나머지 조건의 경우, 부정부호의 필요충분조건이 되는 것인가요? 당연한 소리같긴한데..
이상현(2020****98)7월 26일 오후 8:50
양의 정부호가 아닐경우 모든 고윳값이 양수가 아닌 경우가 되고 음의 정부호가 아닐경우 모든 고윳값이 음수가 아닌 경우가 되기 때문에 양수 및 음수 고윳값을 둘 다 가진 경우가 됩니다. 이는 부정부호 행렬이기 위한 필요충분조건이기에 무조건 부정부호가 맞습니다.
이상구(LEE SANGGU)7월 26일 오후 8:51
2번 질문은 정확하게 말해서, 양의 정부호 도 아니고, 음의 정부호 가 아니면 3. 그리고 양인 소행렬식도 있고, 음일 소행렬식도 섞여서 있으면 무조건 부정부호입니다. 4. 이제 남는 것 이어떤 선행소행렬식이 영 인 경우 가 섞여 있는 경우입니다. 이 경우 positive semidefinite, negative semidefinite 도 따로 고려 합니다. 1. 모두 양 은 positive definite = pd = 양의 정부호 2. 모두 음, 은 nd = 음의 정부호 3. 양 과 음 이 섞여 있는 경우, indefinite = 부정부호그리고 4. 양과 영 only , 는 positive semi definite = psd. 5. 음과 영 only 는 nsd. 6. 양과 음 그리고 영도 섞여 있는 경우도 부정부호 입니다. indefinite = 부정부호입니다.
김진웅(2015****73)7월 27일 오후 3:18
(양,음) 뿐만아니라 (양,음,영)도 indefinite이 됨을 배워갑니다.
이상구(LEE SANGGU)7월 28일 오후 12:06
Good^^
26’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승
SVD를 공부하면서 실제로 어떻게 활용될 수 있을지 고민하던 중에 진행해본 작업입니다.
저와 같은 궁금증을 품으셨던 분들에게 도움이 되기를 바랍니다 :)
주 참고자료 : darkpgmr.tistory.com/106 (특이값 분해의 활용)
들어가기에 앞서
특이값분해의 원리를 충분히 이해하시고 읽어주시면 감사하겠습니다. 김진웅 학우의 ‘2주차 SVD 정리’ 글이 도움이 될 것입니다. ߘ
최소자승법 : ‘최소제곱법’이라고도 불리며 어떤 계의 해방정식을 근사적으로 구하는 방법으로, 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법(위키백과)
최소자승법을 설명한 이유는 이번에 사용하려는 의사역행렬이 이와 유사한 개념으로 활용되기 때문입니다. 역행렬이 존재하지 않는 비가역행렬에 의사역행렬을 생성하여 비가역행렬 A에서 Ax = b의 해를 A의 의사역행렬 A +를 활용하여 x = A +b 형태로 계산하고 이 x가 llAx-bll를 최소화하게끔 만드는 식으로 활용합니다. (오차의 제곱의 합이 최소가 되는 해를 구하는 최소자승법의 개념을 응용한다는 뜻입니다 )
의사역행렬의 SVD 공식은 A + = VΣ+U T 이며 기존 SVD 공식에서 U와 V의 순서가 바뀌고 전치가 바뀌며, Σ에서 0이 아닌 고유값들의 역수를 취한 후 전치하여 nxm행렬로 만듭니다. 기존 SVD 공식이 A = U ΣV T 였던 것과 비교하며 확인하시기 바랍니다 .
(https://bskyvision.com/256 참고)
기반 데이터
통계청 해외직접투자 현황, 2002 ~ 2019년까지의 연도별 투자금액 데이터 (KOSIS)
(수식을 간단하게 만들기 위해 해당 데이터를 천만 달러 단위로 축약하여 사용)
투자금액 추이가 다음과 같은 모습을 보이고 있으므로 모델을 2차 포물선으로 만들기로 합니다.
모델
연도를 x, 투자 금액을 y로 하고서 y = ax 2 + bx + c 로 모델을 형성하고 이를 선형 연립방정식으로 재정리하면 아래와 같아집니다.
ax 1 2 + bx 1 + c = y 1
ax 2 2 + bx 2 + c = y 2
ax 3 2 + bx 3 + c = y 3
…
ax 18 2 + bx 18 + c = y 18
역행렬이 존재한다면 해당 점을 모두 지나는 포물선이 존재한다는 뜻인데 불가능한 일이므로 의사역행렬을 이용합니다. Python에서는 numpy 패키지의 pinv()함수를 이용하면 의사역행렬을 손쉽게 구할 수 있습니다. 하지만 SVD를 이용하여 이를 구해내는 과정을 경험하는 것이 목적이므로 직접 풀어보며 돌아가는 방법을 택하겠습니다.
코딩 (with Python)
먼저 필요한 패키지들을 import 한 뒤 앞서 설명한 행렬 A와 B를 생성합니다.
하단의 A.shape와 B.shape는 행렬의 mxn 형태를 보여주는 식입니다.
다음과 같이 알맞게 행렬 A와 B가 형성되었습니다.
그 이후에는 특이값 분해를 실행합니다. numpy.linalg 패키지의 svd 함수를 활용하여 간단하게 특이값 분해를 진행할 수 있습니다.
결과로 Sigma Value에 고유값이 3개 형성된 것을 볼 수 있습니다.
이제 의사역행렬을 만들어낼 차례입니다. 이를 위해서 앞서 설명한대로 s를 S_mat의 형태로 변형합니다.
Reciprocal()함수를 이용해 고유값들의 역수를 취한 re_s를 만들고 transpose()함수를 이용하여 이를 전치한 S를 만든 뒤, S를 대각행렬에 0을 붙인 형태인 S_mat으로 만듭니다.
이때 S_mat은 nxm 행렬이 된다는 것을 잊지맙시다.
(그림 출처 : https://darkpgmr.tistory.com/106 )
위와 같이 s가 S_mat으로 변형됩니다.
공식에 맞게 각 행렬들을 수정한 뒤에 의사역행렬 piA를 계산합니다.
만약 piA가 제대로 구해졌다면 A에서 piA의 전치를 뺀 행렬은 영행렬에 가까워져야 할 것입니다.
결과가 어느정도 0에 가깝게 나타난 것 같습니다. (사실 더 0에 가깝게 만들고 싶었지만 실패했습니다..)
이제 구해진 의사역행렬으로 해를 구해보겠습니다.
직접 손 코딩으로 구해본 의사역행렬이 numpy에서 제공하는 pinv()함수와 비교했을 때 얼마나 차이가 있는지 확인해봅시다.
완벽하게 동일한 결과가 만들어졌습니다! 원리를 이해했으니 앞으로는 pinv()함수를 사용하여 간편하게 계산하도록 합시다..!
이제 2020년의 금액을 추정해보고 이를 시각화하여 표현해봅시다
앞서 구한 값들을 a,b,c에 대입하여 구해진 2020년의 해외직접투자 금액은 56,237 천만 달러로 추정되었습니다.
전체 그래프로 확인했을 때 2006년부터 곡선을 중심으로 위아래로 변화하며 상승하는 모습을 보이는데 2020년에는 다시 하락세를 형성한다고 예측되었습니다.
아직 2020년이 다 끝나지않아서 실제로 맞아 떨어지는지는 알 수 없습니다만, 더 높은 정확도를 가지는 모델들을 활용하는 것이 좋아 보입니다.
마치며
지금까지 python을 활용하여 2020년 해외직접투자 금액을 추정하는 모델을 SVD와 의사역행렬을 이용하여 만들어보았습니다.
이번 주 초에 완성해서 올려보고 싶었으나 처음 배우고 행해보는 일이라 꽤나 많은 시간이 소모되었습니다.
또 타인의 눈에도 잘 진행된 시도였는지 모르겠네요.
다만 해당 과정에서 SVD와 의사역행렬에 대한 개념, 그리고 이를 활용하는 방법에 대하여 제대로 숙지할 수 있었던 것 같습니다.
여러분들도 기회가 된다면 직접 코딩해보며 개념을 익혀보시는걸 추천 드립니다 :)
(파이썬 원본 파일은 요청하시면 공유하도록 하겠습니다)
많은 분들이 좋은 반응을 보여주셔서 고생한 보람이 가득한 결과였습니다.
교수님께서 이번 기말고사 유형으로 만들어보자는 의견을 내주셨는데, 적극 찬성입니다!
이번 경험을 통해 실제로 배운 개념을 활용해보는 시도는 결과를 떠나 이를 익히고 기억하는데 큰 도움이 된다고 느꼇습니다.
기말고사 형식으로 추가된다면 저와 비슷한 시도를 해보려고 생각하던 학우분들께도 큰 동기부여와 기회가 만들어질 수 있을 것 같습니다.
무엇보다 재미있을 것 같습니다! 긍정적으로 고려해주시면 감사하겠습니다 :)
채희준 학우님께서 제 코드를 활용해보고 싶어하시는 듯 하여 원본 파이썬 파일을 첨부합니다.
SVD와 의사역행렬, 그리고 파이썬을 공부하시는데 도움이 되기를 바랍니다.
svd_pinv_amount_of_investment.py
#%%
import numpy as np
from numpy.linalg import svd
import matplotlib.pyplot as plt
# 행렬 A,B 생성
year = [2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019]
A = np.array([2002*2002,2002,1])
for years in year:
add = np.array([years*years,years,1])
A = np.vstack((A,add))
if years == 2019:
break
B = np.array([[4056],[4770],[6552],[7282],[11876],[22687],[24021],[20709],[24637],
[29082],[28540],[30192],[26998],[27180],[34986],[43696],[49781],[61847]])
print(A.shape,B.shape)
print(A)
print(B)
# %%
# 특이값 분해 실행, 여기서 s는 고유값 리스트
U, s, Vt = np.linalg.svd(A, full_matrices=True)
print(U.shape, s.shape, Vt.shape)
print('U matrix:\n',np.round(U, 3))
print('Sigma Value:\n',np.round(s, 3))
print('Vt transpose matrix:\n',np.round(Vt, 3))
# %%
# 의사역행렬을 piA를 구하기 위하여 s를 변형 (S_mat)
# 이때 변형된 s는 원래의 행렬에서 0이 아닌 고유값들의 역수를 취한 후 전치시킨 행렬
re_s = np.reciprocal(s)
S = np.transpose(re_s)
S_mat = np.diag(S)
for i in range(0,15,1) :
plus = np.array([[0],[0],[0]])
S_mat = np.hstack((S_mat,plus))
Ut = np.transpose(U)
V = np.transpose(Vt)
piA = np.dot(V,np.dot(S_mat,Ut))
# 만약 제대로 의사역행렬이 구해졌다면 행렬 A에 A의 의사역행렬 piA를 전치시킨 값을 뺏을때
# 0에 가까운 값들로 구성된 행렬이 나와야 함
print(A - np.transpose(piA))
# => 결과가 0에 가까운 것을 알 수 있음
# %%
# 의사역행렬을 통해 해를 구하기
X = np.dot(piA,B)
print(X)
piA_t = np.linalg.pinv(A)
X_t = np.dot(piA_t,B)
print(X_t)
# pinv 함수와 비교했을때 동일한 결과가 나오는 것을 확인할 수 있다.
# %%
# 시각화 표현, 여기서 2020년의 데이터는 예측치로 약 56,237(천만 달러)가 수치화되었다.
x = np.array([[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],
[2011],[2012],[2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020]])
forcast = 2020*2020*X[0]+X[1]*2020+X[2]
add_b = np.array([forcast])
y = np.vstack((B,add_b))
plt.figure(figsize=(15,5))
plt.plot(x,y,'o', label='투자 금액',markersize=10)
plt.ylabel('연도')
plt.xlim(2001,2021)
plt.ylim(0,80000)
plt.plot(x,X[0]*x*x+X[1]*x+X[2],'r')
plt.xticks([2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,
2014,2015,2016,2017,2018,2019,2020])
plt.title('Amount of investment to abroad', loc='center')
plt.legend
print(forcast)
# %%
김진웅(2015****73)7월 27일 오후 3:02
배웠던 수학 이론과 원리를 실제 데이터에 적용하는 과정을 잘 보았습니다.
다양한 데이터의 추세를 (1) 시험삼아 SVD를 이용하여 pseudo inverse를 만들어서 추정해 보고 (2) 패키지에서 제공하는 함수로 바로 pseudo inverse를 적용할 수 있음을 알게 되었습니다.
이에 (1) numpy.linarg.svd()로 svd를 구할 수 있음과 (2) numpy.linarg.pinv()로 pseudo inverse를 구할 수 있음을 알게 되었습니다.
응용 감사합니다.
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘
[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습
Solved and Finalized by 유가이 올렉산드르
I. 최대값 최소값 (Maximum and Minimum Values) [1], [2], [3]
►Definition (Increasing and Decreasing Function): A function f is increasing over I if, for every a and b in I ,
If a <b , then f(a) <f(b).
(If the input a is less than the input b , then the output for a is less than the output for b .)
A function f is decreasing over I if, for every a and b in I ,
If a <b , then f(a) >f(b).
(If the input a is less than the input b , then the output for a is greater than the output for b .)
● Important remark:
► Theorem 1: If f ‘(x) >0 for all x in an open interval I , then f is increasing over I .
If f ‘(x) <0 for all x in an open interval I , then f is decreasing over I .
● Example:
► Definition (Critical Values): A critical value of a function f is any number c in the domain of f for which the tangent line at (c, f(c)) is horizontal or for which the derivative does not exist.
That is, c is a critical value if f(c) exists and
f ‘(c) = 0 or f ‘(c)does not exist .
Note the following:
1. f ‘(c) = 0 at x = c 1 , c 2 , c 4 , c 7 , and c 8 . That is, the tangent line to the graph is horizontal for these values.
2. f ‘(c) does not exist at x = c 3 , c 5 , and c 6 . The tangent line is vertical at c 3 , and there are corner points at both c 5 and c 6 .
► Intuitive Definition (최대값과 최소값 ):f(x)가 폐구간 [a, b]에서 연속이면 이 구간에서 f(x)가 최소값을 취하는 점 및 최소값을 취하는 점이 존재한다 .
따라서 , 1 차 도함수의 방정식의 근인 극값에서의 함수 값과 구간의 양 끝점에서의 함수값을 비교하여 , 최댓값과 최솟값을 쉽게 구할 수 있다 .
► General Definition: Let c be a number in the domain D of a function f . Then f(c) is the
* absolute maximum value of f on D if f(c) ≥ f(x) for all x in D .
* absolute minimum value of f on D if f(c) ≤ f(x) for all x in D .
Note that , an absolute maximum or minimum is sometimes called a global maximum or minimum . The maximum and minimum values of f are called extreme values of f .
► Definition: The number f(c) is a
* local maximum values of f if f(c) ≥ f(x) when x is near c .
* local minimum value of f if f(c) ≤ f(x) when x is near c .
Note that , in this definition, if we say that something is true near c , we mean that it is true on some open interval containing c .
Figure: Absolute minimum f(a), absolute maximum f(d), local minimum f(c), f(e), local maximum f(b), f(d)
► Theorem 2 (The Extreme Value Theorem): If f is continuous on a closed interval [a, b], then f attains an absolute maximum value f(c) and an absolute minimum value f(d) at some numbers c and d in [a, b].
► Theorem 3 (Fermat’s Theorem): If f has a local maximum at c , and if f ‘(c) exists, then f ‘(c) = 0 .
► The Closed Interval Method: To find absolute maximum and minimum values of a continuous function f on a closed interval [a, b]:
1. Find the values of f at the critical numbers of f in (a, b).
2. Find the values of f at the endpoints of the interval.
3. The largest of the values from Steps 1 and 2 is the absolute maximum value; the smallest of these is the absolute minimum value.
► 연습문제 1: Find the absolute maximum and absolute minimum values of f on the given interval.
f(x) = 3x 4 – 4x 3 – 12x 2 + 1, [-2, 3]
Solution
In this problem, I want to show you how to use the Closed Interval Method to find the absolute maximum and minimum values of function.
Since f is continuous on [-2, 3], use the close interval method.
f(x) = 3x 4 – 4x 3 – 12x 2 + 1
f ‘(x) = 12x 3 – 12x 2 – 24x = 12x(x 2 – x - 2) = 12x(x - 2)(x + 1)
Therefore, f ‘(x) = 0 if 12x(x - 2)(x + 1) = 0 , that is x = -1 , x = 0 , or x = 2 .
Hence, the critical numbers of the function are -1 ;0 ; -2 and it lies in the interval [-2, 3].
The value of f at the critical numbers are,
f(-1) = 3(-1)4 – 4(-1)3 – 12(-1)2 + 1 = -4 ;
f(0) = 3(0)4 – 4(0)3 – 12(0)2 + 1 = 1 ;
f(2) = 3(2)4 – 4(2)3 – 12(2)2 + 1 = -31 .
The value of f at the endpoints of the interval are,
f(-2) = 3(-2)4 – 4(-2)3 – 12(-2)2 + 1 = 33 ;
f(3) = 3(3)4 – 4(3)3 – 12(3)2 + 1 = 28 .
Compare these values, the absolute maximum value is f(-2) = 33 and the absolute minimum value is f(2) = -31 .
Verification using SAGE + Graph plotting:
Code:
var('x')
f(x) = 3*x^4 - 4*x^3 - 12*x^2 + 1
P = plot(f(x), x, -4, 4, linestyle = "-", color = 'green')
show(P, ymax = 35, ymin = -35)
S = solve(diff(f(x)) == 0, x) # find the critical numbers
print('Critical numbers of function', S)
maximum = max(f(-1), f(0), f(2), f(-2), f(3)) # find maximum value
minimum = min(f(-1), f(0), f(2), f(-2), f(3)) # find minimum value
print('Absolute maximum value: ')
print(maximum)
print('Absolute minimum value:')
print(minimum)
Output:
. ■
II. 뉴턴-랩슨법 [1], [3], [4], [5], [6], [7]
► Definition (Newton’s method): 비선형방정식의 근을 결정할 때 자주 사용하는 방법 중 하나이다 . 개발자인 뉴턴 (Newton)과 랩슨 (Raphson)의 이름을 합쳐서 뉴턴 -랩슨법이라고도 한다 .
► Additional definition: The Newton-Raphson method (also known as Newton’s method) is a way to quickly find a good approximation for the root of real-valued function f(x) = 0 . It is uses the idea that a continuous and differentiable function can be approximated by a straight line tangent to it.
Unlike the bisection and false position methods, the Newton-Raphson (N-R) technique requires only one initial value x 0 , which we will refer to as the initial guess for the root . To see how the N-R method works, we can rewrite the function f(x) using a Taylor series expansion in (x-x 0 ):
f(x) = f(x 0 ) + f'(x 0 )(x-x 0 ) + 1/2 f''(x 0 )(x-x 0 )2 + ... = 0
where f'(x) denotes the first derivative of f(x) with respect to x , f''(x) is the second derivative, and so forth. Now, suppose the initial guess is pretty close to the real root. Then (x-x 0 ) is small, and only the first few terms in the series are important to get an accurate estimate of the true root, given x 0 . By truncating the series at the second term (linear in x ), we obtain the N-R iteration formula for getting a better estimate of the true root:
Thus the N-R method finds the tangent to the function f(x) at x=x 0 and extrapolates it to intersect the x axis to get x 1 . This point of intersection is taken as the new approximation to the root and the procedure is repeated until convergence is obtained whenever possible. Mathematically, given the value of x = x i at the end of the i th iteration, we obtain x i +1 as
● Remark: Note that, x 0 should be closer to the root you need than to any other root (if the function has multiple roots).
► Geometrical Representation: Here is a picture to demonstrate what Newton’s method actually does:
We draw a tangent line to the graph of f(x) at the point x = x n . This line has slope f'(x n ) and goes through the point (x n , f(x n )). Therefore it has the equation y = f'(x n )(x−x n )+f(x n ). Now, we find the root of this tangent line by setting y = 0 and x = x n+1 for our new approximation. Solving this equation gives us our new approximation, which is x n+1 = x n – f(x n ) / f'(x n ).
● Remark: 예를 들면 , 이분법은 함수 f(x)값만 알아도 되지만 , 뉴턴법은 함수 f(x)와 더불어 함수 f(x)의 1 차 도함수 f'(x)값도 반드시 알아야 하는 단점이 있다 . 그러므로 뉴턴법을 사용할 때는 반드시 근사시키는 함수 f(x)가 미분 가능한지를 먼저 확인해야 한다 .
♦ 근 찾기 방법 비교
► 근의 찾기 기본 방법에 대한 간략한 정의 :
(1) 이분법 :구간의 중앙값을 이용하여 함수의 근을 찾는 방법이다 .
● 이분법 공식
초기 구간 [a 1 , b 1 ]
연속 구간 [a i , b i ]
중앙값 c i = (a i + b i ) / 2
절대 오차 |α - c n | ≤ (1 / 2)n (b 1 – a 1 )
(2) 뉴턴법 /뉴턴 -랩슨법 :초기 근삿값 한 개를 이용하여 미분 가능한 연속 함수 f(x)와 함수의 1 차 도함수 f'(x)를 이용하여 함수의 근을 찾는 방법이다 .
● 뉴턴법 공식
x n+1 = x n – ( f(x n ) / f'(x n ) ) [n = 0, 1, 2, ···]
(3) 할선법 :뉴턴법을 기초로 이용하지만 뉴턴법과 다르게 1 차 도함수 f'(x)의 평가가 필요 없는 함수의 근을 찾는 방법이다 .
● 한선법 공식
x n+1 = x n – f(x n )·( (x n – x n-1 ) / (f(x n ) – f(x n-1 )) ) [n = 1, 2, 3, ···]
(4) 가위치법 :구간의 폭을 연속적으로 좁히면서 정확한 근을 구하지 않고 구간의 끝점들을 직선으로 연결하고 직선의 절편의 위치를 결정하여 함수의 근을 찾는 방법이다 .
● 가위치법 공식
m n = ( (f(b n ) – f(a n )) / (b n - a n ) ) [n = 0, 1, 2, ···]
x n = a n – ( (f(a n )) / (m n ) ) [n = 0, 1, 2, ···]
► 근 찾기 방법 비교하기
수치해석에서 이분법 , 뉴턴법 /뉴턴 -랩슨법 , 할선법 , 가위치법을 이용하면 함수의 실제 근 찾기가 가능하다 . 이 방법들은 반복 실행을 통해 점검 실제 근에 수렴하는 근삿값을 추정한 후에 함수 f(x)와 이전의 추정된 값을 토대로 이후의 값을 계산한다 .
● 이분법 :근삿값 두 개의 중앙값을 이용한 반복 수행으로 비교적 느린 속도로 실제 근에 수렴한다 . 이분법은 뉴턴법보다 실제 근에 수렴하는 속도는 느리지만 항상 수렴한다 . 반면에 뉴턴법은 근 찾기 방법 중에서 수렴 속도가 가장 빠르지만 종종 수렴에 도달하지 않는 경우도 있다 .
● 뉴턴법 /뉴턴 -랩슨법 :근 찾기에 매우 강력한 기술로 초기 근삿값 한 개만 필요로 한다 . 처음 추정하는 근삿값이 실제 근에 매우 근접하게 선택되는 경우에는 가장 빠르게 실제 근에 수렴되는 방법이다 . 반면에 실제 근에서 너무 멀리 떨어진 근삿값에서 시작하면 수렴하지 않을 수 있다 . 뉴턴법은 할선법보다 적은 반복으로 근을 찾으므로 수렴 속도가 빠르다 . 그러나 반복 실행으로 찾는 근삿값에서 함수 f(x )와 1 차 도함수 f'(x)의 더 복잡한 계산을 필요로 하기에 근 찾기에 더 많은 시간을 소모하는 단점이 있다 .
● 할선법 :뉴턴법과 거의 비슷하게 사용하는 근 찾기 방법이다 . 할선법은 초기 근삿값 두 개가 필요하지만 반복되는 각각의 근삿값에서 함수 f'(x)만 계산하면 된다 . 할선법은 이분법과 가위치법보다 더 좋은 근사치를 얻지만 실제 근에 완전하게 수렴하지 않는 단점이 있다 .
● 가위치법 :이분법과 할선법을 결합시킨 방법이다 . 할선법의 반복 (recurrence) 공식은 뉴턴법의 공식에서 유도할 수 있다 . 이분법과 다르게 뉴턴법 혹은 할선법은 주어진 구간에 대한 구간법 이용이 불확실하다 . 가위치법은 할선법과 동일한 방법으로 근삿값을 추정하지만 반복할 때마다 구간법을 이용한다 . 가위치법은 이분법보다 신속하게 근을 찾을 수 있지만 , 이분법보다 계산이 복잡하다 . 가위치법은 끝점 두 개가 필요하고 항상 실제 근에 수렴한다 .
► Remark:위의 모든 내용을 쉽게 이해하려면 다음 표를 참조하십시오 .
방법 |
필요한 초깃값 |
수렴 여부 |
수렴 속도 |
필요한 함수 |
이분법 |
2 |
항상 수렴 |
느림 |
f(x) |
뉴턴법 |
1 |
대개의 경우 수렴 |
가장 빠름 |
f(x), f'(x) |
할선법 |
2 |
대개의 경우 수렴 |
빠름 |
f(x) |
가위치법 |
2(끝점 ) |
항상 수렴 |
적당히 빠름 |
f(x) |
연습문제 2: 다음 비선형방정식이 구간 [0, 1]에서 양의 근이 하나 존재한다 . 뉴턴법을 이용하여 반복해서 나타나는 근들을 계산하라 .
f(x) = x 3 + 2x 2 – 1
Solution
함수 f(x)의 1 차 도함수는 f'(x) = 3x 2 + 4x 이다 . 추정하는 초깃값 x 0 는 주어진 중앙값 0.5 로 정하자 . 뉴턴 -랩슨법 공식과 x 0 를 이용하면 순서대로 추정하려는 근 x 1 , x 2 , ···를 계산할 수 있다 . 뉴턴 -랩슨법의 반복 계산은 다음과 같이 실행한다 .
x n+1 = x n – ( (x n 3 + 2x n 2 - 1) / (3x n 2 + 4x n ) ) [n ≥ 0]
위의 식에 n = 0 을 대입하면 다음과 같다 .
x 1 = x 0 – ( (x 0 3 + 2x 0 2 - 1) / (3x 0 2 + 4x 0 ) ) = 0.5 – ( ((0.5)3 + 2(0.5)2 - 1) / (3(0.5)2 + 4(0.5)) ) = 0.6363636364
계속해서 n = 1 , n = 2 , n = 3 을 순서대로 대입하면 다음과 같은 추정하려는 각각의 근을 구할 수 있다 .
x 2 = x 1 – ( (x 1 3 + 2x 1 2 - 1) / (3x 1 2 + 4x 1 ) ) = 0.6363636364 – ( ((0.6363636364)3 + 2(0.6363636364)2 - 1) / (3(0.6363636364)2 + 4(0.6363636364)) ) = 0.6183816184
x 3 = x 2 – ( (x 2 3 + 2x 2 2 - 1) / (3x 2 2 + 4x 2 ) ) = 0.61838162 – ( ((0.6183816184)3 + 2(0.6183816184)2 - 1) / (3(0.6183816184)2 + 4(0.6183816184)) ) = 0.6180341174
x 4 = x 3 – ( (x 3 3 + 2x 3 2 - 1) / (3x 3 2 + 4x 3 ) ) = 0.6180341174 – ( ((0.6180341174)3 + 2(0.6180341174)2 - 1) / (3(0.6180341174)2 + 4(0.6180341174)) ) = 0.6180339888
실제 근 α = 0.6180339889 와 추정한 결과를 비교해보니 x 4 값이 실제 근과 일치한다 .
Verification using SAGE:
Code:
#Use a loop to compute iterations of Newton-Raphson's Method
#Use a loop to compute iterations of Newton-Raphson's Method
x = var('x')
f(x) = x^3 + 2*x^2 – 1
fp = diff(f,x)
NewtonIteration(x) = x - (f/fp)(x)
xn = 0.5;
print('x0 =', xn);
for i in range(10):
xn = N(NewtonIteration(xn),digits=10);
print('x', i+1, '=', xn);
print("This is the exact answer for comparison: ")
print(solve(f(x)==0, x))
print("Note that, we have been trying to estimate the postive root, which is 1/2*sqrt(5) - 1/2 ≈ 0.6180339889")
Output:
● Remark: for easier understanding, I gave the code without using a loop (the results are the same), but the code with a loop is preferable .
x = var('x')
f(x) = x^3 + 2*x^2 - 1
fp = diff(f,x)
NewtonIteration(x) = x - (f/fp)(x)
x0 = 0.5
print(x0)
x1 = N(NewtonIteration(x0))
print(x1)
x2 = N(NewtonIteration(x1))
print(x2)
x3 = N(NewtonIteration(x2))
print(x3)
x4 = N(NewtonIteration(x3))
print(x4)
Additional verification using Sage Grapher for Newton's Method:
. ■
Comment: “Newton's method for solving equations is significant because it is often one of the fastest converging methods. In particular, if the function is convex near a root and at the initial value, x 0 , f(x 0 ) >0, then it converges. Applying it to the derivative of a function, it can be used for optimisation. Furthermore, using matrices, Newton's method generalises to solving simultaneous equations and optimising functions of more than one variable.” I also want to add to the above that the Newton-Raphson Method is often used in Medical Engineering, for example, when creating a knee joint prosthesis in the most suitable shape for a patient.
참고문헌 :
[1]이상구 , 이재화 ., (2019), “인공지능을 위한 기초수학”, BigBook, pp. 156~158
[2]James Stewart., (2016), “Calculus – Early Transcendentals”, Cengage Learning, pp. 276~291; 345~348
[3]Sang-Gu Lee., (N/D), “SKKU Calculus (미적분학 )”, SKKU Matrix Lab.,
URL: (Application of Differentiation) http://matrix.skku.ac.kr/Cal-Book1/Ch4/
[4]Mark D. Smith., (1998), “Newton-Raphson Technique”, MIT,
URL: http://www.mit.edu/course/10/10.001/Web/Course_Notes/NLAE/node6.html
[5]Ariel Gershon, Edwin Yung, and Jimin Khim., (2020), “Newton Raphson Method”, BRILLIANT,
URL: https://brilliant.org/wiki/newton-raphson-method/
[6]방성완 ., (2018), “MATLAB 으로 배우는 공학 수치해석 /Numerical Analysis with MATLAB”, 한빛아카데미 , pp.292~294
[7]Terry Moore., (2016), “Calculus: What is the significance of Newton’s Method?”, Quora,
URL: https://www.quora.com/Calculus-What-is-the-significance-of-Newtons-Method
이상구(LEE SANGGU)8월 1일 오전 4:10
아주 자세한 ... 잘 정리된 요약 입니다^^ Good.
김진웅(2015****73)8월 1일 오후 2:19
방정식의 근을 찾는 방법으로 뉴턴법 뿐만이 아니라 이분법, 할선법, 가위치법이 있고 그것들의 장단점을 알 수 있었습니다.
요약 감사합니다.
35’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
사전 지식
Hessian Matrix (헤시안 행렬)
헤시안 행렬은 변수가 2개 이상인 다변수 함수의 임계점의 극대, 극소, 안장점 등을 판정하기 위해 사용되는 행렬로
어떠한 함수 f(x)의 2계 도함수 들을 이용하여 이계도 함수 를 행렬을 만든 로 표현한 것입니다.
따라서 x1,x2,x3...xn 를 모두 변수 로 갖는
다변수 함수 f(x) 의 헤시안 행렬은 다음과 같습니다.
보시다시피 각각의 행과 열 번호를 갖는 변수로 2차 미분한 것을 모아놓은 형태입니다.
그런데 우리가 알아볼 헤시안 행렬의 활용법을 이해하기 위해서는 헤시안 행렬로의 변형이 기하학적으로 어떤 의미를 가지는지 알아야합니다.
헤시안 행렬의 기하학적 의미
앞서 설명하였듯이 헤시안 행렬은 임계점의 극대, 극소, 안장점 등을 판정하는데 사용됩니다.
이는 즉 헤시안 행렬이 특정 함수의 특정 위치가 위 또는 아래로 볼록한지, 안장점 형태를 지니는지를 나타낸다는 뜻입니다.
따라서 헤시안 행렬의 고유값들이 어떠한 형태를 취하느냐에 따라 서로 다른 그래프를 그리게 됩니다.
(출처 : https://dsp.stackexchange.com/questions/1714/best-way-of-segmenting-veins-in-leaves)
보시다시피 헤시안 행렬의 고유값에 따라 나타나는 그래프의 형태는 다양합니다.
여기서 헤시안 행렬의 고유벡터는 변환 방향을, 고유값은 그 정도를 나타냅니다.(선형변환처럼 이해하면 됩니다)
따라서 헤시안 행렬을 통해서 가장 주요하게 휜 부분이 어디인지 알아낼 수 있는 것이죠.
그렇다면 이와같은 특성을 지니는 헤시안 행렬은 어떻게 활용될 수 있을까요?
Frangi Filter : Vessel Detection (혈관 검출)
실제로 의학계에서는 헤시안 행렬을 이용한 이미지 조작 방법인 Frangi filter를 활용하여 혈관 검출 사진을 만들고 있습니다.
Frangi Filter는 헤시안 고유 벡터와 고유값을 사용하여 이미지 내에 각 영역의 유사성을 계산하고 이를 표현하는 이미지 변환 기법입니다.
앞서 설명한대로 헤시안 행렬은 해당 영역이 얼마나, 어떻게 휘어서 어떠한 모습을 취하는지 나타내고 있기 때문에
아래처럼 특정 패턴에 따라 이를 정의내릴 수 있습니다.
(출처 : Multiscale vessel enhancement filtering(1998), Alejandro F. Frangi, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.110.7722&rep=rep1&type=pdf)
이러한 유사도를 기준으로 이미지를 다시 만들어내면 아래와 같이 혈관을 부각시킨 사진을 만들어낼 수 있습니다.
보다 자세한 원리는 https://www.youtube.com/watch?v=GMFwBLfq7FU동영상이 굉장히 잘 설명하고 있으니 참고하시기 바랍니다.
실습 (With Python)
그럼 지금부터 Python을 활용하여 실제 망막 혈관을 촬영한 사진을 변형해봅시다.
우선 사용할 모듈을 불러옵니다. frangi 필터는 skimage.filters 패키지에 속해있습니다.
PIL은 이미지 파일을 로드하는 패키지로 해당 패키지 외에도 openCV 등을 활용하는 다양한 방법이 존재합니다.
불러온 모듈을 통해 이미지 파일을 행렬로 변환합니다. 각 요소들은 픽셀(x,y)에 명암을 값으로 가집니다.
따라서 사진을 Gray Scale로 변환해야 합니다.
만약 컬러 이미지를 그대로 사용하면 명암이 아닌 RGB 값들을 표현하는 행렬로 변하게 되어 frangi()함수를 사용할 수 없게 됩니다.
Frangi filter를 사용해보기 전에 먼저 핵심 원리인 헤시안 행렬의 고유값으로만 이미지를 변형해봅시다.
각주로 적어두었듯이 hessian_matrix()는 이미지 변환에 대한 깊은 이해도를 요구합니다..
궁금해하실 분들을 위해서 참고자료를 붙여두겠습니다. (https://patents.google.com/patent/KR20160109049A/ko%EF%BB%BF)
각 함수에 대한 python 내장 및 kite 영어 원문 설명은 아래와 같습니다.
hessian_matrix()
which is computed by convolving the image with the second derivatives of the Gaussian kernel in the respective x- and y-directions.
sigma : Standard deviation used for the Gaussian kernel, which is used as weighting function for the auto-correlation matrix.
hessian_matriix_eigvals()
Compute Eigenvalues of Hessian matrix.
Return : The eigenvalues of the Hessian matrix, in decreasing order. The eigenvalues are the leading dimension.
That is, eigs[i,j,k] contains the ith-largest eigenvalue at position(j,k)
결과를 보아하니 확실히 헤시안 행렬의 고유값으로만 표현해도 어느정도 시혈관이 두드러져 보입니다.
2번쨰 plot과 3번째 plot은 고유값의 크기에 따른 결과 차이를 보여줍니다.
이로써 헤시안 행렬의 고유값을 바탕으로 혈관을 부각시킬 수 있음을 확인하였습니다.
그렇다면 이번에는 본래 목적이었던 frangi filter를 적용해봅시다.
frangi() 함수의 alpha, beta, gamma 값은 굉장히 중요한 역할을 합니다.
실제로 이를 잘못 적용하면 찾아내야하는 혈관의 모양을 잡아내지 못해 아예 검은 화면이 나와버리는 경우도 발생합니다.
기본적인 default 값으로 설정이 되어 있지만 이번 예시에서는 더 좋은 결과를 위해 beta값과 gamma값을 수정하여 적용하였습니다.
확실히 원본 사진에서는 잘 보이지 않던 미세한 혈관까지 쉽게 확인할 수 있습니다.
굉장히 쓸모있는 기술이라는 생각이 드네요.
실제로 이러한 분별 기술을 강화하기 위해서 frangi filter와 다른 필터를 조합하거나(https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8819923)
딥러닝 기법을 활용하는 방식(http://kiss.kstudy.com/thesis/thesis-view.asp?key=3614484)들이 많이 연구되고 있습니다.
의학에서도 깊게 활용되고 있는걸 보니 수학의 적용범위는 무궁무진하다는 생각이 듭니다.
마치며
지금까지 Hessian 행렬이 실제로 어떻게 활용되고 있는지를 Frangi filter를 통하여 알아보았습니다.
어려운 개념도 기하학적인 해석을 포함하여 공부하면 조금 더 친숙하게 다가오는 것 같습니다. (특히 행렬과 관련된 부분에서!)
이번 실습도 여러분들의 궁금증과 개념 이해 및 기억하기에 도움이 되었기를 바랍니다.
(파이썬 원본 파일을 첨부하였으니 필요시에 활용하세요 :) frangi_filter_hessian.py )
참고문헌
https://angeloyeo.github.io/2020/06/17/Hessian.html(헤세 행렬의 기하학적 의미)
https://stackoverflow.com/questions/22378360/hessian-matrix-of-the-image(이미지의 헤시안 행렬)
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.110.7722&rep=rep1&type=pdf (Multiscale vessel enhancement filtering, Alejandro F. Frangi)
https://www.youtube.com/watch?v=GMFwBLfq7FU (kixcodes Explains Image processing - Frangi filter)
suwonseye.co.kr/disease/page02.html (에스안과, 정상안저 이미지)
https://patents.google.com/patent/KR20160109049A/ko%EF%BB%BF (고차 라플라시안 오브 가우시안 커널을 이용한 이미지의 특징점 추출 장치 및 방법)
--------------------------------------------------------------------------------------------
느낀점
교수님께서 공유해주신 회의 내용을 읽어보니 부정맥이나 저혈압을 예측하는 등 연구를 통해 개발될 수 있는 요소가 많아 보입니다.
더 열심히 공부해서 사회의 도움이 될 수 있는 무언가를 만들고싶다는 의욕이 생겨나네요 :)
다른 분들께도 새로운 지식을 알려드릴 수 있어 보람찼습니다.
앞으로도 수업에서 배운 내용을 토대로 다양한 시도를 하고 공유하도록 하겠습니다!
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘
2주차 내용을 정리하던 차에 흥미로운 주제를 발견하여 공유해드립니다.
필요 개념 정리
먼저 수업에서 다음 내용을 숙지해야합니다
1. 고유벡터, 고유값
: 일차변환을 했을 때 그 방향이 유지되고, 원래 벡터의 실수배가 되는 특수한 벡터를 고유벡터라고 하며, 그 실수배를 고유값이라고 합니다.
-> 선형연립 미분방정식을 풀기 위해 도입된 개념입니다.(람다 값 기준으로 ..)
2. 대각화
행렬 에서 개의 선형독립인 고유벡터 가 존재한다고 가정하자.1 행렬 의 열들은 로 이루어져 있다고 할때,
양변의 좌측에 를 곱하면,
-> 람다행렬은 고유값으로 채워진 대각행렬이며, S는 A의 고유벡터행렬입니다. 고유벡터행렬은 역행렬을 가질 수 있어야하며 결국 A의 고유벡터들이 n개의 독립인
벡터를 가져야 한다는 것입니다.
3. 고유값 분해
에서 양변의 우측에 를 곱하면,
이것을 고유값 분해 (Eigendecomposition) 또는 스펙트럼 분해 (Spectral decomposition) 라고 부른다.
-> 고유값 분해는 A의 고유값과 고유벡터의 성질을 이용하여 k번 거듭제곱할 때 유용한 틀입니다.
피보나치 수열
피보나치 수열은 0과 1로 시작하며, 그 이후에 오는 피보나치 수는 직전 두수의 합이 되는 특수한 수입니다.
시간이나 순서에 따라 특정 규칙으로 값이 변하는 수열은 계차방정식으로 표현할 수 있고, 대각화를 통해서 고유값과 고유벡터들의 조합으로 표현할 수 있습니다.
이를 통해서 특정 인덱스 값을 추론할 수 있고, 고유값을 통해 증가 폭을 가늠해볼 수 있습니다.
하나의 선형 시스템으로 만들기 위해 k+1에 대한 방정식을 추가로 만들고 해를 구하기 위한 해 벡터 상태로 표현했습니다.
이런식으로 피보나치 수열을 1차 선형 시스템으로 바꿔주었고, 이 시스템을 풀기 위해서는 고유값 을 구해야합니다.
,
구해진 2개의 고유값(람다)이 서로 다르기 때문에 A는 2개의 독립인 고유벡터가 존재하며, 대각화가 가능 합니다.
현재까지 만들어진 형태로 100번째 피보나치 수를 구해보면, 위와 같이 고유값과 고유벡터들의 선형결합으로 나타낼 수 있습니다.
이제 x1과 x2값을 알기 위해 고유벡터 를 구해보겠습니다.
이때, 고유벡터는 가우스 소거법을 이용하여 구할 수도 있으나, 여기서는 A에 고유값을 뺀 행렬이 특이 행렬이고, 벡터 x를 곱했을 때 0이 나온다는 사실로
미루어 보아 x = [ λ 1]T 임을 유추할 수 있습니다. 따라서 마지막으로 c1과 c2를 구하면 됩니다.
c1과 c2는 초기값을 구하는 계차방정식을 만들고 이를 고유값과 고유벡터로 분해하여 가우스 소거법을 이용하여 구했습니다.
이를 종합하면, 다음과 같은 피보나치 수의 일반항을 구할 수 있습니다.
참고
-http://judis.me/wordpress/2015/10/18/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-note-22-diagonalization-and-powers-of-a/
김진웅(2015****73)8월 5일 오후 3:51
고유값 분해로 피보나치 수열의 일반항을 구하는 과정을 알게 되었습니다.
정리 감사합니다.
이상구(LEE SANGGU)8월 5일 오후 5:01
Good^^
박은아(2016****73)8월 6일 오후 12:43
수열의 일반항을 고유값 분해를 이용해서도 구할 수 있군요! 새로 접해보는 내용이라 흥미롭게 읽었습니다. 감사합니다.
1‘[HW] 자기소개 및 수강동기 - 컴퓨터공학과 김진웅’ 소개
2‘[ 첫주 금요일 10시반 OH 내용 정리] <-- 공유합니다.’ comment
3‘[FINAL][1주차 HW]자기소개 및 질의 / 답변 by 김진웅 나종진 임동선 이재화 이상구교수님’ answer → ‘[Final OK by SGLee] [Finalized by 채희준, 권서영 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구’ → ‘[Final OK by TA] [Finalized by 채희준 ] Norm 관련 질문. 질문 by 이동현, 답변 by 김진웅, 나종진, 임동선, 이재화, 이상구, 장환승,권서영’
4‘[Final OK by SGLee] [HW 10문제 풀이] Solved by 김진웅 , Finalized by 장환승, 기초수학 입문 열린문제 풀이’ 풀이
5‘강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ answer → ‘Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’ → ‘[Final OK by TA] Finalized by 전재현 질문 by 전재현 답변 by 김진웅 / 강의 내용 정리 1강(벡터 ~ 선행 연립방정식,행렬) 및 질문’
6‘1주차 내용의 요약과 질문 2016310492 경영학과 김태호’ answer → ‘[Final 1주차] by 이상구 교수님, 김진웅 2016310492 경영학과 김태호’
7‘[Final] by 김진웅 질문 by 김진웅 답변 by 정환승, 유가이올렉산드르 [HW 질문] 열공간, 행공간, 영공간 사이의 관계’ 질문 → ‘Finalized by 유가이 올렉산드 [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’ → ‘[Final OK by TA] [HW] 열공간, 해공간, 영공간 사이의 관계, 질문 by 김진웅, 답변 by 장환승, 추가답변 및 Finalized by 유가이 올렉산드르’
8‘[1주차] 1-1,1-2,1-3 내용 정리 및 질문’ answer → ‘Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’ → ‘[Final OK by TA] Finalized by 장환승 Q Answer by 김진웅, SGLee [1주차] 1-1,1-2,1-3 내용 정리 및 질문’
9‘[Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’ 질문 → ‘[Final OK by TA] [Final] by 김진웅 질문 by 김진웅 답변 by 이재화, 전재현, 이상구 [HW 질문] 선형연립방정식의 계수행렬이 full column rank가 아닌 경우의 존재와 그 경우에 최소제곱해를 쉽게 구할 수 있는 방법’
10‘[HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요?’ answer → ‘[Final OK by SGLee] [HW] Finalized by 한수현, 권서영, 김진웅’ → ‘[HW질문] Re-finalized by 채희준, 질문 by 권서영, 답변 by 김진웅, finalized by 한수현’ → ‘[Final OK by TA] [HW 질문] 정사영의 정의 (아래 사진파일 첨부) 에서 x*w = x*(y-p) = 0 에서, w 는 0 벡터는 아니지요? by 권서영, 김진웅, 이상구 교수님’
11’[1-2강] 강의 내용 복습 및 요약 & 실습 & 질의‘ answer → ’[Final OK by SGLee] Finalized by 임성규, 김진웅, SANGGULEE // [1-2강] 강의 내용 복습 및 요약 & 실습 & 질의’
12’[Final OK by SGLee] [Discuss] How to find least square solution? 최소제곱해 관련 질문 과 답 by 채희준, 박정호 , 김진웅, SGLee,‘ answer
13’[HW 실습] 1주차 실습’ 실습
14’[HW 요약] 1주차 요약‘ 요약 <이상 1주차; 14개 9개>
15’[HW-2주차-질문] 단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)‘ answer → ’[Final OK by SGLee] finalized by 김범준,이상구 교수님, 김진웅, 김호연 Q.단위행렬과 단위벡터 (선형변환에 대응하는 표준행렬)by김범준‘
16’[Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘ 질문 → ’[Final OK by TA] [Final] Q by 김진웅 A by 유가이올렉산드르, 이상구 F by 김진웅 [HW 질문] 서로 같은 고유값에 대응하는 고유벡터들 차원 (JCF)‘
17’[Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘ 질문 → ’[Final OK by TA] [Final] Q by 김진웅 A by 이상구 F by 김진웅 [HW 질문] 동형 사상(同型寫像, isomorphism), (Euclidean) isometry 과 직교행렬‘
18’2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬>‘ 정리 → ’[Final OK by TA] 2주차 SVD 정리 (Very Good^^) < SVD 와 주성분 분석과 공분산 행렬> by 김진웅 댓글 by 이상구 교수님, 박정호, 한수현, 나종진, 채희준‘
19’표준행렬에 대해 질문있습니다.‘ answer → ’Q by 이상현, Finalized by 천가영, 표준행렬에 대해 질문있습니다, 답변 by 김진웅‘
20’[HW2] 선형변환 (Linear Transformation) 강의 요약 및 정리 + 연습문제 풀기‘ comment
21’[해결] SAGE 질문 SyntaxError‘ answer
22’[2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’ answer → ‘Q, A & Finalized by 이승재, 김진웅, SGLee [2주차] 강의 내용 복습 요약 & 실습 & 주요질의 (1) _ 2019311465 이승재’
23’[HW 실습] 2주차 실습‘ 실습
24’2주차 4-1, 4-2 요약정리 및 질문‘ comment
25’[HW 요약] 2주차 요약‘ 요약 → ’2주차 (FINAL) 내용정리와 관련된 예제 학습 Written by. 김진웅 added by 김태호‘ <이상 2주차; 11개 4개>
26’특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python‘ comment → ’[Final OK by SGLee] 특이값분해(SVD)와 의사역행렬을 통한 2020년 해외직접투자 금액 추정하기 with Python Finalized by 전재현 댓글 by 이상구 교수님, 김범준, 박은아, 채희준, 천가영, 김진웅, 장환승‘
27’[Final OK by SGLee] 100점 입니다. 협동적 학습경험 Finalized by 김범준, 김진웅, 박은아 [HW-3주차-질문]sage에서 함수그래프 그리는 것에 대한 질문by 김범준‘ answer
28’[HW-3주차-자료공유]미적분학의 기본정리와 그 증명‘ answer → ’Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘ → ’[Final OK by TA] Finalized by 김범준,전재현, 김진웅[HW-3주차-자료공유]미적분학의 기본정리와 그 증명by김범준‘
29’3주차 다변수함수의 극대극소판정법 정리‘ 정리
30’[FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘ answer → ’[Final OK by TA][FINAL][HW]3주차 강의내용 관련 질문 질문By이동현 답변By김진웅 이상구교수님 박은아 임성규‘
31’finalized by 김범준,김진웅, 정원철, 천가영[HW-3주차-질문] 3차원벡터의 합을 SAGE를 통해 그래프로 나타내는법by 김범준‘ answer
32’[HW3] 미분의 응용 (Applications), 뉴턴-랩슨법 강의 요약 및 정리 + 근사 찾기 방법 비교 + 연습문제 풀기 + 코딩 실습‘ comment
33’[요약] 3주차 요약‘ 요약 → ’[Final OK by SGLee] [3주차] 요약 및 질문’ answer
34’[Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘ 질문 → ’[Final OK by TA and SGLee] [Final] Q by 김진웅 A by 박정호, 전재현 F by 김진웅 [질문] 다변수함수의 Hessian이 semidefinite과 indefinite일 때의 극대극소판별법와 그래프‘
35’[3주차] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python)‘ comment → ’[Final] Hessian 행렬은 실제로 어떻게 활용될까? (Frangi filter를 통한 이미지 검출 실습 with Python) 댓글 by 이상구 교수님, 김범준, 김진웅‘
36’[Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의‘ answer → ’[Final OK by SGLee] [Finalized by 박진형] [3주차] f의 이차근사식 중 임계점의 극대 극소 질의 by 박진형,이상구(LEE SANGGU), 김진웅‘
37’[2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘ answer → ’[Final OK by SGLee] finalized by 정원철. Q.임성규 A. 이상구교수님, 김진웅 [2주차 이차 형식(quadratic form) 실습을 통한 복습 및 질의]‘
38’[Final OK by SGLee] 김진웅 [실습] 3주차 실습‘ 실습 <이상 3주차; 13개 9개>
39’[Final OK by SGLee] 김진웅 4주차 Gradient Descent Algorithm 정리‘ 정리
40’[Final OK by SGLee] Finalized by 채희준, [sage 질문] Q by 채희준, A by 김진웅, 이상구‘ answer
41’4주차 Gradient Descent Algorithm 추가 정리‘ 정리
42’[요약] 4주차 요약‘ 요약
43’[Final OK by SGLee] final by 나종진 [3주차 질문] 임계점에 대한 질문 답변 by 김진웅‘ answer
44’Final by 나종진 [3주차 질문] 3변수 함수의 극값 답변 by 김진웅,채희준,정원철‘ answer
45’[실습] 4주차 실습‘ 실습
46’[2주차] 고유값 분해를 이용한 피보나치수 일반항 유도‘ comment
47’[중간고사 과제] 열린문제 4문제‘ 풀이 <이상 4주차; 9개 3개> <총 47개 25개>
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까? <-- We will try to fix them^^ 작성자 : 이상구(LEE SANGGU)작성일 : 8월 10일 오후 1:54
조회수 : 32
자신의 학습에 도움이 된 우수한/성실한 동 료 평 가
김진웅, 박은아, 유가이올렉산드르, 김범준, 전재현, 나종진, 장환승, 정원철, 정유민
위 학우분들은 제가 생각하기에 다음과 같은 기준(5)에 적어도 하나 이상은 충족하십니다.
▶ 모두가 공감할 수 있을 만한 질문을 던지는가?(난이도 무관)
▶ 모두가 이해할 수 있을 정도로 자세하게 풀어서 잘 정리를 하는가?
▶ 퀄리티 좋은 예제를 찾아서 문제 풀이 및 실습을 해보고 이를 잘 정리하여
공유해주는가?
▶ 다른 학우분들의 질문에 자세하고 성실하게 답변을 해주는가?
▶ Q&A 과정에서 활발한 참여를 통해 하나의 완성된 컨텐츠를 함께 만들어 나가는가?
다른 학생에 대한 평가
: 이 수업은 학생들의 참여도를 이끌어내는 특별함이 있는 것 같습니다. 몇몇 눈에 띄게 열심히 하시는 분들도 계시지만, 대부분의 학생들이 협력하며 공부하는 과정에서 서로에게 긍정적인 시너지를 만들고 있고 이에 저도 감사하게 많이 배우고 있습니다.
다른 학생에 대한 평가
제 늦은 Q&A에도 답을 주신 김범준, 박은아, 장환승 학우분들께 감사의 말씀을 전하고 싶습니다. 우선 김범준 학우님은 코딩적 지식이 뛰어나신 것 같고, 대부분의 문제를 해결하는 법을 알고 계시고 진정으로 수업에 열정이 있으신 것 같습니다.
박은아 장환승 학우분들께서는 코딩을 잘하기 위해 정말 노력하는 것이 느껴졌습니다. 이런 분들을 보며 저 역시도 자극이 되는 선순환이 일어난 것 같았습니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
매 주 교수님께서 올려주시는 학우분들의 참여도를 보면 비교적 참여가 적었던 학우 분 들은 시간이 지나도 다른 학우와의 갭을 줄이기가 비교적 어려운 것으로 보입니다. 개 인적인 사정으로 참여가 어려웠던 학생들도 충분히 따라갈 기회가 있었으면 좋겠다는 생각이 들었습니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
: 문의게시판을 보면 다양한 부류의 학우분들이 계십니다. 묵묵히 자신의 공부를 하면서 이를 남과 공유하려는 사람, 지속적으로 질문을 던지며 남들의 공감을 이끌어 내는 사람, 남들의 질문에 대해 자신의 이해를 성심껏 풀어서 설명해주는 사람, 수업의 개념을 실생활로 끌어내면서 이해를 보다 한 차원 높이는 사람 등 훌륭한 분들 덕분에 수업에 긍정적인 영향이 가득합니다. 이런 분들에 대해서는 가산점을 주는 등 다양한 방법으로 보상을 하거나 격려를 해준다면, 이외의 학우분들에게도 더 성실하게 참여할 수 있는 유인이 될 수 있을 것 같습니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
문이과캠 병행수업이라는 점에서 수학에 대한 기본기가 상대적으로 빈약한 문과생들이 수식이 왜 이렇게 되는가 하는 면에서 좀 어려웠다고 생각합니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
활발하고 성실하신 학우분들과 교수님이 모여 게시판이 포화 상태가 되는 경우가 있었습니다. 현재는 많이 개선된 상태지만 아직은 문의게시판을 로딩할 때 시간이 조금 걸리는 것 같습니다.
물론 게시판이 활발하고 제 기능에 맞게 돌아가고 있음을 의미하지만 아직은 보완해야 될 점이라고 생각합니다.
16. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
공지에 올라오는 글들의 글자 크기가 너무 여러 가지라 무엇이 중요한지 잘 파악하기 어려웠습니다. 또한 학생들이 올리는 제목 양식 등이 통일되지 않아 가독성이 살짝 떨어졌습니다. 이 두 가지 수업 외적인 부분만 보완되면 좋을 것 같습니다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
교양 과목 특성상 수강생들의 코딩과 수학에 대한 배경지식이 많이 차이가 날 수밖에 없다. 교수님이 제공해주시는 다양한 자료와 교재를 통해 배경지식을 습득할 수는 있지만, 상당히 많은 시간이 소요되기 때문에 일반 학기중에는 본 과목을 완벽하게 참여하기 어려울 수 있겠다는 생각이 들었다. 학기 시작 초반에 Sage의 기본적인 함수를 함께 다뤄보는 시간이 있었으면 좋겠다.
17. What can you suggest to improve this system of learning?
I would really like our I-Campus to support mathematical operations (matrices, integrals, etc.)
I am very impressed with how diligently the professor is participating in our educational process. I think this gives me and the other students an incentive to study the material more actively and participate in QnA.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
: 평소 인공지능을 공부하면서 수학 베이스를 좀더 탄탄히 다져야할 필요성을 절감하고 있던 차에 교수님의 잘짜여진 커리큘럼 내에서 제가 부족하거나 추가로 공부하고 싶던 개념들에 대해 능동적으로 공부할 수 있어서 굉장히 보람찹니다. 특히나 개념에 대해서 이해하는 것을 넘어서 정리, 질문 답변, 실습을 하는 교수님 수업 방식 덕분에 선형대수학과 미적분학에 대한 로드맵이 생겨 향후 인공지능을 더 깊게 공부하는 데에 큰 도움이 될 것 같습니다. 뿐만 아니라 다른 학우분들의 Q&A 글을 보면서 제가 평소에 잘 이해하지 못했던 부분에 대해서 같은 고민을 하면서 해결해나가는 과정에서 공감도 많이 되었고 큰 도움을 받고 있어서 저도 그에 못지 않게 배풀고 싶어서 더 열심히 하게 됩니다.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
이번 강좌를 학습하면서 우선 수학적인 개념에 대해서 배울 수 있었습니다. 미분적분학은 이수하고 왔으나 선형대수학과 통계학은 이수하지 않았기에 기대가 되는 과목이었습니다. 그리고 선형대수학 개념들을 배우며 고전도 많이 했지만 그만큼 제가 수학적으로 성장하는 계기가 되었던 것 같습니다. 또한 sage에서 실습을 해보며 함수를 활용하는 법을 깨우치게 되었고, 복잡한 계산을 편리하게 할 수 있다는 점이 매력적으로 다가왔습니다. 특히 다른 학우분께서 SVD를 이용해 교수님의 흑백 사진을 출력하는 것을 통해 “나도 코딩을 열심히 연습하면 할 수 있겠지?”라는 생각을 하게 해주셔서 정말 뜻깊었던 것 같았습니다.
Ch 5장. [Project 제안서] Your possible Team Project 제목, 동기, 방법론, 참고문헌 [아이디어와 Draft] (10점)
[Team Project 제안서 (TBA)] - 중간고사의 10점 부분
Team Project Proposal
Team Members (Tentative, Leader-not yet): 김정한
Team Project (Tentative, just idea now): 신호 처리와 머신 러닝
동기: 원전공은 바이오 메카트로닉스학과이고 복수전공은 전기전자공학부이다.
이번 강좌를 들으면서 전공과의 연관성을 생각해보았는데 전기전자와 빅데이터 사이에 연관성은 있지만 명확히 알지는 못하는 것 같았다.. 그래서 그 연결점을 찾고자 하였고 그것이 곧 신호 처리(혹은 신호 및 시스템)이라는 것을 알게 되었다. 이것은 신호를 획득, 분석, 가공, 처리, 합성하는 알고리즘 및 기술을 개발하는 연구분야이다. 음성 처리는 인간의 가장 기본적인 통신 수단인 음성 신호의 특성을 통계 기반의 수학 모델을 이용해서 분석함으로써 컴퓨터로 하여금 누가, 어떤 말을, 어떤 감정으로 표현했는지 이해할 수 있도록 연구하는 분야이다. 영상 처리는 카메라로부터 얻은 영상 및 비디오를 수학적 모델을 이용해서 분석, 가공하는 연구 분야로, 이를 이용하면 영상 압축, 영상 복원, 지문 인식 등을 위한 시스템을 개발할 수 있다. 음성 및 영상 처리 관련 응용 연구로는 음성 인식, 의료영상, 생체 인증, 컴퓨터비전, 컴퓨터 그래픽, 증강 현실 등이 있으며, 빅데이터 시대에 반드시 필요한 유망한 연구분야이다. 그러므로 이러한 프로젝트를 설계하게 되었다.
방법론: 앞으로 들어갈 강의 중에 확률 및 통계가 이쪽과 연관이 있다(물론 미적분과 선형대수학도 연관성이 크다). 강의를 들으면서 신호와 관련된 강의 또한 찾아서 들을 예정이다. 그리고 간단한 실습(임베디드 관련 코딩(매틀랩 혹은 적절한 언어))을 해볼 예정이다. Main goal은 신호처리와 관련된 코드를 설계하고 실행해보는 것이다.[머신러닝&딥러닝과 연관]
참고문헌:
김기호. "수학교육에서의 MATLAB의 활용방안 연구." 국내석사학위논문 韓南大學校 敎育大學院, 2003. 대전
김호철. "MATLAB을 이용한 영상처리 및 Ferrule면 가공정도 측정방법에 관한 연구." 국내석사학위논문 한세대학교 대학원, 2009. 경기도
Name / e-mail (이름과 이-메일): 김정한
Team Project (Tentative, just idea now):
다양한 Gradient Descent Algorithms 체험하기
[Ruder, Sebastian. “An overview of gradient descent optimization algorithms”]
Name / e-mail (이름과 이-메일): 김진웅
Team Project (Tentative, just idea now): 최소 비용 문제를 푸는데 이용되는 경사하강법 알고리즘이 실생활에서 쓰이는 예시 탐구
Name / e-mail (이름과 이-메일): 이승재 /
제목: 코로나 확산 예측하기
목표:
다양한 질병 확산 모델을 찾아보고 추세선을 그려 본 뒤 앞으로 국내 코로나 확산이 어떻게 이뤄질지 예측해보기.
방법:
전재현 학우의 특이값 분해와 의사역행렬을 활용한 코드를 질병확산 모델에 맞게 적절히 변형하면 코로나 확진자 데이터로 추세선을 그릴 수 있을 것이라 생각.
Name / e-mail (이름과 이-메일): 채희준
■ 주제
“포트폴리오 가중치 Optimization으로 레이달리오 따라잡기”
■ 동기
: 수년 전부터 다양한 트레이딩 알고리즘을 만들고 있으나, 여러 가지 변수 때문에 수익률의 volatility가 통 잡히질 않습니다. 그렇기 때문에 자연히 자산배분의 가중치 문제에 대해 관심을 가지게 되었고, 이를 통해서 수익률을 개선시키고 싶습니다.
■ 실행방안
1) 세계적인 투자자인 레이달리오의 4계절 포트폴리오 수익률 자료 크롤링
[4계절 포트폴리오]주식 30%, 중기국채 15%, 장기국채 40%, 원자재, 금 각각 7.5%A. 30% 주식 – 미국 주가지수 ETF 등 주식B. 중기 미국 국채(7-10년채) 15%, 장기 미국 국채 40%(20-25년채)C. 각각 7.5%를 원자재, 금에 투자
*https://m.blog.naver.com/ybilee/221357038659
y : 4계절 포트폴리오의 수익률
x1 : 주식
x2 : 중기국채
x3: 장기국채
x4: 원자재
x5: 금
3) 경사하강법 혹은 더 효율적인 Optimizer를 이용하여 각각의 값 구하기
-> 100% 기준으로 값 보정
4) 파이썬을 활용하여 실제로 일정 기간(예를 들어 5년?) 동안의 데이터를 backtesting하고 4계절 포트폴리오와 수익률 비교
Ch 6장. ◆ Final comment after your report ◆ (10점)
(PBL보고서/Project 를 마치고 ...)
Mid Term :
이번 보고서를 계기로 많은 것을 깨달았다. 배웠던 부분에서 부족한 부분이 어느 곳이었는지도 확인할 수 있었고 내가 어려워하는 부분이 어딘지도 알 수 있었다. 선형대수학 뒷부분을 모두 이해했고 계산할 수 있을 것이라고 생각했는데 생각보다 부족한 부분이 있었다. 또한 미분적분학은 뉴턴 method 부분이 아직까지 개념이 완전히 잡히지 않은듯한 느낌이 들었다. 그래서 보고서를 쓰며 계속 교재를 읽고 강의도 다시 한 번 보며 이해를 하려고 노력했고 그만큼 학습이 잘 되었던 것 같다. 또한 얼마나 내가 학습을 했는지도 이번 기회에 점검해볼 수 있는 좋은 기회였다. 선형대수학은 고등학교 이후로 들어본 적이 없어서 자신이 없었는데 교수님 강의와 교재 덕분에 수월하게 진행했다. 점검을 통해 내가 선형대수학을 많이 공부했구나라는 것을 느꼈고 희열도 느꼈다. 비록 이와 같이 중간도 많이 노력했지만 기말 때는 중간보다 훨씬 좋은 결과물을 낼 것이라고 다짐한다. PBL이 다시 개념을 되짚어주는 기능도 있지만 부족한 부분을 확인하고 채워주는 기능도 있어서 좋은 과제인 것 같다는 생각을 하게 되었다. 또한 프로젝트를 설계하면서 내 전공과 연관지어 생각하게 되어 좀 더 전문성을 키워가는 것 같다는 느낌을 받았다. 코딩과 관련된 프로젝트를 이번 기회에 해보고 싶다. 코딩은 파이썬과 c언어 정도 해보았고 어느 정도 수준있는 코드까지는 짤 수 있다. 그러므로 좀 더 범위를 넓혀 매틀랩까지 도전해보고 싶다. 신호 처리에 관한 개념을 스스로 찾아 학습하고 그보다 더 중요한 코딩을 계속해서 실습한다면 더욱더 세부적이고 명확한 주제를 기말 때 발견할지도 모르겠다. 넓은 의미에서는 매틀랩의 학습이 주요 목적이므로 프로젝트를 이와 같이 짰지만 더 좋은 그리고 이러한 주제에 크게 벗어나지 않는 주제가 떠오른다면 약간의 수정과 더불어 프로젝트를 원활하게 진행하고 싶다. PBL과 프로젝트 이야기를 하였으니 QnA communication 활동을 이야기해보고자 한다. 무엇보다도 제일 유익했던 활동이라고 생각이 든다. 비록 초반에는 많이 활동하지 못하고 방법에 익숙치 않아 다른 학우들이 쓰는 게시글에 힌트를 얻어 조금씩 작성하였지만 조금씩 게시글을 작성하는데에 있어 발전해나가는 모습이 보였다. 게시글을 작성하는 시간도 줄었고 물론 내용은 좀 더 풍부해졌으며 쓰면서도 배워나가는 듯한 느낌을 받았다. 학우분들도 똑똑하신 분들이 많아서 내가 배워야겠다고 생각하는 장점들이 정말 많았다. 실습을 독창적으로 계획하여 보여주신 학우분도 계시고, 개념 정리를 정말 잘하는 학우 분도 계시고, 정말 배우고자하는 점들이 너무 많았다. 그에 자극을 받아 나도 열심히 하기 시작한 것 같다. 이번 중간 PBL과 QnA들을 계기로 기말 때까지 정말 많은 Finalizing을 하고 학우들에게 도움이 되는 게시글들을 작성하며 댓글도 써가면서 communication하도록 노력해야겠다. 이상으로 midterm PBL comment를 마친다.
현재까지 이상구 교수님의 수업은 저에게 여러 가지 의미로 다가옵니다. 먼저, 인공지능 공부에 어려움을 겪고 있던 차에 수학적인 베이스를 튼튼하게 다질 수 있는 시기적절한 수업이라고 생각합니다. 특히나 머신러닝을 공부할 때 맥락도 없이 수식이 막 쏟아져 나와서 어려움을 겪었었는데 이번 수업을 들으면서 적어도 선형대수학과 미적분학에서만큼은 생소한 개념, 혹은 예전에 이해를 못하고 넘어갔던 개념에 대해서 혼자서 정말 많이 고민해보고 다양한 공부자료를 찾아보면서 deep dive함으로써 실력을 향상시킬 수 있었습니다. 또한 저와 학우들의 유익한 자료들은 스크랩하여 향후 공부를 하다가 모르는 개념이 나왔을 때 다시 체크할 수 있도록 기초수학 로드맵도 만들게 되었습니다. 또한 협력의 필요성도 깨달았습니다. 공부를 하다가 생소한 개념이 나왔을 때, 이미 그 개념에 대한 정리와 실습, 질문 등 다양한 자료가 올라와 있어서 큰 도움을 받았습니다. 그래서 저도 받은 만큼 조금이라도 돌려드리기 위해 노력하고자 더 열심히 공부하게 되는 것 같습니다. 마지막으로, 평소 학습의 중요성도 뼈저리게 느꼈습니다. 처음 1~2주는 개인적인 사정상, 여유가 없어서 Q&A에 활발히 참여하지 못했기 때문에 그 부분을 make up 하는 것에 대한 부담이 있었습니다. 중복되는 글은 의미가 없다고 판단되어 최대한 유익하면서도 새로운 시각을 공유하고 싶어서 많은 시간을 쓰느라 힘들었는데 결과적으로는 그 과정에서 공부가 많이 되어서 만족하긴 하지만.. 앞으로 남은 기간에는 미루지 말고 성실하게 임해야겠습니다.
도전학기 1-2주차 (흑색글씨): 이번 강좌의 진행 형식은 대학교에서 들은 과목들 중 가장 신선하고 새로웠습니다. 새로운 형식이었기에 초기에는 진행 형식을 이해하고 저의 학습 스타일에 적용하는데 많은 시행착오가 있었습니다. 시간이 지나면서 점차 강좌의 진행 형식에 적응이 되어갔고, 학습하고 실습한 내용을 정리하여 학우 분들과 지식을 공유하고 다른 사람의 지식 또한 습득하여 상호작용하는 학습의 긍정적인 부분을 많이 느끼기 시작했습니다.
도전학기 1-4주차 Mid Term (파란글씨): 4주간의 기간동안 선형대수학과 미분적분학의 전반적인 개념들을 배우고 실습하면서 차수가 지날 수록 QnA에는 글들이 쌓여갔습니다. 게시하고 공유된 글들이 많아지면서 전에 올렸었던 글들에 대한 기억은 조금씩 희미해져갔습니다. 하지만 강좌의 중반을 달리고 있는 시점에서 PBL보고서를 작성하며 지금까지 게시한 글들을 다시 읽어보고 정리할 수 있었습니다. 보고서를 작성하며 중간 복습을 할 수 있어 좋았습니다.
Mid Term (파란글씨):
3년 전에 이러한 방식의 수업을 이상구 교수님의 선형대수학 강의를 통해 처음 접해봤다. 당시에도 수업 방식에 적응하는데 어려움을 겪었던 기억이 난다. 두 번째인 만큼 저번보다는 빠르게 적응을 했다고 생각했는데 도전학기라 그런지 벌써 반이 지나갔다.
part1, 2는 선형대수와 미적분을 다루고 있었다. 이미 배웠던 내용이어서 질문이 올라왔을 때 답변을 많이 하며 다른 학우들에게 도움이 되자고 다짐을 하며 시작했다. 그런데 막상 설명을 하려고 하니 글이 잘 써지지 않았다. 정확하고 이해하기 쉽도록 설명하기 위해 자료들을 찾아보면서 오히려 내가 더 배우게 되었고, 놓치고 지나갔었던 부분들을 다른 학우들의 질문과 답변을 통해 보충할 수 있었다.
3주차가 지나갈 때쯤 단순 수학 이론 복습을 위해 이 수업을 들은 게 아님을 깨달았다. 이때부터 sage와 python을 통한 실습을 시작했다. 모르는 게 많았는데, 다른 학우들이 실습한 것과 코드 공유한 것을 참고하고, 질문을 하면서 수학과 코딩을 연결해볼 수 있었다. 컴퓨터로 코딩을 하면서 공부를 하니 이론에 대한 이해도 늘고 더 재미있게 학습할 수 있었다.
1달 동안 학습을 위해 도움을 주신 교수님과 조교님들께 감사드리며, 앞으로 3주 밖에 남지 않았는데, 남은 기간 동안 교수님과 학우들과 적극적으로 소통하며 서로 더 많은 것들을 배워갈 수 있도록 노력하겠다.
[The End]