Spring 2020, Take-Home Exam (Action Learning)
인공지능을 위한 기초수학(Basic Math for AI)
Prof : Sang-Gu LEE
http://matrix.skku.ac.kr/math4ai/ http://matrix.skku.ac.kr/math4ai-tools/
KMS-AI-Talk-인공지능이란무엇인가? by SGLee (30분) 2020-06-05 https://youtu.be/8oTM9n5OUBY
Math4AI 인공지능 수학 목록 http://matrix.skku.ac.kr/math4ai-tools/
Name (이름) : 김예훈(전자전기공학부, 1학년), 황인성(소프트웨어학과, 2학년), 신재열(전전컴 4학년), 나우주(반도체시스템공학부 1학년), 김승한(건축학과), 민재필(글경), 조완제(생명과학), 홍태규(프랑스어문학과, 2013), 서형찬(연기예술학과), 이인창(전자-D), 김윤수(수학), 조완제, ...

4차시 : Final PBL 7분 발표 <안주현> 등 [Take Home exam, Final PBL 발표] https://youtu.be/IQXmWGu5hhI
5차시 : Final-PBL-발표-2020학번-1학년-신입생-김예훈 발표 https://youtu.be/3e0VybhOS1U
6차시 : Final-PBL-발표-한병욱 발표 https://youtu.be/w2bw7I-jVEM
[Matrixtopia] Math4AI PBL 보고서 발표 2학년 김용훈 https://youtu.be/kNFxp8SP5Rc

Ch 1장. Self Evaluation 1. (개인 성찰 노트) (학생용)
|
과 목 명 |
인공지능을 위한 기초수학 |
||||||
|
이 름 |
김예훈 등 |
학 과 |
전자전기공학부 |
||||
|
학습한 내용 |
통계학 |
||||||
|
자기 점검표 |
|||||||
|
활동(Activity) |
Excellent |
Good |
Fair |
||||
|
1. |
나는 개인학습을 할 때 다양한 학습 자료를 사용하였다. |
|
V |
|
|||
|
2. |
나는 새로운 정보와 지식제공에 기여하였다. |
|
V |
|
|||
|
3.
|
나는 토의에 적극적으로 참여하였고 토의의 촉진과 이해를 위한 적절한 질문을 많이 제공하였다. |
|
V |
|
|||
|
4. |
나는 우리 반이 원활한 학습활동을 하는데 기여하였다. |
|
V |
|
|||
※ 다음 항목들을 고려하여 자신의 학습과정과 내용을 기록하시오.
1. 나는 지금 수행되고 있는 학습의 진행내용을 이해하고 있는가?
교재를 읽기만 해서는 개념에 대한 완벽한 이해가 불가능하다고 생각한다. 게다가 전공수준의 내용들이 적지 않기에 학습 자체가 쉽지않다. 또한 현재 미분적분학2를 수강 중인 1학년이라서 편도함수가 다중적분에 대해서는 능수능란한 수준이 아니다. 하지만 이 과목의 Goal은 증명과정의 암기나 개념의 완벽한 숙지가 아닌, 개념에 대항 talking about it 이므로 부담감을 가질 필요는 없다고 본다. May PBL을 제출한 지 얼마 되지 않았기에 학습 진행내용에 대한 이해는 큰 변화는 없다. 학기가 곧 끝나는 시점까지도 코딩에 대한 이해는 제자리 걸음인 것이 많이 답답하고 아쉬울 따름이다.
3월 누구보다 적극적으로 참여하였고, 조금만 더 연습하면 백지상태에서 완전하게 옮겨쓰는 일도 가능할 것이라고 봅니다.
4월 누구보다 적극적으로 참여하였고 대부분의 내용을 이해하고 있는데, 아무래도 학기 초보다 바빠져서 처음만큼 충실히 하지 못한 것도 있고, 그동안 배운 내용이 종합적으로 결합되다 보니 조금 더 어려워진 느낌이 있습니다. 미진한 부분을 보충할 필요성을 느낍니다.
5월 (1) 1학년 2학기 때 확률과 통계를 학습한 경험이 있기 때문에 이번 달에 수행되고 있는 학습의 진행내용에 대해 충분히 이해하고 있습니다. 물론 어느 정도 잊어버린 것들도 있지만, 이번 학습을 통해 다시 떠올리면서, 더 깊은 이해를 할 수 있었습니다.
(2) 선형대수학 과목을 선이수하였고 미적분학 과목을 1학년 때 이수하였던 데에 반해 통계에 대한 개념은 고등학교 때 배웠던 바가 다였기에 아무래도 다소 생소한 감이 있었습니다. 그리고 Sage 프로그램 언어가 C언어나 Python 형식과 비슷했던 데에 반해 통계에서 주로 쓰는 R 언어가 이질적인 측면이 있어 그에 대한 적응에 어려움이 많았습니다.
사실 3주차 수업 막바지에 수강 신청을 해서, 이전 내용을 학습하느라 진도를 따라잡기가 쉽지 않았습니다. 그래도 지금까지 제가 학습한 부분에서 크게 어렵거나 막히는 부분은 없었습니다. 특히 수업에서 사용하는 ‘Sagemath’ 언어는 파이썬(Python) 언어를 미리 학습해둔 덕에, 쉽게 이해할 수 있었습니다. 조속히 밀린 내용을 학습하여, 진도를 따라잡기 위해 노력하도록 하겠습니다.
통계 단원은 다른 단원에 비해 이해하는 것이 수월했습니다. 아마 고등학교 때 학습하였던 통계에 대한 기초 지식이 많은 도움이 되었던 것 같았습니다. 그 덕분에 통계는 다른 단원에 비해 잘 마무리된 것 같습니다.
이번에 학습한 빅데이터와 인공지능에 대해서 완벽히 이해하고 있다고 생각하진 않는다. 하지만 인공지능에게 어떠한 학습을 해주는지, 인공지능에 있는 일종의 인공 뉴런이 어떤 구조로 되어있는지, 그리고 인공지능으로 어떤 분야에 대입할 수 있는지 등 전반적인 지식에 대해 이해하고 있다고 생각한다.
이번 단원은 앞서 배운 part 1,2,3의 내용을 모두 종합하는 단원이였다. 앞선 단원에서의 수학적 공식들과 증명과정들을 완벽히 이해하지 못하였기 때문에 part4에 나오는 수학적 증명들과 정의들을 앞에서 찾아가며 공부해야 했었다. 하지만 주요개념인 인공지능(Artificial Intelligence, AI), 기계학습(Machine Learning), 딥러닝(Deep Learning) 등의 개념들과 인공지능에 역사에 대해서는 자세히 알게 되었다. 또, 앞서나온 특이값 분해(SVD)를 이용하는 주성분 분석(Principal Component Analysis, PCA)와, 신경망(Neural Network)의 구조와 응용분야에 대한 지식들을 이해하게 되었다.
2. 어떤 방법을 통해서 학습하였는가? (학습방법 및 자료)
편도함수나 다중적분에 대한 부분은 미분적분학2의 진도를 학습한 이후에 보는 것이 시너지 효과를 낼 수 있을 것 같았기에 진도에 맞춰 하고, 그 외의 생소한 부분은 교재 중심으로 어느 정도 이해가 될 때까지 반복해서 보았다. 물론 코딩을 입력하고 결과를 보는 것은 필수 단계!
3월 교수님께서 올려주신 온라인 강의와 제공해주신 pdf파일을 활용하였으며, Sage 코드를 하나하나 분석하며 코딩을 이해하려 노력했습니다.
4월 교수님께서 올려주신 온라인 강의와 제공해주신 pdf파일을 활용하였으며, Sage 코드를 하나하나 분석하며 코딩을 이해하려 노력했습니다. 강의를 듣다가 이해가 가지 않는 부분, 더 알고싶은 부분은 주저없이 문의게시판을 활용하여 질문하였고 교수님의 답변을 통해 새로운 지식을 습득하였습니다.
5월 (1) 이번 과목에서 준 교재들은 물론, 이전 학기 때 배운 ‘확률과 통계’ 때 얻은 확률과 통계 교재와 요약 pdf 파일을 통해 학습하였습니다.
(2) 그동안은 질문을 많이 하는 위주였는데 이번에는 질문보다는 다른 학생들의 게시글에 대해서 답을 다는 방법을 위주로 진행하였습니다. R 언어가 너무 생소하고 모르겠어서 개인적으로는 R에 관한 책을 하나 사서 보고 있습니다.
우선 ‘인공지능을 위한 기초수학’이라는 책과 온라인 강의를 기반으로 학습을 이행하였습니다. 부가적으로 선형대수학에 대한 이해를 높이기 위해, ‘Linear Algebra and It’s Applications’라는 책도 같이 학습하고 있습니다. 또한 컴퓨터에 ‘Sagemath’를 설치하여, 책에 나오는 코드들을 직접 실행시켜보고 있습니다. 코드가 의미하는 것을 이해하면서, 학습한 코드들을 직접 활용해보는 방법으로 ‘Sagemath’ 언어를 학습하고 있습니다.
이전과 동일한 방식으로 컴퓨터에 Sagemath와 R을 구동시켜둔 상태에서 교재에 있는 문제에 대한 코드를 입력해보며 학습하였습니다. 또한 R은 처음 다루어 보는 언어이기 때문에 가이드라인을 참조하였고, 코드에 있는 부가적인 옵션도 같이 학습하였습니다.
교수님께서 주신 교재 자료는 물론 교재에 있는 링크를 따라 가 학습하기도 했고(예시: 라그랑주), 그리고 갖고 있는 책들 중 간단한 인공지능(정확히는 머신 러닝)을 구현하는 코드들이 있는 책을 보면서 이해했다.
이번 단원은 앞선 단원에 비해 학습양이 적었다. 그래서 교재를 통한 학습과 병행해서 교수님이 제공하시는 유튜브를 이용하여 학습하였다. 그리고 빅데이터와 인공지능에 대한 학술자료들을 찾아보며 공부했다. 또한, QnA에 인공지능의 다양한 적용사례들과 심화적인 내용들을 다뤄주시는 분들의 글이 있어서 글들을 읽고 comment를 달면서 학습하였다.
3. 본 강좌의 학습활동을 통하여 무엇을 배웠나?
구체적인 개념을 일일이 나열할 수는 없지만 특히 통계학과 미적분학 파트에서는 대학입시당시에 공부한 내용 중 자세히 서술되지 않았던 부분에 대한 심화적인 내용을 교재를 통해 학습할 수 있어서 흥미로웠다. 인공지능과 수학의 연결고리만이라도 이 강좌를 통하여 볼 수 있다는 것이, 아쉬움 속에서도 얻은 수확이라고 본다,
3월 끝없는 토론활동을 통하여 나의 기존에 알고 있던 지식을 가다듬을 수 있고, 단시간에 방대한 지식을 습득할 수 있다는 것입니다.
4월 끝없는 토론활동을 통하여 나의 기존에 알고 있던 지식을 가다듬을 수 있고, 단시간에 방대한 지식을 습득할 수 있다는 것입니다. 요즘은 컴퓨터가 고도로 발달하여 인공지능을 바라보는 때이기에 다루는 데이터의 크기가 어마어마하고 손으로 계산하는 것은 한계가 있을 수밖에 없습니다. 코딩학습을 통하여 이러한 한계를 극복할 수 있고 나아가 새로운 시대의 흐름에 발맞추어 갈 수 있게 되었습니다.
5월 (1) 이번 달에 배우는 확률과 통계의 개념들의 대부분은 고등학교 때 이미 배운 것들로 구성되어 있지만, 공분산과 상관계수만큼은 그 때 배운 개념들이 아니었습니다. 이번 과목을 통해, 제대로 알고 있지 못했던 개념을 새롭게 배울 수 있었습니다.
(2) 고등학교 때 다루던 1변수 확률분포를 넘어 2변수 확률분포와 그에 딸린 개념들, 이항분포, 정규분포 외에 지수분포, 푸아송분포를 학습하면서 통계의 더 넓은 분야를 경험하게 되었습니다. 인공지능의 통계 분야에 있어 필요한 R 언어를 맛보기 하였는데 그 논리구조에 대해서 조금은 더 살펴봐야 할 것 같습니다.
선형대수학이라는 수학적 개념을 학습하고 그것을 프로그래밍 언어로 표현하면서, 수학이 인공지능에서 어떤 양상으로 활용되는지를 파악할 수 있는 계기가 되었습니다. 여러 개의 벡터를 하나의 행렬로 표현할 수 있는 것을 보면, 왜 이것이 인공지능에게 있어서 중요한지를 파악할 수 있었습니다. 벡터를 데이터의 관점에서 보면, 행렬은 입력값에 대하여, 데이터에 근거해 값을 출력시킬 수 있는 변환(Transformation)작업을 수행하는 것입니다. 또한 순열(치환)에 대한 심화적인 의미를 학습하면서 이것이 행렬의 행렬식(Determinant)을 결정하는 요소가 될 수 있다는 것에, 큰 흥미를 느꼈습니다. 선형대수학과 관련이 없는 것처럼 보이는 개념이 연결되어 활용될 수 있다는 점에서, 한 분야가 아닌 전 분야에 걸친 지식이 중요하다는 점을 몸소 느끼게 되었습니다.
포아송 분포, 지수 분포, 베르누이 분포, 이항 분포, 정규 분포와 같은 확률 분포의 연결 관계를 새롭게 깨달았습니다. 사실 포아송 분포, 지수분포, 베르누이 분포는 교재에서 처음 배운 내용이었습니다. 그렇기에 더더욱 흥미로웠습니다. 또한 기존에 얕게 알고 있었던 내용들을 공고히 하게 되는 계기가 되어 좋았습니다. 예를 들어, 베이즈 정리는 단순히 조건부확률의 변형판이라고 알고 있었는데, 여기서 직접 베이즈 정리가 어떤 것인지를 깨닫게 되었습니다.
인공지능에게 어떠한 학습을 해주는지, 인공지능에 있는 일종의 인공 뉴런이 어떤 구조로 되어있는지, 그리고 인공지능으로 어떤 분야에 대입할 수 있는지 등을 배웠다.
주요개념인 인공지능(Artificial Intelligence, AI), 기계학습(Machine Learning), 딥러닝(Deep Learning) 등의 개념들과 인공지능에 역사에 대해서는 자세히 알게 되었다. 또, 앞서나온 특이값 분해(SVD)를 이용하는 주성분 분석(Principal Component Analysis, PCA)와, 신경망(Neural Network)의 구조와 응용분야에 대한 지식들을 이해하게 되었다.
빅데이터와 인공지능에 대한 심화 내용과 개념들에 대한 쉬운 설명 덕분에 학습에 도움이 되었습니다.
저도 잘 이해가 안 가는 부분들을 질문하여 남들에게 도움이 줄 수 있는 자세에 대해 배웠습니다.
(참고 글들)
-AI가 게임 프로덕트에 적용된 사례, AI(인공지능)‘퍼즐 봇’ - 홍태규(2013****54)
배운점 : AI가 게임에서 단순한 npc 역할을 하는 것을 넘어서 게임의 밸런싱에도 도움이 된다는 사실에 대해 알게 되었다.
이상구(LEE SANGGU)-6월 16일 오후 3:14
AI 로봇 인공지능 이 대체할 직업 ! 인공지능 작곡가 등장 ?
[출처] AI 로봇 인공지능 이 대체할 직업 ! 인공지능 작곡가 등장 ?|작성자 DESO
http://blog.naver.com/PostView.nhn?blogId=huihi68&logNo=221702278875
+plus : 사람이 했던 작업이 인공지능에 의해서 대체되는 미래는 멀지 않은 것 같았다.
-인공지능이 활양되는 분야(유전자 분석)-조완제(2016****76)
배운점 : 단 한 번의 유전자 분석으로 미래에 어떤 희귀병에 걸릴 가능성이 높은지를 알 수 있다면 발병을 예방하는 데 큰 도움이 될 것이다. 인공지능을 이용한 희귀병 예방과 그 이유에 대해 알게 되었다.
-인공지능의 발전(코딩을 해주는 인공지능)-마이크로소프트 빌드2020 소개-김승한(2012****19)
배운점 : 코딩을 해주는 인공지능에 대해 알게 되었고, 코딩의 구조에 대한 정확한 이해를 기반으로 인공지능을 수정하는 작업의 중요성 또한 알게 되었습니다.
-마이크로 소프트 AI lab projects 소개-김승한(2012****19)
배운점 : 그림을 변환 시켜주는 모델에 대해 새롭게 알게 되었습니다.
-New Data 처리서버, 성균관대 선형모델 연구실과 ㈜프로키언이 연구실 창업을 통해 협력하여 구축한 예
-이상구 교수님(LEE SANGGU)
배운점 : 교수님이 올리신 내용들에 대해 실습해 보면서 판다스를 이용한 2차원 데이터 처리의 용이함을 확인했습니다.
<실습내용>

사이트 : http://math3.skku.ac.kr/
코드 :
import pandas as pd # dataframe 이라는 2차원 테이블 데이터 구조를 만들수 있는 라이브러리
import matplotlib.pyplot as plt # 자료를 차트(chart)나 플롯(plot)으로 시각화 해주는 라이브러리
import seaborn as sns # matplotlib기반 데이터 시각화 라이브러리
from sklearn.datasets import load_boston # scikit-learn에서 제공하는 boston 부동산 데이터
boston = load_boston() # boston부동산 데이터 로드
dfX = pd.DataFrame(boston.data, columns=boston.feature_names) # boston data로부터 데이터 재가공
dfy = pd.DataFrame(boston.target, columns=["MEDV"])# boston data로부터 데이터 재가공
df = pd.concat([dfX, dfy], axis=1) # dfX와 dfY데이터 병합 axis=1은 인덱스에 맞게 데이터를 옆에 붙인다.
df.tail() # 병합된 데이터를 뒤에서부터 5개 출력해준다.
cols = ["MEDV", "AGE", "RAD"] # 시각화 할 column 추출
sns.pairplot(df[cols]) # 지정한 플롯들을 한번에 보여주는 함수
plt.show() # 플롯 출력 명령문
-sigmoid 함수에 대해서, &hidden layer를 활성화 시키는 함수로 ReLU라는 활성화 함수를 사용하는 경 우^^ - 민재필(2015****15)
배운점 : 교재에 나온 sigmoid함수와 hidden layer에 대한 심화적인 내용을 다루는 자료였습니다. 그리고 sigmoid 이후에 나온 ReLU함수에 대해서도 알 수 있었습니다.
-퍼셉트론에 대한 정리-김예훈(2020****54)
배운점 : 퍼셉트론의 기반과 내부 메커니즘에 대해 자세히 알 수 있는 좋은 자료였습니다.
-PCA를 바이오 데이터 분석에 사용하는 예 –민재필(2015****15)
배운점 : 바이오 데이터 분석에 PCA를 적용하는 이유와 구체적인 방법에 대해 알게 되었습니다. 특히 그래프가 있어서 한눈에 알아 보기 편했습니다.
1. Principal components capture the most variation in a dataset
2. PCA deals with the curse of dimensionality by capturing the essence of data into a few principal components.
3. Dimensions vary in the weights they have on each principal component.
-PCA 주성분에 대한 질문 – 민재필(2015****15)
배운점 : PCA의 첫 번째 주성분의 분산을 가장 maximize 하는 이유에 대해 알게 되었습니다.
이상구(LEE SANGGU)6월 11일 오후 2:22
원래 데이터의 성질을 가장 잘 보존하면서 차원을 낮추려면,당연히 영향이 큰, 즉 ... 데이터가 분포되어 있는 상황을 가장 잘 표현하는 것들을 우선하여 생각하는 것이 가장 합리적이므로1. 분산이 큰 요소들을 우선 순위를 주어 그 순서대로 Principal Component 의 순서를 주어 배열하는 것이 가장 합리적이기 때문입니다. 그래야 주요 상관관계는 충분히 남아있고 ... 상관관계가 별로 없는 변수 들에 대응하는 축들은 무시하거나 하나의 축으로 묶어서 처리하고 ... 차원을 많이 줄여주는 것입니다.2. 이는 SVD 에서 크기가 가장 큰 singular value 들을 주 대각선의 위쪽에 크기순으로 배열하는 것과 마찬가지 이유입니다.3. SVD 와 마찬가지로 ... 차원을 줄일 때도 ... 아래 singular value 들이 영인 것과 아주 작은 것들을 우선 무시하면서 행렬 사이즈를 줄이는 것과 같은 이유입니다.그럼 그 후 계산 시간은 엄청 빨라지면서도 ... 원래 데이터의 성향을 거의 그대로 보존하는 것 이랍니다.이 중요한 축 들이 ... SVD 의 앞에 있는 큰 크기의 singular value 들 이 하는 역할을 한다고 생각하시면 이해가 쉬울 것입니다.
-ANN 인공 신경망 by 성대 학생 지난 학기 개발한 코드-이상구 교수님(LEE SANGGU)
배운점 : 파이썬 코드를 이용하여 털과 날개의 유무에 따라, 포유류와 조류를 분류하는 신경망 모델을 작성하는 모습을 보고 코드를 작성하는 방법이 그렇게 어렵지 않다는 느낌을 받았습니다. 저도 이를 이용하여 간단한 분류를 할 수 있는 코드를 짜 보았습니다.
4. 다른 동료들로부터 무엇을 배웠는가?
고학번 학우분들이 많기에 그들의 앞선 수학적 지식에 감탄했고 특히 열정적으로 문의게시판 활동을 하는 학우들의 열정에 대해서는 박수를 보내고 싶다. 단순 코딩입력이상수준으로 응용하는 그들의 모습에 항상 감탄했다.
3월 모르는 문제에 대해서 주저없이 질문하는 그런 자세입니다.
4월 모르는 문제에 대해서 주저없이 질문하는 자세, 교재를 활용하여 적극적으로 문제를 변형하여 풀고 올려서 확인받는 여러 가지 절차들을 배웠습니다. 기존의 방식을 고집하여 다소 비효율적으로 질의응답을 하였으나 온라인 교재를 활용하여 앞으로 더 효율적인 학습을 하는 방법 또한 알게 되어 기쁘게 생각합니다.
5월 (1) 5월이 되니 이 수업에 대해 뜻이 없는 학생들이 정리가 되고 뜻을 갖고 열심히 임하는 학생들이 눈에 띄는데 수업의 본질을 깨달아 변형 문제를 올리고 코딩을 더 깊이 이해하고 공유하는 몇몇 학생들이 보입니다. 3, 4월에는 제 질문과 그에 대한 학습 위주로 하였는데 다른 사람의 글을 이해하고 그에 대한 생각을 나누고 생각을 발전시키고 하니 서로의 이해의 폭을 공유할 수 있어 더 깊고 더 넓은 학습이 가능하다는 것을 배웠습니다.
(2) 이번에도 QnA에서 많이 배운 것 같습니다. 다른 사람들의 글에 댓글을 달면서, 교재에 나온 개념들을 간단히 정리해서 올리신 글은 물론, 교재에는 정확히 나와 있지 않은 관련 심화 개념들을 정리한 글, 그리고 교재에서 나온 개념들을 이용한 문제 풀이 등 배울 것들이 많았습니다. 특히 개념들을 정리한 글을 보고, 어떻게 개념을 정리하는 것이 가장 효율적인지를 알 수 있었습니다.
3주차 막바지에 수강을 신청했기에, 아직 다른 동료들과 상호작용을 하지는 못하였습니다. 그래도 Q&A를 읽어보면서, 제가 미처 생각하지 못했던 부분을 발견할 때도 많았습니다. 예를 들어, 전치행렬에 대한 증명 내용을 보면서 저도 이 부분에 궁금증을 느껴, 직접 전치 행렬의 성질을 탐구해보았습니다. 이러한 상호작용으로부터 얻을 수 있는 깨달음을 위해 조속히 진도를 따라잡아서, 활발하게 질문과 답변을 하도록 노력하겠습니다.
직접 동료들과 소통을 하고 난 후에, 깨달은 바가 많았습니다. 열정적인 몇몇 동료분들 덕분에, 제가 제시했던 내용에 오점이 있다는 것을 찾고, 그것으로부터 배움을 얻을 수 있었습니다. 또한 저도 동료분들에게 정보를 공유함으로써 나름의 성취감을 느끼기도 하였습니다.
빅데이터와 인공지능을 학습하면서 깊게 이해하기 힘든 부분들이 많았는데, 많은 동료분들께서 문의게시판에 이미 어려운 개념들을 여러 개 질문해주신 덕분에 빠르게 이해할 수 있었습니다. 이렇게 자신은 물론 다른 사람들도 잘 이해가 안 가는 질문들을 빠르게 물어보는 것을 저 또한 배워야겠다고 다짐했습니다.
빅데이터와 인공지능을 기반으로 한 AI의 사용을 실생활에서 살펴보고 그에 대해 학습해 나갈 것이다.
5. 새롭게 배운 내용을 실제 생활에 어떻게 적용할 것인가?
수학개념을 실생활에 적용하기에는 지식수준이 아직은 고급적이지는 않다고 생각한다. 이후 진로 측면에서 볼 때 교사나 강사로서 활동할 지도 모르지만, 우선은 코딩 작업결과 얻게되는 시각 자료로서 다른 수학과목에 대하여 도움이 되도록 활용 해보고 싶다. 코딩을 자유자재로 활용하는 수준까지는 꼭 되고싶었는데 많이 아쉽다.
3월 여러 실험을 할 때 데이터에 대한 경향성을 식으로 나타낼 필요가 있을 것인데, 최소제곱해에 관한 이론을 활용한다면 매우 효율적으로 나타낼 수 있을 것으로 생각합니다.
4월 모든 생활에 있어서 효율이 가장 중요시되는 때입니다. 경사하강법, 극대 극소와 나아가 최대 최소 문제, 최소제곱해의 문제를 활용하여 가장 효율적인 해를 구하는 일들이 쉽고 빠르게 가능할 것 같습니다.
5월 (1) 주식 투자, 코로나와 같은 감염병의 확산 등 예측에 있어서 활용이 가능할 것 같습니다. 통계가 주어진 데이터를 분석하는 것의 의미도 있지만 미래를 예측하고 그에 대한 전략을 세우는 기능이 인공지능에 있어서나 다른 분야에 있어서나 매우 중요해지는 시대이기 떄문에 미래 예측에 있어서 아무래도 압도적으로 많이 쓸 것 같습니다.
(2) 확률과 통계는 실생활에서 정말 많이 쓰일 것입니다. 특히 통계 분야는 말할 것도 없이 기업이라면 언제나 사용할 것입니다. 확률 분야 또한 투자는 물론 카지노까지 다양한 곳에서 쓰일 수 있습니다. 특히 빅데이터를 다룬다면 확률과 통계의 중요성은 이루 말할 것도 없이 중요합니다. 통계의 결과를 바탕으로 원하는 결과를 얻을 확률이 가장 높은 것을 찾아내야 하기 때문입니다.
본 강좌의 주제가 ‘인공지능’인 만큼, 프로그래밍을 하면서 ‘Sagemath’ 프로그램을 적극적으로 활용하려고 합니다. 실제로 현실적인 문제를 수학적으로 모델링할 때, ‘Sagemath’를 사용한다면, 더 수월하게 작업을 이행할 수 있을 것 같습니다. 예를 들어, 회로의 전류를 분석하고자 할 때, 키르히호프의 법칙에 근거하여 행렬이 사용됩니다. 이러한 회로 모델을 ‘Sagemath’를 통해 더 간단하게 프로그래밍할 수 있을 것입니다.
이번에 R 언어를 학습하면서, R이 다양한 정보를 통계적으로 처리하는 데 있어서 유용하다는 점을 깨달았습니다. 그렇기 때문에, 몇몇 전문 통계자료를 요구하는 프로그램에 대하여, R언어를 포팅함으로써, 다른 언어들과 융합해서 사용을 해볼 것 같습니다.
빅데이터와 인공지능은 실제 생활 이곳저곳은 물론 여기에 쓰일까 싶은 것들에도 유용하게 사용될 수 있기 때문에, 인공지능을 사용하기 적합하다고 생각되는 곳이라면 어디든지 사용될 것이다. 특히 인간의 사고를 바탕으로 하는 일들 중 단순한 축에 속하는 일을 대체할 가능성이 높다.
part4는 앞선 단원에서 부족했던 만큼 가장 열심히 QnA에 참여하고 comment를 달았기 때문이다.
6. QnA 활동에서 자신의 역할과 기여도에 대한 평가(자신의 활동에 점수를 주고 그 이유를 적으세요.) :
열정적으로 활동하는 다른 학생들을 보면 그들의 코딩활용경험에 항상 감탄한다. 이러한 코딩에 대한 경험이 어느정도 있기에 가능할 것이다. 반면 나는 이러한 경험이 거의 없기에 적극적인 코딩활용은 하지 못하는 상태이다. 대신 교재에 기술된 개념에 대하여 곱씹어보고 심화적인 질문을 남기면 교수님이나 다른 학생들의 답글을 통해 이를 이해하게 되고, 또한 나와 같은 궁금증을 가진 학생들도 있을 수 있기에 이같은 개념에 대한 의문점 해소에 조금이나마 도움이 되었을 거라고 생각한다.
내가 주로 남긴 질문들은 학습내용의 심화적인 부분이라기보다는 단순개념의 이해 및 과제나 학습수행에 있어서의 어려운 점에 대한 고민상담이었다.
3월 평가 점수 : 80 점
이유 : 가장 열심히 참여하였지만, 코딩에 대한 실습 참여가 부족하였고 다른 학생들의 질의응답에 더 적극적이지 못했습니다.
4월 평가 점수 : 70 점
이유 : 가장 열심히 참여하였지만, 온라인 교재를 활용하여 질문을 올리는 방법이 아직 미진한 부분이 있었고, 다른 학생들의 질의응답에 대해 아직까지도 신경을 많이 못쓴 것이 후회가 남습니다.
5월 평가 점수 : 80 점
이유 (1) : 지난달에 비해서는 확실히 참여하는 비율이 늘었습니다. 댓글을 다는 것은 물론 매주 글을 써왔습니다. 다만 쓰는 글의 종류가 일정했다는 아쉬움이 있는데 이를 고쳐야겠다고 생각했습니다.
이유 (2) : 학생들은 점차 더 열정적으로 참여한 데에 반해 저 스스로는 이 수업에 대한 투자가 많이 줄어들었던 아쉬운 5월이었습니다. 다른 과목들의 무거운 과제들이 많아져서 상대적으로 신경을 많이 못 썼던 것도 있고, 그동안 한 분량이 많으니 좀 쉬엄쉬엄하자는 마음이 은연중에 들어왔던 것이 과해져서 좀 게을러졌던 측면도 있습니다. 6월에 마무리할 4단원이 이 과목의 궁극적 목적일 될텐데 진정한 이 수업의 의미를 완성시키는 6월로 마무리해보자고 다짐해봅니다.
- 몇 가지 의문점과 깨달음을 정리해 놓은 것을 제외하고는 아직까지 크게 기여한 부분이 없어서, 50점으로 스스로를 평가하였습니다. 추후에 진도를 따라잡아서 Q&A활동에 기여하도록 노력하겠습니다.
- 초반에 했었던 것 보다는 적극적으로 참여했다고 생각합니다. 그래서 80점으로 저 스스로를 평가하였습니다.
- 아쉽게도 이번에는 개념을 배운 것에 비해 많은 질문을 하지 못했다. 그래도 댓글로써 자주 참여하는 모습을 보이긴 했다.
7. 다른 학생에 대한 평가
궁금한 것들에 대해 많은 질문을 해주시고, 개념에 대해 추가적인 질문들을 통해 보충해주셔서 고마웠습니다. 또, 전혀 몰랐던 내용에 대해서도 소개해주셔서 감사했습니다. 이 보고서 작성 중 다른 학생에 대한 서술을 해야할 부분이 있는데 거기서 구체적으로 기술하겠지만, 열정적인 탐구활동을 하는 몇몇 학생들의 모습은 본받고 싶을 정도이다. 단 이러한 활발한 활동을 펼치는 학생들의 수가 적다는 것이 아쉽다.
3월 코로나 19사태로 어수선한 가운데서 온전히 참여하는 학생과 그렇지 못하는 학생으로 초반에 갈렸는데, 교수님의 강의 방식에 적응하지 못한 학생들이 꽤 많았던 것 같습니다. 이제 대부분의 학생들이 QnA에서 활발한 활동을 펼쳐가고 있고, 주저없이 토론하는 분위기가 형성이 되었기에 매우 바람직한 모습으로 생각하고 있고, 다변수함수의 미적분학 파트에서 더욱 많은 것을 배울 수 있을 것 같아 기대가 됩니다.
4월 요즘에는 질의응답 게시판에 청강생의 글이 많이 보입니다. 학부생 뿐만 아니라 대학원생 직장인 등 다양한 사람들이 청강하러 모여드는 모습을 볼 수 있는데, 다들 바쁜 가운데에서도 배우려는 의지가 대단하구나 하는 것을 느꼈습니다. 더군다나 인공지능이 중요해지는 요즘의 때, 고등학생들도 곧 인공지능을 배운다고 하는데 배우지 않는 사람은 점차 도태되어 갈 수밖에 없는 세상에서 생존하기 위해 몸부림치는 그런 모습 또한 볼 수 있었습니다.
5월 (1) 다른 학생 분들은 예전보다도 훨씬 왕성하게 활동하고 있기 때문에, 제게 있어 매우 큰 자극이 되어 주십니다. 여러 개념들을 정리해 주시는 분도 계시고, 학습한 개념들을 이용해 문제풀이를 해주시는 분도 계시는 등 다양한 분들이 다양한 도움을 주십니다. 여러 학생분들보다도 더 열심히 노력해서 큰 점수를 받을 수 있도록 노력하고 싶습니다.
(2) 황인성, 김예훈, 민재필, 김용훈, 조완제 학우 등 문의게시판에 가장 적극적인 학생들이 이제 어느 정도 추려진 모습입니다. 기존에 알고 있던 인공지능, 프로그래밍의 지식을 학생들과 공유하며 학생들의 학습을 돕는 경우도 있고 학생들이 주체가 되어 만들어가는 수업의 모습, 체계가 갖추어지는 것 같습니다. 상대적으로 저 스스로가 더 발전되지 못한 것 같아서 아쉽긴 하지만 위 학생들 덕분에 6월의 수업이 더 기대됩니다.
Q&A를 읽어보면서, 수학에 열정적인 분들의 글을 보았습니다. 아직 학습하지 않은 부분이라서 이해하는 데는 어려움이 있었지만, QR 분해와 최소제곱문제와 같은 낯선 개념이 어떤 내용인지, 그리고 어떠한 양상으로 전개되는지를 이해하는 데는 도움이 되었습니다. 수학에 열정적인 분들이 많은 만큼, 그에 상응하여 열심히 Q&A 활동을 하여 그 열정을 공유해보고 싶습니다.
Q&A 활동에 참여하면서, 동료분들의 열정을 다시 확인할 수 있었습니다. 이러한 동료분들이 있어서, 저 스스로도 수학에 힘쓰고자 하는 열정이 생깁니다.
저보다도 자신이 궁금한 것들을 질문하는 것은 물론 질문한 개념에 대해 정리한 후 다시 글을 올리시는 모습이 정말 존경스럽기까지 했습니다. 정말 대단하다고 생각하며 저 또한 그 자세를 본받고 싶습니다.
Self Evaluation 2. (개인 성찰 노트 2) (학생용)
|
과 목 명 |
인공지능을 위한 기초 수학 |
||||||||
|
이 름 |
김예훈 등 |
학 과 |
전자전기공학부 |
||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
|||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
V |
|
|
||
|
2. |
QnA에 적극적으로 참여하였다. |
|
|
|
V |
|
|
||
|
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
|
|
|
V |
|
|
||
|
4. |
동료에게 도움이 되는 지식과 정보를 제공하였다. |
|
|
V |
|
|
|
||
|
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
V |
|
||
|
6. |
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
V |
|
|
||
|
7. |
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
V |
|
|
||
[의견]
▶ 자체평가에 따른 잘한 점
QnA에 자주 참여했으며, 출석을 빠짐없이 했습니다.
또, 문의게시판에 올라온 내용은 모두 꼼꼼히 읽어보고 모르는 내용은 찾아가며 공부했습니다.
3월 기존에 수님의 선형대수학을 수강하면서 파악한 교수님의 강의 스타일과 저의 호기심 등을 결합하여 QnA 게시판에 누구보다도 열심히 적극적으로 뛰어들었기에 초반에 좋은 점수를 올릴 수 있었습니다.
4월 기존에 교수님의 선형대수학을 수강하면서 파악한 교수님의 강의 스타일과 저의 호기심 등을 결합하여 QnA 게시판에 누구보다도 열심히 적극적으로 뛰어들었기에 초반에 좋은 점수를 올릴 수 있었습니다. 나아가 자신있게 쌓아올린 선형대수학 지식을 미적분학에 결합시킴으로 더욱 깊은 수학적 이해를 이루어낼 수 있어서 좋았습니다.
5월 (1) 다른 기간들보다도 QnA에 열심히 참여했습니다. 다른 학우 분들의 질문에도 답을 해 주었고, 여러 유용한 글들을 쓰려고 노력했습니다. 그리고 다른 분들이 쓴 글에도 댓글을 달면서 열심히 참여했습니다.
(2) 통계 부분은 고등학교 때 적분과 통계라는 과목 이름으로 수학을 배운 이후로는 처음 접하는 바입니다. 정확한 개념 이해와 적용 위주로 공부했어서 이해하는 데에 크게 어렵지 않았고 곧잘 수업 내용을 따라갈 수 있었습니다. 이번에는 3, 4월에 미흡하였던 다른 학생들의 QnA에 어느 정도 참여하고 보탰다는 점에서도 의미가 있었습니다.
이전보다는 나름대로 Q&A에 규칙적으로 참여하고, 수업 진도도 따라잡았다는 점에서 저 스스로 잘했다고 생각합니다.
이번에도 저번 달과 같이 QnA에 자주 참여했으며, 출석을 빠짐없이 하고 혼란스러울 수 있는 개념에 대해 질문하는 등 학생으로서 QnA에 열심히 참여하는 자세를 보여주었다고 생각한다. 그리고 문의게시판에서 저보다도 더욱 적극적으로 활동하시는 분들이 많아서, 그런 분들과 다른 수업을 들을 때 서로 협업한다면 큰 도움을 받을 수 있고 또한 큰 도움을 드릴 수 있다고 생각합니다.
▶ 자체평가에 따른 아쉬운 점
3월 스스로의 생각에 몰두한 나머지, 다른 학생들의 토론 진행상황에 대해서는 다소 면밀히 살피지 못한 것도 있는데 그것이 아쉬움으로 남습니다.
4월 스스로의 생각에 몰두한 나머지, 다른 학생들의 토론 진행상황에 대해서는 다소 면밀히 살피지 못한 것도 있는데 그것이 여전히 아쉬움으로 남습니다. 그리고 이번에는 학기에 한창 접어들다보니 학습 시간을 규칙적으로 분배하지 못한 점도 있어서 아쉽습니다.
5월 (1) QnA에 자주 참여한 것은 맞지만, 제가 적은 글들은 그 유형이 비슷한 경우가 많았습니다. 아무래도 질문보다는 문제 해설 위주의 글을 쓰다보니 그렇게 된 것 같습니다. 다음 달에 배우는 것은 정말로 새롭게 배우는 개념들일텐데, 마지막 달에는 질문하는 글을 많이 써야 할 것 같습니다.
(2) 다른 과목이 더 무거워졌다, 시간이 없어졌다 등의 핑계로 수업을 규칙적으로 수강하지 못한 부분도 있고 QnA에 먼저만큼 신경쓰지 못한 점들이 분명히 있었습니다. R에 대해 Sage만큼 이해하고 활용하는 연습도 많이 부족하였고 하여 솔직히 Part 1, 2만큼 3을 잘 익혔다고 말하기는 어려울 것 같습니다.
이전에 학습이 덜 된 부분이 있어서, 그 부분을 넘겨서 다음 부분을 하고 있는 것이 약간 아쉬웠습니다.
지난 달과 같이 QnA에 스스로 질문하는 횟수 자체는 좀 줄어든 감이 있다. 물론 이번에는 16주차에 대해 생각하지 않기 때문에 비율만 보면 올랐다고 생각할 수 있겠지만, 이번 인공지능 파트는 개념 하나하나의 밀도가 높기 때문에 질문할 요소가 많지만, 정작 나는 질문을 많이 하지 못한 것이 아쉬운 점이다.
PCA에 대해 학습하면서 아쉬운 점은 잘 이해가 안간다는 점이였습니다. 반복적으로 살펴보고 다양한 자료들도 찾아 보았습니다만 부족한 점이 있었습니다. PCA의 수행방법과 결과에 대해서는 이해를 하였지만 그 과정은 상세하게 이해하지 못했습니다. 앞에서 나온 경사하강법에 대한 이해가 부족한 탓 인 것 같았습니다. 한번 더 part1에 대해 꼼꼼히 공부를 해봐야겠다고 다짐했습니다.
Self Evaluation 3. (개인 성찰 노트 3) (학생용)
자신의 학습에 도움이 된 우수한/성실한 동 료 평 가
|
과 목 명 |
인공지능을 위한 기초수학 |
|||||||
|
|
(두 명 이상의 추천을 받은 학생은 가산점) |
|||||||
|
피평가자(동료) |
김용훈, 김도현, 홍태규, 조완제, 신재열... |
|||||||
|
평가자(작성자) |
김예훈, 황인성, 나우주 ... |
|||||||
|
평가항목 |
전혀 아니다 |
아니다 |
약간 아니다 |
약간 그렇다 |
그렇다 |
매우 그렇다 |
||
|
1. |
온라인-오프라인 출석을 규칙적으로 하였다. |
|
|
|
|
V |
|
|
|
2. |
QnA에 적극적으로 참여하였다. |
|
|
|
|
|
V |
|
|
3. |
QnA 내용에 적합한 질문과 응답을 하였다. |
|
|
|
|
V |
|
|
|
4. |
동료에게 도움에 되는 지식과 정보를 제공하였다. |
|
|
|
|
V |
|
|
|
5. |
다른 동료의 의견을 존중하였다. |
|
|
|
|
V |
|
|
|
6.
|
QnA 운영 및 의견수렴과정에 긍정적으로 기여하였다. |
|
|
|
|
|
V |
|
|
7.
|
이번 강좌의 동료와 다른 수업도 듣고 싶다. |
|
|
|
|
V |
|
|
|
[의견]
▶ 자체평가 중 잘한 점 (1) 주체적으로 조별 과제 활동을 계획하고 업무를 분담하는 데에 있어서 탁월성을 보였고 학생들이 어려워할 수 있는 몇가지 개념들은 일목요연하게 잘 정리한 것이 좋았습니다.
(2) Webex에 종종 참여하는 것은 물론 QnA에서도 글을 종종 쓰면서 이 과목에 대한 관심을 놓치지 않고 계속 성실히 참여하는 자세를 보여주고 있습니다.
매 주마다 그분의 글이 상단에 올라와 있는 것으로 보아, 주기적으로 열정을 가지고 참여하시는 분이라고 생각합니다. QnA활동을 조금이라도 해 본 학생이라면 누구나 봤을 학우임에 틀림없을 정도로 늘 한결같은 열정을 보여준다. 또한 개념에 대한 진술이 매우 깊이가 있어 마치 백과사전을 보는 듯 하다 인공지능을 위한 기초수학을 학습하는 데 있어 궁금한 점에 대해서는 언제나 동료들과 같이 이야기를 나누면서 해결하는 모습을 보였다. 홍태규씨는 문의게시판에 올린 글들은 많지 않았지만, 올린 내용에 대해서는 깊게 이해하고 있는 것 같았습니다. 또한, 궁금한 점에 대해 깊게 조사하는 태도가 훌륭했습니다. 조완제씨는 문의게시판에 올린 글의 수도 많았고, 좋은 자료들을 올려주셔서 항상 참고하고 있습니다. 개념들에 대해서도 추가적인 설명해주셔서 고마웠습니다. 또, 내용에 대한 전반적인 이해가 깊은 것 같았습니다.
▶ 자체평가 중 미비점 (1) 조별 과제 활동에 있어 다른 학생들이 이해하기 어려운 소재여서 함께 활동을 진행하는 데에 어려움이 있었습니다.
(2) 다만 그 빈도가 아직까진 큰 점수를 받을 수 있는 수준이 아니기에, 앞으로 더 자주 Webex는 물론 QnA에 참여해야 할 것이라고 봅니다. 없습니다. QnA에 자주 참여하는 모습을 보이지 못 했다는 것이 아쉬운 점이다. 질문하는 글도 글이지만, 댓글로라도 참여할 수 있는데 댓글로 참여한 것도 없다시피해서 아쉽게도 QnA 활동에 있어 좋은 평가를 받을 수 있을지는 미지수입니다. |
||||||||
Self Evaluation 4. (개인 성찰 노트 4) (학생용)
* 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에 인공지능의 다양한 적용사례들과 심화적인 내용들을 다뤄주시는 분들의 글이 있어서 글들을 읽고 comment를 달면서 학습하였다. 인공지능에 대한 책들을 시중에 많이 나와있어서 그 중 베스트 셀러중 하나인 ‘인공지능과 딥러닝(인공지능이 불러올 산업 구조의 변화와 혁신)’이라는 책을 참조하였다.
3월
주어진 문제 소재에 대하여 나만의 언어로 일목요연하게 정리하며 익히는 학습 기술
4월
주어진 문제 소재에 대하여 나만의 언어로 일목요연하게 정리하며 익히는 학습 기술, 다른 학생들의 질문에 대해 사고를 확장하여 논의를 심화시키는 학습 기술
5월
(1) 다른 학생들의 질문을 검토하고 이해하여 논의를 심화시키고 완성시키는 학습 기술. 인터넷에서 자료를 인용하여 스스로의 학습에 도움을 얻는 기술.
(2) 강의와 교재 간의 비교를 통한 개념 학습을 하였고, 과거의 자료를 찾아보며 부족한 개념을 보강하여 학습했으며, 인터넷에서 알고 싶은 기존 개념들과 심화 개념들을 직접 찾아보며 스스로 학습하는 자세를 배울 수 있었습니다.
Q&A에 질문을 올리기 위해서는 저 스스로 교재에 대한 학습이 이루어져야 한다고 생각합니다. 이러한 생각으로, 교재를 학습한 곳 까지 미리 정리해둡니다. 이러한 과정에서 Q&A에 올릴만한 주제가 떠오르며, 그러한 생각을 작성해서 올립니다. 이것이 습관이 되어 일종의 자기 주도적 학습 기술이 된 것 같습니다.
이번에는 다른 경우와 다르게 책을 좀 많이 찾아본 것 같다. 인공지능과 관련된 책이 있어서 스스로 공부할 때 많이 참고했다. 인터넷에서 구하는 디지털 자료 말고도 책과 같은 실재하는 자료들도 꼭 필요하다는 걸 깨닫게 되었다.
12-1. 본 수업과정에서 자신이 참여한 활발한 의사소통을 구체적으로 설명하시오.
교재를 정독하면서 조금이라도 의문점이 생기거나 이해가 되지않아 앞으로 나갈 수가 없을 때 즉시 이에 대한 질문을 문의게시판에 작성한다. 교수님 뿐만 아니라 다른 학우들도 적극성을 보이며 답을 해주기에 이 부분이 매우 흥미롭다. 단, 개념에 대하여 너무 깊이 들어가는 것은 이 강좌의 Goal에 맞지 않으므로 이에 대한 점검도 교수님께 받을 수 있도록 질문을 남기는 것이 좋다고 생각한다. QnA에서 글을 많이 적지는 못 했으나, 댓글로라도 많이 참여했다. 교수님께서 올리신 정보글에도 댓글을 달고 다른 학생분들이 올리신 글에도 댓글을 달며 성실하게 참여했다. 물론 나 또한 QnA에 글을 올렸다. 공분산행렬에 관한질문과 라그랑주 승수법을 실습하는 과정에 대한 글을 올렸다.
3월
궁금한 점에 대해 주저없이 QnA에 올리는 일
4월
궁금한 점에 대해 주저없이 QnA에 올리는 일, 다른 학생들의 질문에 참여하는 일, 교수님의 WebEx 미팅 요약, 수업에 대한 건의
5월
(1) 궁금한 점에 대해 QnA에 올리기, 다른 학생들의 질문에 참여하고 질의응답을 완성, 교수님의 WebEx 미팅 요약
(2) QnA에서 학습했던 개념들을 이용해 문제를 푸는 방법들을 소개했으며, Webex에 매주 참여하는 등 활발하게 활동하였습니다.
주로 Q&A에 문제를 만들어서 올리거나, 개념이나 정의에 대하여 탐구하고, 교재에 있는 오류를 올리는 활동을 하였습니다. 그중에서도 개념이나 정의에 대하여 탐구하는 활동에 활발히 참여하였습니다.
비록 QnA에서 글을 많이 적지는 못 했지만 그래도 댓글로라도 많이 참여했다. 교수님께서 올리신 정보글에도 댓글을 달고 다른 학생분들이 올리신 글에도 댓글을 달며 성실하게 참여했다. 물론 나 또한 QnA에 글을 올렸다. 인공지능의 학습 종류에 대하여 질문했다.
14-1. 우리 방식의 수업에서 효과적이었다고 생각되는 부분을 구체적으로 설명하시오.
이미 AI의 시대에 접어들었다고 생각한다. AI기술과 수학지식을 접목하여 사회적으로 발생하는 문제에 이를 활용할 수 있다. 당장 지금까지도 세계적으로 공포를 떨치고 있는 코로나 바이러스에 대해서도 이러한 기술을 활용할 수 있는 부분이 있음을, 교수님께서 올리신 참고자료를 통해 알게 되었다. 이러한 기술 활용에는 반드시 이에 관한 교육과 학습이 필요하다. 언제까지나 미래의 일이라며 미룰 수 없다.
이 강좌가 바로 이러한, 새롭게 요구되는 학습태도의 선구자 역할을 한다고 본다.
하얀 백지에 흑연으로 그래프를 그리고 식을 쓰는 방식으로만 수학을 학습하는 시대가 아닌 실생활에 조금 더 가까이 가서 문제해결에 도움이 되는, 실용적인 면이 강화된 학습태도를 갖추도록 하는 것이 이 강좌의 핵심이고 가장 효과적인 부분이라 생각한다.
가장 인상깊은 부분이자 효과적이라고 생각되는 부분은 QnA였다. 이런 형태의 수업을 처음 접해보았는데 다른 수업에 비해 학생들이 수업에 참여하는 열정도 굉장히 높았다. 또, 교수님께서 학생들의 의견과 글들에 댓글을 열정적으로 달아주시는 모습이 인상깊었다. 그리고 매주 금요일 오전에 Webex를 통해 실시간으로 질문사항들에 답해주시고, 공지사항을 전달해주시는 모습을 보면서 수업전체가 하나의 축구팀 같았다. 코치와 선수들이 서로 의견을 나눠가면서 하나의 골을 향해 나가는 모습을 보는 것 같아 인상깊었다.
3월
배웠던 것에 대해 복습하는 것은 학습의 기본이지만, 바쁜 생활 속에 쉽지만은 않은 것이 현실입니다. 그러한 복습이 상당한 평가요소로 작용하여 복습을 안 할 수 없는 시스템이 매우 좋았습니다.
4월
배웠던 것에 대해 복습하는 것은 학습의 기본이지만, 바쁜 생활 속에 쉽지만은 않은 것이 현실입니다. 그러한 복습이 상당한 평가요소로 작용하여 복습을 안할 수 없는 시스템이 매우 좋았습니다. 그리고 일반적인 수업에서는 질문을 많이 하고 싶어도 여러 제약 때문에 하지 못하는 일이 많은데, 문의게시판을 활용하여 언제 어디서라도 질문을 잊지 않고 바로바로 할 수 있는 데다, 교수님께서 적극적으로 자주 게시판을 보시기에 누락 없는 학습이 가능한 것이 매우 좋았습니다.
5월
(1) 많은 학생들에게 QnA 참여를 독려하면서 자습의 효율성을 증가시켜 줍니다. 또한 적극적인 교수님 덕분에 모르는 개념을 손쉽고 빠르게 알 수 있었습니다. 그리고 매주 Webex를 통한 소통이 있어 교수님께서 매주 도움을 주시며 과목 학습에 큰 도움이 되셨습니다.
(2) 이번 한 달은 교수님께서 학생들에게 더욱 수업 운영을 맡기신 한 달이었던 것 같습니다. 교수님께서는 학생들이 논의를 발전시킬 수 있는 힌트만 몇 가지 던져 주시고 구체적인 논의는 뜻이 있는 학생들 사이에서 더욱 활발히 진행되었던 한 달인데, 학생들이 같은 배우는 입장에서 활발한 토의가 가능한 이 시스템이 짧은 시간 안에 많은 것을 배울 수 있는 매우 효과적인 시스템이라고 생각합니다.
Q&A로 동료들과 소통하는 방식이 학습에 있어서 효과적인 방법이었다고 생각합니다.
역시 QnA가 제일이라고 생각한다. QnA에 글을 올리면 수 시간 내에 교수님이 유익한 대답을 해주시는데, 이는 다른 수업과 비교할 수 없을 정도로 빠른 시간이다. 그만큼 이 과목에서는 QnA가 가장 활용성이 높다. 또한 매주 금요일 Webex를 통해 온라인 질의 및 공지사항을 알려주시는 등 온라인 수업 또한 높은 수준을 보여준다.
20. 이 수업에서 보완해야 할 점은 무엇이라고 생각합니까?
딱히 없었음.. 수준높은 수업이라고 생각한다.
3월 QnA에서 뿐만이 아니라, 수시로 소통할 수 있는 수단이 있으면 더 좋을 것 같습니다.
4월 정보가 조금 더 정리될 필요는 있어 보입니다. 내용은 많은데 정보가 한 눈에 안 들어오는 경우가 많아서 간혹 놓치고 가는 일들이 있습니다.
5월 (1) 기존 수업 방식 그대로 유지해도 괜찮을 것 같습니다.
(2) Sage는 굉장히 직관적이고 프로그래밍 서술 방식이 상세해서 보고 바로 이해하는 것이 가능합니다. 하지만 R 언어는 더 함축적인 것 같습니다. 교재에서 R 언어를 활용할 때 Sage와는 많이 다른 R 언어에 대한 설명이 더욱 더 구체적이어야 할 것 같습니다.
(3) 어느 강좌든 소극적으로 참여하는 학생들도 존재할 것입니다. 우리 반의 그러한 학우들도 좋은 점수를 받을 수 있는 3rd Chance 방법이 있으면 좋을 것 같습니다.
나 같이 코딩경험이 거의 없는 학생이 겪을 수 있는 문제점에 대하여 조금 더 자세한 지침서 같은 자료들이 있었으면 좋겠다. 또한 보고서 작성 시 그래프를 싣기가 쉽지 않은 점에 대하여 스스로의 힘으로만 해결하기가 힘든 것 같다.
딱히 없다고 생각한다. 레포트 과제를 매달 하면서 개념을 복습시켜주시기 때문에 충분히 좋다고 생각한다.
Participation [참여 평가 1] PBL report Due: May 30th, 2020
담당교수 또는 다른 학생들이 QnA에 업로드한 10개 이상의 자신의 Comment or Answer 를 주시오.
(1) State more than 15 Math Definitions and concepts what you learned in the first 4 Chapters.
1. 기본 행 연산(Elementary Row Operation, ERO)
선형연립일차방정식이
꼴로 나타날 때 식의 위아래를 더하고 빼고 스칼라배 하는 것이 해집합에 영향을 주지 않는다는 사실로부터 출발한다. 식의 위아래를 더하고 빼고 스칼라배 하는 이 과정을 기본 행 연산이라고 한다.
2. 기약 행 사다리꼴(Reduced Row Echelon Form, RREF)
기본 행 연산을 진행할 때 가장 마지막 단계로서 Gauss-Jordan 소거법의 핵심을 이룬다. 정사각행렬의 역행렬이 존재할 때 기약 행 사다리꼴은 단위행렬이 된다.
3. 역행렬(Inverse Matrix)
어떤 정사각행렬에 대해 같은 크기의 정사각행렬을 좌우에 곱하여 단위행렬이 생성되면 이 곱한 정사각행렬을 주어진 정사각행렬의 역행렬이라고 한다.
4. 고윳값과 고유벡터(Eigenvalue and Eigenvector)
영벡터가 아닌 벡터
에 대하여
를 만족할 때,
를 고윳값, 그에 대응하는
를 고유벡터라고 한다. 행렬의 대각화, 이차형식의 주축정리, 미적분학의 극대 극소 등 활용범위가 매우 넓다.
5. 일차독립(Linearly Independent)
개의 벡터
에 대하여
인 경우
를 일차독립이라고 한다.
에 대해
이외의
쌍이 존재한다면 이를 일차종속이라고 한다.
6. 미분계수
함수
에 대하여 극한값
이 존재할 때, 함수
가
에서 미분가능하다고 하며 이 극한값을 미분계수라고 하고
로 표기한다.
7. 최대, 최소의 정리
함수
가 폐구간
에서 연속이면 이 구간에서 반드시 최댓값과 최솟값을 갖는다.
8. Newton’s Method
고차방정식이나 비선형함수의 방정식의 경우 방정식의 해를 정확하게 구하는 것이 쉽지 않다. 이 때 해 근방의 근사값을 적당히 잡고 접선을 그어서
절편을 두 번째 근사값으로 잡은 후 다시 이 과정을 여러 번 반복하면 방정식의 해를 상당히 정확하게 구할 수 있다.
9. 적분에 관한 평균값의 정리
함수
가
에서 연속이면
인
가
안에 적어도 하나 존재한다.
10. 편미분
함수
에 대하여
가 존재하면 이것을
에 대한 편도함수라고 하고,
가 존재하면 이것을
에 대한 편도함수라고 한다.
11. 그래디언트
로 정의되며, 다변수함수의 미적분에서 가장 핵심적으로 활용되는 개념 중 하나이다.
12. Fubini의 정리
이중적분을 계산할 때, 적분영역이 직사각형인 경우 이 영역에서 함수
가 연속이면
에 대해 먼저 적분하고
에 대해 적분하는 결과와
에 대해 먼저 적분하고
에 대해 적분한 결과가 같다. 적분영역이 직사각형이 아니면 적분구간 상에 변수가 포함되므로 잘 보고 적분 순서를 정해야 한다.
13. Jacobian
일변수함수에서의 치환적분의 확장으로써
평면의 적분영역,
평면의 적분영역에 대해 계산할 때 상호 전환에서 곱해주어야 하는 인자이다. 편미분계수에 대한 행렬식으로 표현된다.
14. 방향도함수
함수
의 단위벡터
방향으로의 방향도함수는
로 바로 구할 수 있다. 일변수함수에서는 접선을 그을 수 있는 방향이 수직선상에서 증가하고 감소하는 두가지 방향으로 한정되어 있는데 이변수함수 이상에서는 방향이 무한대로 늘어난다. 편도함수는 독립변수의 증감방향으로 도함수를 정의한 것인데 이 편도함수들을 조합하여 모든 방향을 다룰 수 있다.
15. Fermat의 임계점 정리
함수
가 극대값 또는 극솟값을 가지고 이 지점에서 편도함수가 존재하면 편미분계수가
이다. 편미분계수가
인 점들은 극대값 또는 극솟값을 가질 가능성이 있는 후보들로써 극대, 극소를 판별하는 가장 첫 단계가 된다.
16. 공분산과 상관계수/모분산과 표본분산
확률변수
와
의 공분산(Covariance)은 다음과 같다.![]()
그리고
와
의 상관계수(Correlation Coefficient)는 다음과 같이 정의된다.![]()
일반적으로 모집단의 자료를 활용하여 분산
를 정의할 때, 간단히 말하면 편차의 제곱에 대한 기댓값으로 정의할 수 있다. 일변수 확률분포일 때 이 확률변수를
,
에 대한 기댓값을
라 하면 다음과 같이 나타낼 수 있다.
위의 식은 이산확률변수의 경우에 확률질량함수를 활용하여 도출해낸 식이며, 연속확률변수의 경우에 확률밀도함수를 활용하면 정의에 의해서 같은 식을 도출할 수 있다.
표본분산이란, 모집단 중에서 일부 표본을 추출하였을 때 표본평균
에 대한 각 표본 원소들의 퍼진 정도를 말하며
로 표시한다.![]()
그런데 여기서
이 아니라
로 나눈 것이 특이한데, 그 이유는 일반적으로 표본평균에 대한 각 표본 원소들의 편차 제곱은 모분산보다 작기 때문에
대신
을 나누어 모분산에 더 가까운 값을 구하고자 함이다. 또한, 표본을 추출할 때마다 표본분산 값이 다르게 나오므로 이 표본분산에 대한 기댓값 또한 생각해볼 수 있다. 위와 같은 정의를 사용하면 표본분산의 기댓값이 모분산 값과 같아짐을 확인할 수 있다. 그러므로 위와 같이 정의하는 것이 더욱 타당하다.
17. 확률
(1) 수학적 확률![]()
중요한 전제 : 일어날 수 있는 모든 경우, 사건
가 일어나는 모든 경우 각각이 일어날 확률이 같아야 한다(같은 정도로 확실해야 한다.)
(2) 기하학적 확률
인 영역
에 속하는 확률은![]()
활용 예 : 과녁에 화살을 쏠 때 10점을 쏠 확률과 같은 문제에서 기하학적 확률이 활용된다. 수학적 확률에서 살펴본 전제와 같은 맥락에서 화살이 과녁 상의 모든 점에 맞을 확률이 동일하기 때문에 이 정의가 성립한다.
(3) 통계적 확률과 대수의 법칙
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률
는 일정한 값
, 즉 수학적 확률에 가까워진다.![]()
주사위를 던져서 1이 나오는 경우에 대해 우리는 수학적 확률이
이라는 것을 알고 있다. 실제로 이것을 수백 수천, 수만번 시행해보면
이 나오는 비율이 전체 비율의 약
임을 확인할 수 있다. 신기한 것은, 앞에 나왔던 경향성이 앞으로의 시행에 대한 아무런 예측 정보도 제공해주지 못한다는 점이다(독립시행의 경우).
18. 확률질량함수
이산확률변수(확률변수가 이산적으로써 셀 수 있음)일 때 확률변수 각각의 값에 대해 확률 값을 대응시킨 함수이며 그 자체가 확률을 나타낸다.
19. 확률밀도함수
연속확률변수(확률변수가 연속적)일 때는 이산확률변수처럼 어떤 특정한 확률변수 값 하나에 대해 확률 값을 대응시키는 것이 불가능하다. 확률을 일종의 질량과 같은 개념으로 보고 구간 길이를 일종의 부피와 같은 개념으로 본다면
이 되며
를 밀도와 같은 의미로 이해할 수 있다. 확률변수
에 대해 이 값을 대응시킨 함수를 확률밀도함수라고 하며
라고 하면 일반적인 확률을 다음과 같이 구할 수 있다.![]()
구분구적법과 연관지어 생각해보면 이산확률변수의 확률계산법과 동일함을 알 수 있다.
20. 이항분포
한 번의 시행에서 일어날 확률이
라 하자. 이 시행을
회 독립적으로 반복할 때, 사건
가 일어나는 횟수를
라고 하면
의 확률분포가 이항분포
를 따른다고 하며
로 나타낸다. 이 때의 확률질량함수는 다음과 같다.![]()
기댓값은
분산은
이며
이 충분히 크면 이 확률분포를 정규분포
에 근사시킬 수 있다.
21. 조합
서로 다른 n개에서 중복 없이 k개를 택하는 방법의 수는 다음과 같다.![]()
22. 대수의 법칙
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률
는 수학적 확률
에 가까워진다.
23. 베이즈 정리
이 표본공간
의 분할을 이룰 때, 임의의 사건
에 대해 다음이 성립한다.![]()
따라서 정수
에 대해 다음이 성립한다.![]()
24. 중심극한정리
동일한 확률분포를 가진 독립 확률변수 n개의 평균의 분포는 이 적당히 크다면 정규분포에 가까워진다는 이론이다.
즉, 평균이
이고 분산이
인 모집단에서, 추출한 크기 n이 증가할수록 모집단의 분포유형에 관계없이 근사적으로 정규분포
을 따른다는 것이다.
1. REF(행 사다리꼴)와 RREF(기약 행 사다리꼴)
m*n 행렬 E가 다음 3가지 성질을 만족할 때, 행 사다리꼴(row echelon form, REF)이라고 한다.
1. 가역행렬과 역행렬
●
가 가역행렬일 필요충분조건은
이다.
● 두 행렬
,
가
차의 정사각행렬일 때,
이 성립한다.
● 행렬
가 가역이면
이고,
이 성립한다.
● 역행렬 구하기
어떤 행렬
차 정사각행렬
에 대하여
를 만족하는 행렬
가 있다면, 이 행렬을 역행렬이라고 하고
라고 표기한다.
매우 단순한 개념이지만 일반적인
차 정사각행렬에 대해 역행렬을 구하는 것은 쉽지 않다. 다음은 역행렬을 구하는 방법이다.
[1]
활용
을 계산한 후 생기는
행렬에서, 첫
열까지 나타나는 부분행렬이 단위행렬이면 이는 역행렬이 존재한다는 것이고 그 역행렬은 그 다음
열에 나타나는 부분행렬이다. 기본 행연산의 열벡터에 대한 독립성을 활용한 것으로,
에 곱하여 단위행렬이 나오는 행렬을 단위행렬에 곱하면 자기 자신이 나온다는 원리이다.
이에 대한 Sage 코드의 예제는 다음과 같다.
A = matrix([[1, -1, 2], [-1, 0, 2], [-6, 4, 11]])
I = identity_matrix(3)
print("A =")
print(A)
print()
AI = A.augment(I).rref() # 첨가행렬 [A : I] 의 RREF 구하기
print("RREF[A: I] =")
print(AI)
print()
A2 = AI.submatrix(0, 3, 3, 3) # A.submatrix(a, b, c, d)
# 행렬의 (a+1, b+1) 성분부터 c개의 행, d개의 열로 이루어진 부분행렬 구하기
print("inverse of A =")
print(A2)
[2] 수반행렬 활용
수반행렬이란,
차의 정사각행렬
의 성분
에 대한 여인자(cofactor)를
라고 할 때, 행렬
를
의 수반행렬이라고 한다. 기호로 나타내면
이다.
이렇게 수반행렬을 만들고 난 후
의 역행렬을 구할 수 있다. 수반행렬을 이용해
의 역행렬을 구하는 공식은 다음과 같다.![]()
이 되면 분모가
이 되어 역행렬이 나오지 않음을 알 수 있다. 실제로
가 가역일 필요충분조건은
이다.
이에 대한 Sage 코드는 아래와 같다.
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) # 수반행렬을 이용한 역행렬 구하기
2. 선형 연립 방정식의 Least Square Solution에 대한 기하학적인 접근
선형연립방정식
의 해가 존재하지 않을 때.
이 성립한다.
의
위로의 정사영을
이라 하면,
의 해가 존재한다. 이 해를
이라 하면,
가 바로 최소제곱문제
의 최소제곱해(Least Square Solution)가 된다. 다음 그림에서
, ![]()
라 하면
, 즉
와
의 열벡터들이 각각 직교하므로
이 성립한다.![]()
![]()
(정규방정식, Normal Equation)
(최소제곱문제의 최소제곱해)
의 최소제곱해란 normal equation인
의 해이다. 여기서
가 가역행렬이라면
가 그 해가 된다. 그렇다면
의 역행렬을 구하는 것이 최소제곱해 문제를 해결하는 가장 중요한 열쇠가 된다. 이를 QR 분해를 이용하여 구해본다면,
가 full column rank를 가지면, 다음과 같이 QR 분해된다.
![]()
그러면
![]()
(양변에
를 취해주자.)
이제 (
이 가역행렬이므로) 여기에 후진대입법(backward substitution)을 적용하면,

3. Gram-Schmidt 정규직교화 과정
먼저
의 기저
로부터 직교집합
을 다음과 같은 단계로 생성해 나간다.

[1단계]
이라 함
[2단계]
에 의하여 생성되는 부분공간을
이라 하면
를 다음과 같이 생성할 수 있다.
![]()
![]()
[3단계]
,
에 의하여 생성되는 부분공간을
라 하고
를 다음과 같이 생성할 수 있다.
![]()
![]()
[4단계] 마찬가지 방법으로 하면
![]()
![]()
위의 단계로부터 얻어지는
은 서로 직교인 직교집합이다. 즉
라 정의하면 집합
은
의 정규 직교 기저가 된다.
cf.)
(각각의 기저로 span된 부분공간은 모두 같다.)
4. QR 분해
행렬
가 rank
인
행렬이라면,
로 분해가능하다. 여기서
는
의 열공간
에 대해 Gram-Schmidt 알고리즘으로 생성한 정규직교기저로 만들어진
행렬이고,
은 가역인
의 상삼각행렬이다.
5. QR분해로 최소제곱문제를 풀 수 있음
앞서 학습했듯이,
의 최소제곱해란 normal equation인
의 해이다. 여기서
가 가역행렬이라면(
가 full column rank를 가지면)
가 그 해가 된다. 그렇다면
의 역행렬을 구하는 것이 최소제곱해 문제를 해결하는 가장 중요한 열쇠가 된다. 이
를 QR 분해를 이용하여 다음과 같이 간단하게 구할 수 있다.
가 full column rank를 가지면, 다음과 같이 QR 분해된다.
![]()
![]()
![]()
![]()
![]()
-> 다음과 같이 Gram-Schmidt 정규직교화 과정과 QR 분해를 통하여 최소 제곱 문제에서 유일해를 구할 수 있다.
6.
7. 이차곡선과 원뿔곡선
이차곡선의 기본 형태는
이다.
한 편, 고등학교에서 배웠던 이차곡선의 표준형은 각각 다음과 같다.
타원(원 포함) :
(
라고 하자.
이면 장축의 길이
, 두 초점의 좌표는
.
이면 장축의 길이
, 두 초점의 좌표는
). 타원의 두 초점으로부터 타원 상의 임의의 점까지의 거리의 합은 항상 장축의 길이와 같다. 원이라면 초점, 장축이 정의되지 않으며 중심으로부터 거리가 같은 점들의 자취.
포물선 :
(초점의 좌표는
, 준선의 방정식은
) or
(초점의 좌표는
, 준선의 방정식은
). 포물선 상의 임의의 점은 초점까지의 거리와 준선까지의 거리가 같다.
쌍곡선 :
(초점의 좌표는
, 주축의 길이는
) or
(초점의 좌표는
, 주축의 길이는
). 두 케이스 모두 점근선을 가지며
이다. 두 초점으로부터 쌍곡선 위의 임의의 점까지의 거리의 차는 주축의 길이와 같다.
이 곡선들을 평행이동하고 회전이동하면
와
에 대한 일차항,
항도 생기게 되며 이 모든 것을 아우르는 것이 위에서 언급한 이차곡선의 식이다. 이 식을 행렬로 표현하면 다음과 같다.![]()
곡선의 실질적인 모양은 평행이동 요소를 제외한
이 결정한다. 이를
상의 방정식
에 대한 이차형식(quadratic form)이라고 하며,
와 같이 나타낼 수 있다.
를 대칭행렬로 설정한 이유는 직교대각화하여 분석이 쉽게 하기 위함이다.
같은 방법으로
으로 확장하면 타원체, 쌍곡포물면 등 이차곡면을 나타낼 수 있으며, 이차곡선, 이차형식은 일반적으로 모든
에서 정의가 가능하다. 이 때의 이차형식 역시
와 같이 나타낼 수 있다. (이 때의
는
차원 벡터,
는
차 정사각행렬)

흥미로운 점은, 위와 같은 원뿔에 대해 절단면을 생각하면 앞서 논의한 이차곡선을 모두 얻을 수 있다는 것이다.
위 원뿔은
와 같이 나타낼 수 있으며 절단하는 평면의 방정식과 연립하여 풀면 절단면이 어떤 도형이 나오는지 식을 분석하여서도 파악할 수 있다.
한편, 이차곡선의 방정식으로 만들어지는 그래프가 곡선이 아닌 한 점, 한 직선 또는 한 쌍의 직선으로 이루어져 있거나 아예 존재하지 않을 때가 있다. 그러한 그래프들을 퇴화 원뿔곡선이라고 한다.
8. 다변수함수 극값 판별
먼저, 1학년 때 배운 방법으로써, 이변수함수
의 이계 편도함수를 이용해 판별하는 방법은 다음과 같다.
(1)
일 때,
이면 극솟값,
이면 극댓값이다.
(2)
이라면 안장점이다.
선형대수학을 배우지 않은 1학년의 입장으로서는 그냥 암기해야 하는 부분이었다. 하지만 선형대수학의 이론을 결합하면 정확하게 이해할 수 있고 삼변수 이상의 다변수함수에 대해서도 극값을 판별할 수 있다. 필요한 선형대수학의 이론은 다음과 같다.
①헤시안 행렬의 정의, Fermat의 임계점 정리, 테일러 근사로부터 이차형식 발견하기
변수함수
의 헤시안 행렬을 다음과 같이 정의한다.
이라 하자.
근방에서의
의 이차 테일러 근사식은
이다.
즉,
근방에서는
대신 이차 테일러 근사식으로 분석하여도 무방하다.(
에서는 근사가 아니라 등호이며, 근방에서의 증가, 감소의 경향성까지 충분히 반영된다. 따라서, 극대, 극소 여부도 반영된다.)
한 편,
에서 극대 또는 극소가 되고,
의 편도함수가 존재하면
이다(Fermat의 임계점 정리)
그러므로 극대, 극소가 되는 점을 찾으려면
이 되는 임계점
만 조사하면 된다.
에서 임계점이면
이므로 임계점의
의 극대, 극소 여부는
에 의해 결정된다.
,
로 두면 해당 식은
가 되며,
가 연속인 2계 편도 함수를 가지면 Clairaut’s Theorem을 만족하므로,
는 대칭행렬이다. 따라서,
는 이차형식이다.
②부분행렬, 선행 주 소행렬식, 행렬의 대각화에 대한 성질
대칭행렬
의
부분행렬을 다음과 같이 정의하자.![]()
이 부분행렬들에 대한 행렬식들을
의 선행 주 소행렬식(leading principal minors)이라고 하며
로 표기한다.
한 편, 대칭행렬
에 대한 대각화 연산을
라고 정의하고
를 대각화한 행렬을
와 같이 쓸 수 있다.
이 때, 대각화의 성질에 의해
이 된다.
대각화 한 행렬
의 대각선 성분은 대칭행렬
의 eigenvalue이다.
이
의 주 대각선 성분을
행
열 성분부터 차례로
라고 하자.
행렬식의 성질에 의해,
![]()
이다.
③
의 주축정리
대칭행렬
의 고윳값을
라고 할 때, 좌표축의 회전에 의하여 이차형식
는 새로운
의
좌표계에서![]()
으로 표현될 수 있다. 이 회전에 대해서 살펴보면, 정규직교화법을 이용하여
를 대각화하는 행렬식이
인 직교행렬
를 선택하면 새 좌표계가
이라는 치환에 의하여 얻어진다.
④양의 정부호(positive definite), 음의 정부호(negative definite), 부정부호(indefinite)
정사각행렬
가 대칭행렬일 때, 이차형식
가 임의의
에 대하여
이면 양의 정부호(positive definite),
이면 음의 정부호(negative definite)라 한다. 어떤
에 대해서는
이고,어떤
에 대해서는
이면 부정부호(indifinte)라 한다.
한 편, 이차형식의 양의 정부호, 음의 정부호, 부정부호는 고윳값의 부호로 판별할 수 있다.
(1)
의 고윳값들이 모두 양이라면
는 양의 정부호(positive definite)이다.
(2)
의 고윳값들이 모두 음이라면
는 음의 정부호(negative definite)이다.
(3)
가 양의 고윳값과 음의 고윳값을 모두 가지면
는 부정부호(indefinite)이다.
이는 주축정리가
로 나타난다는 점에 착안하여 간단히 증명이 가능하다.
한 편,
이므로,
(i)
가 양의 정부호이면 모든
에 대하여
이고
(ii)
가 음의 정부호이면 모든
에 대하여
이다.
(i), (ii) 명제의 역도 성립한다.
①②③④를 종합하여 다변수함수의 극대, 극소를 찾는 방법을 정리해보면 다음과 같다.
[1단계]
방정식으로 임계점을 찾는다.
[2단계]
의 헤시안 행렬을 구하고 해당 임계점에서의 그 헤시안 행렬의 고윳값들을 구하면 양의 정부호, 음의 정부호, 부정부호의 여부를 알 수 있으며, 이로써 해당 임계점에서
의 극대, 극소를 찾을 수 있다.
이제 앞서 논의한 이변수함수의 극대, 극소 판정법이 왜 그렇게 나오는지 설명할 수 있다.
가 이변수함수이면 헤시안 행렬은
이며, Clairaut’s Theorem이 성립한다고 하면 대칭행렬이므로 대각화가 가능하다. 그 대각화한 행렬을
라고 하자.
앞서 논의한 ②에 의해
와
은 같은 부호를 가진다.
한 편,
이다.
극대, 극소를 판별하고자 하는 임계점에서
이면
,
가 같은 부호를 가지므로 양의 정부호 혹은 음의 정부호이다.
여기서
이면
이 되고 양의 정부호가 되므로 극댓값을 갖고,
이면
이 되고 음의 정부호가 되므로 극솟값을 갖는다.
이면 두 대각 성분의 부호가 다르므로 부정부호이고 해당 임계점은 안장점(saddle point)이다.
앞서 언급한 이계도함수의 극대, 극소 판별법과 정확히 일치한다.
9. 뉴턴 방법(Newton's Method)
실숫값 함수 항(
)이 포함된 방정식의 해(
)를
와
를 이용해 근사적으로 쉽게 구하는 방법이다. 단, 처음 시작할 때 설정하는 초깃값이
에 가깝지 않을 경우 실제 구하려는 근과는 멀리 떨어진 엉뚱한 값을 구하게 될 수 있으니 주의해야 한다.
의 근삿값을 구하는 과정은 다음과 같다.
[1단계]
에 적당히 가까운 값인
을 설정한다.
[2단계]
으로
를 구한다.
[3단계]
을 여러 번 반복하여
에 매우 가까운
을 구한다. 이때
은 적당히 큰 시도 횟수이다. (
)
[4단계] 충분히 수렴하는 경향성이 보이면 3단계를 중지한다. 이 때
이 실제 구하려는 근에 대한 근삿값이다.
위 방법은 초깃값을
좌표 값으로 하는 주어진 함수의 접선의 방정식을 구하고 그 접선의
절편을 그 다음 단계의 초깃값으로 설정하여 반복하는 것이다. 어렵지 않고 참값으로 수렴하는 속도가 매우 빠르므로 많이 쓰이는 방법이다.
10. 경사하강법
경사하강법(gradient descent method)은 어떤 모델에 대해 비용을 최소화시키는 알고리즘으로 함수의 기울기가 가장 가파르게 감소하는 방향을 반복적으로 택하여 극솟값을 찾아가는 방법이다. 함수의 기울기가 가장 가파르게 감소하는 것은 그래디언트의 성질을 이용, 방향을
로 택하는 경우이다(스키장에서 가장 빠르게 하강하는 길을 찾는 알고리즘). 경사하강법은 모든 차원과 모든 공간에서의 적용이 가능하다. 심지어 무한차원 벡터함수에도 쓰일 수 있다.
다음은 경사하강법의 알고리즘이다.
[1] 초기 근사해
와 허용오차(tolerance)
을 준다.
이라 한다.
[2]
를 계산한다. 만일
이면, 알고리즘을 멈춘다.(극솟값에 충분히 근접)
[3] line search를 수행하여 적절한 step-size
를 구한다.
[4]
,
라 두고 [2]로 이동한다.
18. 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다. 행렬을 바꾸어 시도해 보시오.
[출처] J. Barzilai 와 J. M. Borwein, Two-Point Step Size Gradient Methods, IMA J. Numer. Anal. (1988) 8 (1): 141-148.
,
, ![]()
18. 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다. 행렬을 바꾸어 시도해 보시오.(수치변경) [출처] 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으로 나온다.
b = vector(RR, [1, 1, 1, 1,1]) # objective function
x0 = vector(RR, [0, 0, 0, 0,0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red')) # gradient 의 norm을 그래프로 그림
Stationary point! Algorithm terminated!
위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.
12. 고등학교 때는 일변수 확률분포만 간단하게 배웠는데, 대학 미적분학에서 배운 다변수 미적분학을 활용하여 다변수 확률분포를 분석할 수 있으며, 추가적으로 공분산과 상관계수라는 개념이 필요함을 깨달았다.
13. 같은 기댓값과 같은 분산을 가지는 정규분포는 모두 확률분포가 같으며 확률분포의 성질에 의해 주어진 확률분포
에 대해
와 같이 새로운 확률변수
를 생각할 수 있으며 이 확률변수
또한 정규분포를 따르며 기댓값이
, 분산이
이므로 모든 정규분포를 표준화시켜서 이
에 대한 확률분포를 활용하여 비교할 수 있음을 깨달았다.
14. 동일한 확률분포를 가진 독립 확률변수
개의 평균의 분포는
이 적당히 크다면 정규분포에 가까워진다는 사실을 알았으며, 이는 평균이
이고 분산이
인 모집단으로부터 추출한 크기가
인 확률표본의 표본평균
는
이 증가할수록 모집단의 분포유형이 어찌됐건 대다수가
를 근사적으로 따르게 됨을 알았다.
15. 조건부 확률과 몬티홀 문제
몬티홀 문제란, 세 개의 문 중 단 하나에만 선물이 있고 나머지 둘은 꽝인 상태에서 선물을 맞추는 문제이다. 다만 처음 선택했을 때, 진행자가 선택되지 않은 두 문 중 꽝 하나를 공개한 후 선택을 바꿀 것인지 아닌지를 묻는다. 이러한 규칙 하에, 과연 선택을 바꾸는 것과 바꾸지 않는 것 중 무엇이 더 이득인지 구하는 문제이다.
그 답은 ‘바꾸는 것이 이득’이다.
만약 선택을 유지한다면 선물에 당첨될 확률이 처음의
이 되겠지만, 만약 선택을 바꾸었을 때 선물을 받을 확률은
이다. 따라서 선택을 바꾸는 것이 확률적으로 이득이다.
만약 문이
개이며 선물이 있는 문은
개라고 하자. 이때의 선물에 당첨된 확률을 구해보자. 선택을 안 바꾼다면
이고,
가 된다. 즉, 선택을 바꾸었을 때 선물을 받을 확률이 안 바꾸었을 때보다
배만큼 크다.
이 풀이는 조건부 확률을 이용한 것이다. 사실 이 문제를 처음 들었을 때는 별 차이가 있나 싶었지만, 확률을 배운 후에는 정말 큰 차이가 있음을 알았다.
16. 대수의 법칙과 카지노
우선 대수의 법칙에 대해 알아보자. 시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률
는 수학적 확률
에 가까워진다(
). 즉, 시행 횟수가 커질수록 통계적 확률이 수학적 확률과 거의 같아지게 된다는 말이다. 카지노는 이를 이용해 막대한 수익을 벌어들이고 있다.
카지노 또한 돈을 벌기 위한 기업이다. 도박의 특성상 수익을 벌어들일지 아닐지는 순전히 운에 달려 있을 것이라 생각하기 쉬운데 실제로는 그렇지 않다. 수학적으로, 카지노가 돈을 벌어들일 확률은 돈을 잃을 확률보다 근소하게 크다. 수많은 사람들이 무수한 도박을 하므로 시행 횟수는 기하급수적으로 커지기 때문에 승률이 수학적 확률과 거의 유사해진다. 즉, 시행 횟수가 커질수록 카지노는 수익을 반드시 벌어들이게 된다는 것이다. 이것이 카지노가 계속해서 영업이 가능한 이유이다. 확률을 이용해 수익을 벌어들이는 것이 가능하다는 걸 처음으로 깨닫게 되었다.
17. 순열과 조합
서로 다른
개에서 중복 없이
개를 택하여 한 줄로 세우는 방법의 수를 순열이라고 하며
라고 표기한다.
개 중에 첫 자리에 올 수 있는 경우의 수
개, 두 번째 자리에 올 수 있는 경우의 수
개, ...,
번째 자리에 올 수 있는 경우의 수
개이고 각각은 곱의 법칙으로 연결되므로![]()
이다.
한 편, 서로 다른
개에서 중복 없이
개를 택하는 방법의 수를 조합이라고 하며
또는
라고 표기한다.
순열과 다른 점으로는 택하기만 하고 순서대로 줄 세우지(배열하지) 않는다는 점이다.
개를 택하고 그
개를 줄 세우는 것이 순열인데, 택하는 과정 각각에 대해 줄 세우는 경우의 수가 발생하므로 곱의 법칙을 적용하여 조합과 순열의 관계를 유도할 수 있다.![]()
이로써 조합의 계산법을 유도할 수 있다.![]()
18. 심프슨의 역설
일부의 면만 보여주는 확률을 믿으면 안 된다는 것을 단적으로 보여주는 예시인 역설이다.
이 역설의 예시로, 두 야구 선수
와
의 승률 비교가 있다.
|
|
투수 |
투수 |
||||
|
승 |
패 |
승률 |
승 |
패 |
승률 |
|
|
전반기 |
|
|
|
|
|
|
|
후반기 |
|
|
|
|
|
|
|
시즌 전체 |
|
|
|
|
|
|
19. 조건부 확률과 제비뽑기
‘제비뽑기를 할 때 언제 하는 것이 가장 유리한가?’이다. 이 문제의 답을 알기 위해서는 꽝과 당첨의 각 개수와 총 제비의 개수를 알아야 한다.
이 문제의 답은 ‘언제 뽑든 똑같다’이다. 나중에 뽑았을 때의 확률을 구할 때는 앞에서 꽝 제비를 뽑았는지 당첨 제비를 뽑았는지도 고려해서 확률을 구해야 한다. 즉, 조건부 확률의 계산법으로 구해야 하며 실제로 확률을 구해보면 처음 뽑았을 때랑 전혀 다를 게 없다는 걸 알고 있다. 사람들은 나중에 뽑는 것이 불리하다고 종종 말하고는 하지만, 수학적으로 계산해보면 실제로는 아무 상관 없다는 걸 알 수 있다.
명의 사람이 있고 당첨 제비가
개, 제비의 총 개수가
개라고 하자.
처음 제비를 뽑는 사람이 당첨 제비를 뽑을 확률은 당연히
이다.
두 번째 제비를 뽑는 사람이 당첨 제비를 뽑을 확률은 첫 사람이 제비를 뽑았을 경우의 확률과 뽑지 않았을 경우의 확률을 각각 계산하여 더해주어야 한다.![]()
그 이후로 뽑는 경우도 항상
가 된다.
20. 표본평균과 여론조사
일상 생활에서 표본을 조사하여 모집단을 추정하는 경우가 많이 있으며 대표적으로 선거철에 진행하는 방송사에서의 여론조사가 있다. 하지만, 표본의 자료 수가 부족하다면 자료 분석의 결과의 오차는 클 수밖에 없고 의미없는 자료가 될 가능성이 있다. 그러므로 표본의 자료 수가 어느 정도 커야 그 자료에 신뢰성이 있다고 말할 수 있다.
여론조사에서 여러 가지 추정을 할 수 있지만 대표적으로 표본평균에 대해서 살펴보자. 중심극한정리에 따르면 추출한 표본의 개수(
)가 증가할수록, 모집단의 분포유형에 관계없이 많은 경우 근사적으로 표본평균
가 정규분포
을 따르게 된다(
는 모평균,
는 모표준편차). 실제로 이 정규분포를 분석해보면 추출한 대다수의 표본평균이 모평균값 주위에 분포하게 되므로 표본평균 값은 모평균을 추정하기에 상당히 좋다고 할 수 있다. 다만 표본을 추출할 때 무작위로 편중되지 않게 추출해야 의미가 있다.
작게는 정치적 문제, 넓게는 기업 경영, 날씨 예측 등에 표본을 활용한 모집단 추정이 쓰이는데, 그 정확도와 추정의 신뢰도를 올리기 위해 지금도 많은 사람들이 노력하고 있다.
21. 확률 및 통계와 보험 계리사
보험 계리사는 보험 사업 전반에 걸친 수리 및 통계 분석 업무를 하는 직업으로, 국내 사회 제도와 경제 실정에 맞는 보험 상품을 개발하고 운용하는 것이 일이다. 이 일을 할 때 가장 중요한 것 중 하나가 바로 보험료를 결정하는 것이다. 보험료를 결정할 때, 지금까지의 이용 고객의 데이터를 분석해 고객들이 보험비를 청구하는 비율을 보고 보험료를 인상할지 동결할지 아니면 내릴지를 결정할 수 있다. 또한 개인 고객에 대해서도 사고가 발생할 확률을 계산해 낸 후, 그 결과를 보험료 결정에 반영한다. 이처럼 확률과 통계는 경영, 특히 예측할 수 없는 경우에 더더욱 중요한 가치를 지니게 된다.
22. 고등학교 때 배운 일변수함수의 미적분, 대학 1학년 때 배운
변수,
변수 함수의 미적분을 넘어서
변수함수의 미적분을 선형대수학 지식과 연결지어서 일반적으로 활용할 수 있다는 것을 깨달았다.
23. 역행렬을 구하는 과정이 제법 번거롭고 복잡한데, 최대한 직교대각화 가능한 행렬을 찾아서 전치행렬을 구하는 수행만으로 간편하게 이론을 전개하는 경우가 많다는 것을 깨달았다(이차형식 등)
24. 다변수함수의 Gradient 벡터가 가리키는 방향은 그 점에서 가장 가파르게 상숭 또는 하강하는 방향으로써 이것이 최적해를 찾는 데에 핵심 아이디어라는 것을 깨달았다(Gradient Descent Method).
25. 정사영문제가 단순히 정사영으로 끝나는 것이 아니라 최소제곱해로 연결되며, 실험에서 데이터를 추출하였을 때 이 데이터의 경향성을 나타내는 식을 찾을 때 최소제곱해로써 구할 수 있음을 깨달았다.
26. 선형연립일차방정식
에서 leading variable의 개수와 free variable의 개수는 합하면 항상
의 열의 개수가 되는데 이로부터 Rank-Nullity 정리가 성립함을 알 수 있다. leading variable 개수가 곧 rank이며, free variable 개수가 곧 Nullity, Null Space의 차원이다.
27. 통계에서 쓰는 확률밀도함수 흔한 적분의 형태
가 일반적인 적분방법으로 구하기 어려워 고등학교에서는 확률분포표를 제공하여 주었는데, Fubini의 정리와 극좌표 변환을 활용하면 구할 수 있다는 것을 깨달았다.
28. 행렬의 역행렬을 구하는 일반적인 공식은 Cofactor Expansion과 행렬식의 성질을 활용하여 구할 수 있음을 깨달았다.
(1) 성분이 모두 0인 행이 존재하면 그 행은 행렬의 맨 아래에 위치한다.
(2) 각 행에서 처음으로 나타나는 0이 아닌 성분은 1이다. 이때 이 1을 그 행의 선행성분(leading entry, leading 1)이라고 한다.
(3) i행과 (i+1)행 모두에 선행성분이 존재하면 (i+1)행의 선행성분은 i행의 선행성분보다 오른쪽에 위치한다.
또 행 사다리꼴 행렬 E가 다음 4번째 성질을 추가로 만족하면 E를 기약 행 사다리꼴(reduced row echelon form, RREF)이라고 한다.
(4) 선행성분(leading entry in row)을 포함하는 열의 선행선분 외의 성분은 모두 0이다.
1.정사영
대상(A)을 다른 대상(B)에 수직적으로 투영하는 것을 정사영이라고 한다. 즉 이를 B위로의 A의 정사영(Projection of A onto B)이라고 표현할 수 있다. 정사영은 사물뿐만 아니라, 벡터에서도 적용될 수 있다.
2.내적
내적(Inner Product, Dot Product)은 두 벡터의 연산 방법 중 하나로, 두 벡터의 노름과 두 벡터가 이루는 각의 cos값의 곱이다. 노름과 cos값으로만 이루어져 있기 때문에, 내적의 값은 스칼라이다. 또한 내적은 시각화해보면, 한 벡터를 다른 벡터에 정사영하는 과정과 동일하다.
3.역행렬
역행렬(Inverse Matrix) A^-1는 본행렬 A의 역이다. A의 역행렬이 존재하므로, 행렬 A는 가역행렬(Invertible Matrix)이 된다. 역행렬을 구하는 방법은 대표적으로 2가지가 있다. 첫 번째는 [본행렬 단위행렬]의 RREF를 구해서, [단위행렬 역행렬]로 역행렬을 구하는 방법이다. 두 번째는 본행렬의 수반행렬과 행렬식을 구하여, adj(A)/det(A)로 역행렬을 구하는 방법이다.
4.선형연립방정식
선형방정식(Linear Equation)의 군(群)을 선형연립방정식(System of Linear Equations)이라 한다. System이라는 의미에 근거하면, 여러 방정식들이 모여서 함께 작용하는 메커니즘을 생각해 볼 수 있다. 이러한 메커니즘이 바로 행렬이며, 선형연립방정식은 행렬로 표현될 수 있다.
5.일차결합
일차결합(Linear Combination)이란, 벡터들이 하나의 선형방정식으로 결합되는 것을 의미한다. span{A, B}는 { k | Ax+By = k, (x, y는 실수) }로 해석되며, 이도 일차결합의 일종이다.
6.치환(순열)
치환이란 집합 A에 있는 값을 집합 A에 있는 값들로 1:1 대응시키는 전단사함수이다. 집합 A의 원소의 개수가 n개일 때, 치환의 개수는 n!개이다. 그리고 치환의 값들을 리스트(List)로 나열하였을 때 오름차순의 규칙에 위배되면, 이 부분에서 반전이 일어났다라고 말한다. 반전의 횟수가 짝이면 짝치환이며, 홀이면 홀치환이다. 이 짝치환과 홀치환은 행렬식(Determinant)를 결정할 때 사용된다.
7.기본행렬
기본행렬(Elementary Matrix)이란, 단위행렬(Identity Matrix)에 하나의 ERO(Elementary Row Operation)을 적용한 행렬이다. 기본행렬은 E로 나타내며, EA를 계산하면, 행렬 E에 적용된 연산대로 행렬 A가 연산된다. 즉 행렬 E가 행1과 행2를 교체하였다면(Interchange), EA도 A의 행1과 행2가 교체된 형태로 출력된다.
8.대칭행렬
대칭행렬(Symmetric Matrix)이란, 주 대각(Main Diagonal)을 기준으로 행과 열을 맞바꾸었을 때(Transpose), 그 행렬이 본행렬과 동일한 경우를 대칭행렬이라고 한다. 즉, A = A^T이다. 또한 –A = A^T를 만족하는 행렬에 대해서는 반대칭행렬(Skew Symmetric Matrix)이라고 한다.
9.일차독립
Ax=B에서 B가 0(즉, Homogeneous)이며 해가 사소한 경우(Trivial), 행렬 A를 일차독립이라고 한다. 즉 행렬 A에 있는 벡터들을 조합하여, 행렬 A 내에 있는 벡터를 만들 수 없다는 것을 의미한다.
10.기저
기저(Basis)란 R^n의 공간을 포괄(Span)할 수 있으며, 일차독립(Linearly Independent)인 벡터의 집합을 의미한다. 가장 간단한 3차원 공간의 기저는 x, y, z 축(Axis)의 단위벡터이며, 집합 내에 있는 벡터의 수는 차원을 결정한다.
11.외적
외적(Cross Product)이란, 두 벡터의 곱 연산 방법 중 하나이다. 두 벡터 A(a, b, c), B(d, e, f)가 주어졌을 때, 외적(Cross Product)는
이다. 방향 벡터
을 제외한 나머지 식은 스칼라로, 기하학적인 의미로는 두 벡터가 이루는 평행사변형의 넓이이다. 또한 이를 행렬로 표현하여 외적을 구할 수도 있다.
(i, j, k는 각각의 축에 대한 단위 벡터이다)
외적(Cross Product)과 외적(Outer Product)는 정의 자체가 다르기 때문에, 혼동하여서는 아니된다.
2. 최소제곱해
방정식의 개수가 미지수의 개수보다 많은 (over-determined인) 선형연립방정식
이 있다고 하자.
을 만족하는 유일한 해는 단 하나의 해도 없는 경우가 대부분이므로, 대신
를 만족하는 근사해를 찾는다. 이때의 해를 최소제곱해라고 한다.
3. 고윳값과 고유벡터
n차의 정사각행렬 A이 있다고 하자. 0벡터가 아닌 벡터 x에 대해 Ax = λx를 만족하는 λ를 A의 고윳값, x를 λ에 대응하는 A의 고유벡터라고 한다.
4. 고윳값 분해
정사각행렬 A가 대각화가능할 때, 가역행렬 P와 대각선행렬 D에 대해 다음이 성립한다.
P-1AP = D → A = PDP-1
그리고 A의 고윳값과 고유벡터를 이용해 A를 분해한다.
5. 2차형식
n차 대칭행렬인 A에 대해 n개의 변수 x1, ... , xn을 성분으로 갖는 Rn의 벡터 x = [x1, ..., xn]T에 대하여 이차다항식 q(x) = <Ax, x> = xTAx =
을 Rn상의 이차형식이라 한다.
12.편도함수
여러 개의 변수가 존재할 때, 하나의 변수만을 선택하여 구한 도함수이다. 즉, 나머지 변수들을 상수로 간주하고, 특정 변수에 대해서만 도함수를 구하는 것이다. 이러한 도함수를 구하는 과정을 ‘편미분한다’고 말한다.
13.그레디언트
그레디언트(Gradient)는 2차원계에서 사용하는 개념인 기울기와 동일하며, 고차원계에서 기울기를 나타내기 위한 표기방법이다.
![]()
![]()
![]()
14.연쇄법칙
연쇄법칙(Chain Rule)이란 라이프니츠식(式) 기호를 대수적 연산처럼 활용할 수 있는 법칙이다. 마치 사슬처럼 이어지는 모양을 나타내고 있어서, Chain이라는 이름이 사용된 것이다.
![]()
15.임계점
임계점(Critical Point)이란, 도함수 f’(x)의 값이 0이 되거나, 존재하지 않는 x의 값들이다. 이는 최대 – 최소 정리(Extreme Value Theorem)에서 요구되는 값들이다. 페르마의 정리 또는 페르마의 임계점 정리의 정방향은 성립하나, 역방향은 성립하지 않는다는 점에서, 임계점의 정의가 나오게 된 것이다.
7. Taylor 정리
다변수 함수 f가 연속인 편도함수를 가지면, 적당한
가 존재하여 다음이 성립한다.
- ![]()
- ![]()
8. Fermat의 임계점 정리
함수 f(x, y)가 (a,b)에서 극대 또는 극소가 되고 f의 편도함수가 존재하면 다음이 성립한다.
![]()
10. Fubini의 정리
f(x, y)가 직사각형 영역 R = [a, b] x [c, d] = {
}에서 연속이면,
이 성립한다.
16.경사하강법
경사하강법(Gradient Descent Method)는 뉴턴방법(Newton’s Method)를 응용한 것으로, 그레디언트가 최소가 되는 즉 지역 최솟값(Local Minimum)을 찾는 방법이다. 이 방법을 변형하여 그레디언트가 최대가 되는 즉 지역 최댓값(Local Maximum)을 찾는 방법인 경사상승법(Gradient Ascent Method)을 생각해 볼 수 있다.

12. 대수의 법칙
시행 횟수를 n, 특정 사건 A가 일어날 횟수를 k라 하면, n이 한없이 커질 때 통계적 확률 P(A)는 수학적 확률 a에 가까워진다.
13. 베이즈 정리
{A1, A2, ... , An}이 표본공간 S의 분할을 이룰 때, 임의의 사건 B에 대해 다음이 성립한다.
B = B ∩ S = (A1 ⋃ A2 ⋃ ... ⋃ An) ∩ B
따라서 임의의 숫자 I에 대해 다음이 성립한다.
P(Ai | B) = P(Ai ∩ B) / P(B)
= P(Ai ∩ B) / ( P(A1)P(B|A1) + ... + P(An)P(B|An) )
14. 중심극한정리
동일한 확률분포를 가진 독립 확률변수 n개의 평균의 분포는 이 적당히 크다면 정규분포에 가까워진다는 이론이다.
즉, 평균이
이고 분산이
인 모집단에서, 추출한 크기 n이 증가할수록 모집단의 분포유형에 관계없이 근사적으로 정규분포
을 따른다는 것이다.
17.확률질량함수
확률질량함수(Probability Mass Function, PMF)란, 이산확률분포를 따르는 확률변수에 대한 함수로, 불연속적인 속성으로 인해 입력값이 한정되어 있다. 대표적으로 포아송 분포, 베르누이 분포, 이항 분포가 확률질량함수를 갖는다.
18.확률밀도함수
확률밀도함수(Probability Density Function, PDF)란, 연속확률분포를 따르는 확률변수에 대한 함수로, 연속적인 속성으로 인해 특정 범위에 한해서 입력값이 자유롭다. 대표적으로 정규 분포, 균등 분포, 지수 분포, 코시 분포가 확률밀도함수를 갖는다.
19.누적분포함수
함수 f(x)를 왼쪽 끝 값으로부터 특정 지점 x까지 적분하여 구한 함수 F(x)를 누적분포함수(Cumulative Distribution Function, CDF)라고 한다. 또한 확률함수의 넓이에 대한 함수라고 표현할 수도 있다. 이 함수는 R언어에서 주로 사용하는 것으로, 특정 입력값까지의 범위를 구하는 데 사용한다. 기본적인 확률 옵션은 'lower.tail=T'으로 설정되어 있으며, 이는 누적분포함수와 같은 수식을 따른다는 것이다. 만약 'lower.tail=F'로 옵션을 변경하면, 누적분포함수와 반대되는 수식을 사용하게 된다. 즉 지점 x를 시작점으로 하여, 끝 값까지 적분을 수행하는 수식을 사용한다.
20.적률생성함수
자연상수 e의 xt제곱을 확률함수에 곱하여, x에 대한 무한범위 적분을 수행해서 얻은 함수를 적률생성함수(Moment Generating Function, MGF)라 한다. 이 함수는 자료를 분석하는 새로운 방법으로, 입력 변수가 t이며, t의 값에 따라 적률이 출력된다.
21.주성분분석(Principle Component Analysis)
행렬에서 기저의 수를 차원(Dimension)이라고 하는데, 이 차원의 수를 줄여서 데이터를 분석하는 과정을 PCA 분석 또는 주성분 분석(Principal Component Analysis)이라고 한다. 즉, 고차원 행렬의 기저를 원래 자료의 의미를 보존하면서, 저차원 행렬의 기저로 대체하는 과정이라고 할 수 있다. 기저 차체가 PCA 분석 알고리즘을 적용하는 과정에서 변화하기 때문에, 일반적으로 고차원 행렬과 저차원 행렬이 선형적으로 연관성이 없다고 표현할 수 있다. 주성분 분석은 단순히 차원을 줄이는 것이 아니라, 원래의 값을 최대한 보존하면서 차원을 줄인다는 점에서, 많은 자료를 처리하는데 있어서 유용하다. 또한 차원을 줄이게 되면, 그만큼 데이터의 특징점을 찾아내는 것이 수월해진다. 예를 들어, 4차원 데이터를 3차원으로 감축시켰다면, 이를 시각적으로 표현하였을 때, 더 이해하기 쉬울 것이다. 물론 4차원 데이터도 이론적으로 표현은 할 수 있다. 즉, 기하학적인 4차원이 아닌, 데카르트 좌표계를 확장한 4차원을 생각해보면, 4개의 기본축(x, y, z, w)이 서로 직교하는 좌표계를 생각해 볼 수 있다. 하지만 아러한 좌표계는 우리가 인지하는 공간적 차원을 넘어서기에 시각적으로 표현하는 것 자체가 불가능하다. 그렇기에 차원을 줄이는 과정은 데이터를 분석하는데 있어서 상당히 유용할 것이다. 다만 차원의 수를 너무 감축시키면, 오차가 커지면서 자료의 원래 의미가 왜곡 및 변질될 수 있기 때문에, 적당히 감축을 하는 것이 좋다.
15. 공분산과 상관계수
확률변수 X와 Y의 공분산은 다음과 같다.
![]()
그리고 X와 Y의 상관계수는 다음과 같이 정의된다.
![]()
31. Gamma 분포 (Gamma distribution)
Gamma 분포는 신뢰성 이론, 기대 시간, 수명 시간 등의 분포에서 이용된다.

(2)Gamma 분포의 확률밀도함수

(3) 그래프

16. 지도학습과 비지도학습
지도학습은 어느 정도의 기준이 주어진 상태에서 자료를 분류해가며 기준을 보완하며 학습하는 것이지만, 비지도학습은 반대로 기준이 주어지지 않은 상태에서 자료들을 분류해가며 새로운 기준을 찾아내 그 기준을 바탕으로 학습하는 것을 말한다.
17. 강화학습
강화학습이란 학습을 진행하면서 현재 할 수 있는 행동들 중 최대의 보상을 얻거나 최소의 위험을 감수하는 방향으로 학습하는 것을 말한다.
(2) State more than 15 things that you know/can/find ... after you studied the first 4 Chapters.
1. 선형대수학과 관련된 ‘Sagemath’ 언어를 다룰 수 있습니다.
2. ‘Sagemath’ 언어에 옵션을 추가하여 활용할 수 있습니다.
3. 행렬식(Determinant)을 순열의 의미로부터 구할 수 있습니다.
4. 역행렬을 행렬식과 수반행렬을 이용하여 구할 수 있습니다.
5. 점과 평면사이의 거리를 유도하는 새로운 방법을 깨달았습니다.
6. 고차원계에서 경사를 표현할 수 있는 방법을 깨달았습니다.
7. 외적(Cross Product)에 대한 명확한 정의를 내릴 수 있습니다.
8. 미적분과 관련된 ‘Sagemath’ 언어를 다룰 수 있습니다.
9. 선형대수학과 미적분의 연결 관계를 새롭게 깨달았습니다.
10. 통계학과 관련된 R 언어를 다룰 수 있습니다.
11. 포아송 분포와 지수 분포를 활용할 수 있습니다.
12. 다양한 분포를 R 언어를 이용하여 계산할 수 있습니다.
13. 두 개의 확률 변수를 이용한 확률 함수를 다룰 수 있습니다.
14. 공분산과 상관계수를 구할 수 있습니다.
15. 베이즈 정리를 이용하여, 사후확률을 계산할 수 있습니다.
16. 인공신경망에 대하여 설명할 수 있습니다.
17. 주성분분석(Principle Component Analysis)의 개념을 이해하였습니다.
18. 활성화 함수가 인공신경망에서 행하는 역할을 설명할 수 있습니다.
19. 퍼셉트론에 관한 내용을 설명할 수 있습니다.
20. 라그랑주 승수법의 개념을 이해하였습니다.
...
1.Q:AI 를 이해하기 위하여 수학을 배우는 이유는 무엇일까?
1. 4차 산업혁명으로 넘쳐나는 데이터를 통한 Data Science와 Data Driven Science가 발전됨에 따라 AI도 같이 발전하고 있습니다. AI는 초기에 이미지 데이터를
입력받았습니다. 교수님의 인공지능을 위한 기초수학 교재 Part 0 MNIST 데이터셋을 활용한 손 글씨 숫자 인식 (패턴인식)에도 나왔듯이, 이미지는 여러 픽셀로 쪼개져 RGB색깔 요소를 수치로 갖고있는 하나의 벡터값입니다. 이 벡터값들이 신경망을 거쳐 사과사진을 보고 사과라고 인식하는 공부를 하는 것입니다. 여기서 신경망은 선형연립방정식 형태로 이루어져 있기에 AI는 초기부터 수학공부를 해온 것입니다. 또한, 주어진 데이터를 통해 원하는 결과값을 출력하기 위해서는 Mathematical Modeling이 필수적입니다. Modeling한 것을 Mathematical Solution을 산출하고 Interpretation of Result 과정을 통해 결과를 도출합니다.
느낀점: 글쓴이와 동일하게 저도 4차 산업혁명은 더 이상 먼 얘기가 아니고 현재진행형이라고 생각합니다. 그런 점에서 4차 산업혁명을 살아가는 데 4차 산업혁명의 핵심인 인공지능을 이해하는 것은 필수입니다. 인공지능을 위한 기초 수학을 배우면서 인공지능이 작동하는 원리와 활용되는 수학적인 개념들을 깊이 이해하는 것이 인생에 큰 도움이 될거라고 생각합니다.
...
2.Q: 해가 존재하지 않는 연립방정식의 optimal solution은 어떻게 구하나?
1. 주어진 데이터에 가장 근사한 직선 1의 계수 a,b를 구하는 방법에 대하여 알아보자. 주어진 데이터의 점 (x1,y1), (x2,y2), (x3,y3)를 식 y=a +bx 에 대입하면 2개의 미지수 a,b를 갖는 연립방정식을 얻는다. 이 식은 Ax=b 형태로 쓸 수 있다. 이 식에 양변에 A^T를 곱하면 A^TAx=A^Tb를 정규시스템이라 하며 n개의 데이터의 점에 가장 근사한 직선 y=a+bx를 구할 수 있는 다음 정규시스템을 얻을 수 있다.
느낀점: 질문자의 답변에 교수님 께서 디테일하게 설명을 해주셨다. 해가 갖지 않는 연립방정식의 최소제곱해를 찾는 문제는 통계적 분석에 있어서 기본적인 모델이라고 볼 수 있으며 비선형적인 관계를 갖는 두 변수의 관계를 찾는 데 유용하게 쓰인다. 이는 모든 데이터 분석과 시계열 분석등 다양한 데이터 분석에 쓰일 수 있다.
3.Q:거듭제곱법에 관한 생각
1. m차 정사각행렬 A에 대하여, Ax=
x를 만족시키는 m x 1행렬 x가 항상 존재한다. 이때 이 x를 행렬 A의 eigenvector라고 하고
를 대응하는 eigenvalue라고 한다. (A-
I)x =0이므로 A-
I가 역행렬이 존재하지 않음을 이용하면 eigenvalue와 대응하는 eigenvector를 구할 수 있다. Ax=
x 양변에 임의의 스칼라 k를 곱하면 kAx=k
x, A* kx=
kx, A(kx)=
(kx)가 된다. 따라서 구한 eigenvector에 대해 임의의 스칼라 k배한 벡터 모두 해당 eigenvalue의 eigenvector 그룹이 된다. 편의상 1행 성분이 1인 경우로 한정하고 생각하기로 한다. Eigenvalue와 eigenvector의 정의에 대해서 A^n의 eigenvalue는
^n 이며 eigenvector는 x이다.
2.Eigenvector에 대해서는 이와 같이 자명합니다.그런데 예제에서 교수님께서 제시하신 (1,1,1)벡터는 A의 eigenvector가 아니잖아요~예제의 풀이의 결과를 보면 A를 거듭제곱하고 (1,1,1)에 곱한 결과로서 eigenvector가 찾아진다는 이야기같은데 어떻게 가능한지 궁금합니다.
3.이것은 큰 크기의 음아닌 행렬에 대한 <가장 큰 고유벡터와 그에 대응하는 고유벡터를 쉽게 찾는 Power Method> 에 대한 설명으로 ... 전체 설명은 본 강좌의 범위가 아니므로 ... 이해 할 자료만 주고 . (강좌의 수준을 벗어나는 사족의 질문이 처음 부터 너무 많으면 다른 학생들이 당황하니까 ) 나중에 내 연구실 32304에 오시면 설명해 줄께요) 지금은 물어본 내용들에 대해 간단하게 답만 드립니다^^
느낀점: 거듭제곱법에 대한 토론인데 (1,1,1)벡터는 A의 eigenvector가 아니지만 A를 거듭제곱하고 (1,1,1)을 곱하면 eigenvector가 찾아진다는 내용이다. eigenvector에 대한 이해도가 낮았지만 이 토론을 보면서 eigenvalue와 eigenvector 내용을 다시 복습하게 되었고 거듭제곱법을 완벽하게 이해하지 못했지만 찾아보면서 이런 방법이 있다라는 것을 알게 되었다.
4.Q:Tell me about Newton's Method
1.주어진 함수의 그래프를 그린 후, Newton의 방법에 의하면 그 함수가 축과 만나는 근(무리수 값의 근)의 근사값을 소숫점 이하 몇 번째 자리까지든지 원하는 대로 정확하게 구할 수 있다.
2.최적화문제를 푸는 계산방법은 대개 반복법(iterative method)으로, 초기 근사해로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해들을 생성한다. 위의 그림에서 곡선 를 생각하자. 을 방정식 의 근 에 대한 첫 번째 근사값이라 하자. 그럼 은 점 에서의 곡선 에 대한 접선의 방정식이다. 그래프를 보고 을 에 적당히 가까운 값으로 선택하면, 이 접선은 보통 축과 점 에서 만나는데, 그 점의 좌표 는 보다 에 더 가까운 근사값이 된다. 따라서 위식에 를 대입하면, 을 얻는다. 다시 를 첫 번째 근사값으로 생각하고 다음 접선을 이용하면 를 얻는다. 이 과정을 반복하면 공식, 을 얻게 된다. 이 Newton의 공식을 반복하여 사용하면, 원하는 근을 소숫점 이하 몇째 자리까지라도 필요한 오차 이내로 정확하게 구할 수 있다.
느낀점: Newton’s method에 대해서 이해가 없었지만 최적화 문제에 있어서 유용하게 사용되는 방법이라는 것을 배웠다. 함수의 첫 번 째 미분값을 알 수 있으면 반복 작업을 통해 근에 근접한 해를 구할 수 있다는 것을 배웠다.
5. Q: Tell me about SVD
고윳값 분해는 대각화가능한 정사각행렬인 경우에만 정의되는 개념이다. 따라서 (정사각행렬이 아닌) 일반적인 행렬의 경우에 대해서도 고윳값 분해와 유사한 행렬 분해가 존재하는지 생각해 볼 수 있다. 임의의 행렬 A에 대해서 A^TA와 AA^T 는 대칭행렬이므로 직교 대각화가 가능하다. 이를 이용하면 다음의 중요한 행렬분해인 특이값 분해(singular value decomposition, SVD)를 얻을 수 있다.
느낀점: 정사각행렬이 아닌 일반행렬의 경우에 고유값 분해와 같은 분해가 이루어질 수 있는지 궁금했는데 임의의 행렬 A를 A^T와 AA^T로 표현해서 생각해보면 이들은 대칭행렬이므로 singular value decomposition을 할 수 있다는 것을 알게 되었다. 무조건 정사각행렬이 아니라고 해서 분해를 못하는 것이 아니고 대칭행렬이라는 점을 이용해서 직교대각화 함으로써 SVD를 할 수 있다는 것을 배웠다.
6.Q: 데이터 사이언스에서 선형 회귀와 같은 모델에서 Least square를 구하여 오차를 최소화 하는 방식으로 파라미터를 최적화를 하는 것으로 알고 있는데요. 보통 데이터 셋이 매트릭스 형태로 되어 있고, 이는 선형 연립 방정식으로 풀 수 있다고 생각을 합니다. 이 때, least square를 최소로 하는 해를 구하는 것이 선형 연립 방정식이 해를 갖지 않을 때에 해당하는 것일까요?
1.2. least square 법으로 에러가 최소인 해를 구하는 것은 ... (1) 선형 연립 방정식이 해를 갖지 않을 때 는 최적해를 주고, (2) 만일 선형 연립 방정식이 유일해를 가질 때는 ... 같은 알고리즘으로 얻어지는 least square 해가 ... 바로 그 유일해를 줍니다.
따라서 least square 해법은 모든 연립방정식에 대해 최적해 또는 유일해를 구하는데 적용 가능하여 중요한 것입니다.
2.제 생각으로는 선형 연립 방적식이 확실한 해를 가지지 않을 때에 해당한다고 생각합니다. 제가 책에서 본 최소제곱법을 이용한 문제가 있는데 집 값을 예측하는 문제였습니다. 매트릭스의 열은 위치, 방 개수, 집 주인의 median income 등등으로 이루어져있었는데 이 때 가중치를 계속 조정해서 가장 오차가 적은 직선을 구했습니다. 그리고 이 문제의 목적은 정확한 집값(정확한 해를 갖지 않음)은 당연히 예측할 수 없으니 머신러닝을 이용해 최대한 가까운 집값을 예측하는 것이였습니다.
3.연립1차방정식의 행렬이 정사각행렬이고 가역행렬이면, 그 경우 최소제곱해는 바로 그 유일해가 됩니다. 따라서 least square 해법은 모든 연립방정식에 대해 최적해 (또는 유일해가 존재 할 때는 유일해)를 구하는데 적용 가능하여 중요한 것입니다. 그렇게 Finalize 하세요^^
느낀 점: 최소제곱해가 유일한 해를 가지는 행렬에 대해서도 적용 가능한지에 대한 토론이었는데 그동안 최소제곱해 방법은 유일한 해가 없을 때 사용하는 줄 알았는데 교수님의 답변을 듣고 모든 연립방정식에 대해 적용 가능한 것이라는 것을 알게 되었다.
7.Q: 고유값 분해와 특이값 분해의 차이
1.고유값 분해는 대각화가 가능한 정사각행렬에 한해서 시행할 수 있다는 점이 있습니다.
하지만 특이값 분해는 일반적인 행렬이라면 어떤 행렬이라도 사용 가능합니다. 그 이유는A^T*A와 A*A^T는 정사각행렬이자 대칭행렬이기 때문에 직교대각화가 가능해지며, 고유값과 고유벡터를 언제나 구할 수 있기 때문입니다. 그리고, 무엇을 이용해 분해하는가 입니다.
고유값 분해는 A의 고유값과 고유벡터를 이용해 A를 분해하는 것이지만, 특이값 분해는 A^T*A와 A*A^T 각각의 고유값과 고유벡터를 이용해 A를 분해하는 것입니다.
느낀점: 고유값 분해와 특이값 분해의 차이에 대한 토론이다. 고유값 분해는 행렬이 정사각행렬일때만 적용되고 특이값 분해는 일반 행렬에 대해서도 적용 가능하다. 이 토론을 통해서 고유값 분해와 특이값 분해에 대한 이해도를 높일 수 있었다.
8.Q:Final] :Python 기초 강의 링크, The Python Math Module by 신재열, 민재필, 이상구 교수님
1.우선 우리 책의 문제 들을 ... 제공한 파이썬 기반의 SageMath 언어로 ... 여러분 전공이나 AI 와 관련한 문제 ... 아니면 좀 더 큰 사이즈나, 좀 더 복잡하거나, 좀 더 흥미있는 문제 ... 또는 여러분 전공 사적에 나오는 문제 에 대하여 ... 풀어서 ... 여러분들의 문제와 답을 공유 하면서 ... 일단 기초 실력을 키워 두세요^^
느낀점: 신재열 학우가 올린 파이썬 강의 동영상을 실제로 시청하고 파이썬에 대해서 공부를 하게 되었다. 데이터 분석과 여러 프로그래밍에 있어서 파이썬은 다른 프로그래밍 언어에 비해서 배우기 쉽고 문법이 간단하다는 장점이 있는데 이를 바탕으로 프로젝트를 할 수 있어서 많은 것을 배우는 계기가 되었다.
9.Q:AI 기계학습 '적자생존' 자체 진화 설계 | 사이언스모니터
1.과학자들은 소프트웨어 입력 없이 세대를 거쳐 발전을 개선하는 AI 프로그램을 만들었다. 이 프로그램은 며칠 만에 수십 년 동안의 AI 연구를 반복했다. 설계자들은 언젠가 AI에 대한 새로운 접근법을 발견할 수 있을 것으로 기대한다.
AI 알고리즘을 구축하는 데 시간이 걸린다. 언어를 번역하고 자동차를 운전하는 데 사용되는 일반적인 유형의 기계 학습(ML) 신경망(neural networks) 모델을 사용한다. 이 네트워크는 뇌의 구조를 느슨하게 모방하고 인공 뉴런 사이의 연결 강도를 변경해 훈련 데이터를 자가 학습한다.
더 작은 뉴런 회로는 도로 표지판을 발견하는 것과 같은 특정 작업을 수행한다. 인간이 신경망 연결을 최적화하는 데는 몇 달이 걸릴 수 있다. 최근 몇 년간 과학자들은 그 몇 단계를 자동화해 프로세스를 가속화했다. 그러나 대부분의 프로그램은 여전히 인간이 설계한 기존 회로를 연결하는 데 의존한다. 이는 엔지니어의 상상력과 기존의 편견으로 인해 결과가 여전히 제한됨을 의미한다.
구글의 컴퓨터 과학자 코크 르(Quoc Le)와 동료들은 오토ML-제로(AutoML-Zero)라는 프로그램을 개발했다. AutoML-Zero는 고등학생 수준 기본적인 수학적 개념만을 사용해 인간의 입력이 거의없는 AI 프로그램을 개발할 수 있다.
느낀점: 인공지능에 대한 깊은 이해가 없는 저에게 많은 것을 알려주는 기사였습니다. 인공지능의 수준이 제가 생각하는 것보다 훨씬 높다는 것을 알 수 있었고 빠르게 성장하는 인공지능 시대에 살면서 인공지능을 두려워하기 보다는 인공지능에 대한 이해도를 높여야한다는 동기부여가 되었습니다.
10.Q:Talk about (Discuss) 26. Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)에 대하여 간략하게 설명하시오.
1.경사하강법이란 비용함수를 최소화하여 최소한의 loss 값을 얻기 위한 기법입니다. 오차 그래프를 미분한 값(그래디언트)를 반복해서 빼다보면 오차그래프가 최소인 점에 도달하게 되는데 그것을 경사하강법이라고 합니다. 그리고 더 정확한 값을 구하기 위해 확률적 경사하강법, 미니배치 경사하강법 등 여러가지 경사하강법이 존재합니다.
느낀점: 인공지능 강의를 통해 경사하강법이 인공지능 딥러닝에 있어서 핵심적인 방법이라는 것을 알게 되었다. 답변한 학우분의 설명을 보면서 경사하강법에도 다양한 방법이 있다는 것을 알게되었다.
11.Q:극대극소 판정법과 행렬 이론의 연결고리 정리한 것 by 신재열, 이상구 교수님
1...행렬의 대각화 를 생각해보면, 주어진 행렬에 닯음인 대각선 행렬 은 같은 행렬식을 가집니다.
그럼 원래 행렬의 det 에 대한 얘기 ... 는 ... 주 대각선 성분이 고윳값인 행렬의 행렬식, 더 나아가 principal minor 에 대해서도 생각 할 수 있을 것이다는 추측으로 부터, 위의 정리를 만들어서 ... 여러분이 쉽게 ... 다변수 함수의 극대 와 극소 에 대한 판정을 할 수 있게 해 준 것입니다. 물론 증명은 관련 수학을 배운 사람에게는 쉬운 내용입니다,
2.일반적으로 행렬식을 구한다는 것은 쉬운 일이 아니다. 하지만, 대각화, 나아가 직교대각화가 가능하다면 대각선 성분만으로 행렬식을 구할 수 있고, 특히 직교대각화의 경우 대각선성분이 eigenvalue들이기 때문에 eigenvalue와 eigenvector의 중요한 성질까지 활용이 가능하다. 미적분에서 이차형식의 주축정리하고 연결이 되며, 어렵게만 보이던 극대극소 판정법이 이차형식과 Hessian과 더불어 깔끔하게 정리가 된다.
느낀점: 그동안 극소값, 극대값을 구하는 방법에 있어서 고등학교 수준이었지만 헤시안을 사용해서 구할 수 있는 방법에 대해서 배우면서 더 깔끔한 방법이 있다는 것을 알게되었다.
12.Q:<캠프파이어 in Digital > 세대 ?
1.인공지능에 필요한 ... 수학 은 논리적인 communication 이랍니다. 문제 풀이는 그 중 아주 작은 일부입니다. 특히 여러분이 K-12 에서 엄청나게 많은 시간 훈련한 ...지필 로 수학 문제 풀어 답을 구하는 것은 ... 그 중 아주 아주 작은 부분 입니다.
여러분이 지금까지 배운 수학은 ... 이제 수학에 대해 서로 얘기 할 수 있을 정도의 ... 기초 체력을 ... 준비한 것 으로 생각하시고 ... 이제 진짜 ... 공부 ... 수학에 대한 chatting 을 하면서 ... 여러분이 평생 사용할 수학 지식을 ... 큰 그림을 ... 이해 하시기 바랍니다.
느낀점: 수학을 자신없어 하지만 이 글을 보고 앞으로 수학과 친해져야 겠다는 생각을 하였다.
13.Q:다변수 함수의 Taylor정리에 대한 질문 <--- [신재열 군의 질문에 대한 답] by SGLee (파일 첨부) by 신재열, 이상구 교수님
1.위 본문에 첨부로 질문에 대한 자세한 답을 타이핑하여 줍니다^^ [신재열 군의 질문에 대한 답] (미분가능한) 다변수 함수에 대한 Taylor 근사를 표현하는 훌륭한 방법은 우선 열벡터 와 행벡터 을 사용하여 1계(1st order) Taylor 근사가 로 표현된다는 것을 이용한다. 여기서 두 번째 항이 행렬곱으로 표현된 것이다. 다음 변수 함수에 대한 Taylor 근사에서 2계항(second order term)까지 행렬표현으로 나타내면 아래와 같다. 여기서 는 의 대칭행렬인 헤시안(Hessian) 행렬 이다. 헤시안(Hessian) 행렬 : 위의 식에서 , , 로 두면 다음을 얻는다. 정리. 다변수 함수에 대한 Taylor 정리의 행렬 표현 다변수 함수 가 연속인 편도함수를 가지면, 적당한 가 존재하여 다음이 성립한다. 만일 연속인 2계 편도함수를 가지면, 적당한 가 존재하여 다음이 성립한다. 또는 ▪ (위 식에서 , , , 일 때) 점 근방에서 에 가까운 1차식인 선형근사식(벡터형식 표현)은 다음과 같다. ▪ 마찬가지로 점 근방에서 에 가까운 2차식인 이차근사식은 다음과 같다.
느낀점: Taylor 정리가 인공지능에 어떻게 적용되는지에 대해서 배울 수 있는 계기가 되었다. 완벽하게 이해하지는 못했지만 기본적인 개념을 익힐 수 있었고 앞으로 더 수학지식을 쌓아야겠다는 생각을 하였다.
Q14:[Final OK by TA] 고유값 분해에 있어서 필요조건이 반드시 대칭행렬 인것인가요? 또 eigen decomposition이 어떤 문제를 해결할 때 유용한지 궁금합니다 by 민재필, 이상구 교수님
1.행렬의 직교대각화가 여러분이 인공지능을 하려면 꼭 알아야 하는 내용입니다. 1. 복소행렬인 경우 Unitarily 대각화 가능 이라고 합니다. (실수 행렬일 경우 대칭행렬은 그것의 특수한 경우입니다) ... 복소수 행렬인 경우는 Normal matrix (A^* A = A A^* 인 행렬이 Normal Matrix 입니다) 가 Unitarily 대각화 가능 의 필요 충분 조건입니다^^ 2. 복소행렬인 경우 Unitarily 대각화 가능에 대응 하는 실수 행렬인 경우가 직교대각화 입니다. (모든 경우는 복소행렬에 대해 증명하고, 실수 행렬은 그의 특수한 경우로 성립한다고 처리합니다. 이유는 대수학의 기본법칙 ... 때문이기도 합니다.) <--- 대수학의 기본법칙에 대하여 설명해 보세요. 3. 고윳값 분해는 일반적으로 실수 대칭행렬 아니어도 ... 되는 경우가 많이 있습니다. 예가 Hermitian 행렬입니다. 3. 직교대각화 또는 Unitarirl 대각화 및 고윳값분해 의 장점도 위에서 보듯이 다양합니다. 4. 많은 계산을 쉽게 하게 해주고, 5. 또 행렬 A 의 문제를 고유벡터들의 행렬곱의 (고유값을 이용한) 일차결합으로 이해할 수 있게하고, 6. 또 행렬 A 의 문제를 rank 1 행렬들의 합으로 이해 할 수 있게 해 줍니더. 즉 복잡한 문제를 아주 단순한 문제로 바꾸어 주어, 컴퓨터를 이용하여 다루기 ... 아주 쉽게 해 줍니다^^ 등 등 무수히 많은 장점이 잇습니다.
느낀점: 고유값 분해와 행렬의 직교대각화에 대한 이해수준은 교재에 나와있는 것을 암기하는 수준밖에 되지 않았지만 이 수학적 개념이 어떻게 응용되는지 설명을 듣고 난 이후에는 이해도가 높아지는 것을 경험 할 수 있었다.
15.Q:[Final] Gradient descent method 와 Newton's method 차이
1.안녕하세요 교수님.
Gradient descent method 와 Newton's method 차이 질문
제가 학습을 통하여 정리한 바로는
1. gradient descent 방법, Newton's method 둘 다 미분의 원리를 사용하여
<--- 하나는 함수의 극대, 극소를 찾는 방법이고 나머지 하나는 함수값이 0이 되는 해를 찾는 방법이라고 이해를 했는데요.
이와 관련되어서 Quasi-Newton method라는 것이 또 있더라구요.
Quasi-Newton method 은 각 반복에서 objective function에 대한 gradient만 필요로 한다는 점과,
Newton's method 보다 계산적인 부담이 덜 하다는 것만 알고 그 원리에 대해서는 제 이해력이 달려서 나중에 공부하기로 하겠습니다...
1.Newton method의 경우 설명해주신 것처럼 함수의 해(f=0)를 찾는 방법인데요,
f=0 인지점을 f'=0 인지점을 찾는 방법으로 바꿔서 gradient method 방법처럼 함수의 극소점을 찾는 방법으로도 사용될 수 있다고 알고 있습니다.
Newton method를 식으로 정의할 경우 역행렬을 구해야하는 부분이 있는데 역행렬 계산에 비용이 많이 들어
이를 근사한 값으로 치환하여 푸는 방식을 Quasi-Newton Method라고 알고 있습니다.
답: [참고] Quasi-Newton method는 gradient method 와 Newton's method의 중간이라고 볼 수 있습니다.
수렴속도(convergence rate) 면에서
A. gradient method는 linear convergence rate
B. Newton's method는 quadratic convergence rate
C. Quasi-Newton method는 super-linear convergence rate
**********************
1. 최적화 문제를 푸는 Newton's method의 경우 안승현 학생이 위에서 언급한 것처럼
원래 함수의 해 (f=0)를 찾는 방법에서 최적화 문제의 최적 조건인 도함수가 0 (f'=0)인 방정식에 적용한 것입니다.
2. 이를 자세히 살펴보면 Taylor 정리에서 원래 함수 대신 이차근사식(quadratic approximation)을 minimization 하는 것으로도 볼 수 있습니다. (이부분이 좀 더 직관적인 설명입니다.)
느낀점: gradient descent method 와 newton method 의 차이에 대한 설명이다. 이 discussion을 통해 gradient descent method는 linear convergence rate에 대한 method이고 newton method는 quadratic convergence에 대한 method인 것이라는 차이에 대해서 배웠다. 또 새로운 개념인 Quasi-Newton method에 대해서 접하면서 다른 방법도 있다는 것을 알게되었고 공부를 더 심도있게 해봐야겠다는 생각이 들었다.
1. 벡터공간의 충족요건 – 신**(2013****84)
질문 : 어떻게 부분공간이 본공간에 속해있음을 u+w와 u의 Scalar배가 부분공간에 속한다는 것만으로 증명할 수 있는가?
답변 : 부분공간이 본공간에 속함을 증명하기 위해서는, 먼저 본공간이 지니는 속성을 부분공간이 그대로 지니고 있다는 것을 보여야 한다. 그리고 부분공간은 본공간이 지니고 있지 않은 외적인 속성을 지닐 수 없다. 일반적으로 본공간에서 성립하는 연산 8가지(+, -, 0, ..etc)는 부분공간에서도 그대로 성립한다. 사실상 이 8가지 연산은 공간자체가 지니고 있는 속성이다. 그렇기에 나머지 2 부분만 증명을 하여, 부분공간이 본공간에 속해있음을 증명할 수 있는 것이다. 간단한 예시로 3차원 공간에 한 평면이 있다고 가정해보자. 그러면 평면은 3차원 공간에 대한 부분공간이라고 말할 수 있다. 아무리 그 부분공간에서 u+w와 u의 Scalar배를 연산하더라도 부분공간을 벗어날 수 없다. 부분공간에서 이미 본공간에 종속되어 있다는 것과 본공간이 지니는 속성 8가지를 부분공간이 지닌다는 것이 전제로 깔려 있으며, u+w와 u의 Scalar배의 연산을 통해 부분공간 자체의 경계가 존재한다는 것이 명확해져, 공간이라는 의미를 확고하게 한다. 결국 2가지를 보여서, 부분공간이 본공간에 속해있음을 보일 수 있는 것이다.
2. RREF 계산 방법에 대한 질문 – 황**(2019****19)
질문 : 일반 행렬을 RREF로 바꾸는 계산방법은 무엇인가?
답변 : 행렬의 RREF를 구하기 위해서는 행렬의 REF를 구하는 과정이 요구된다. RREF를 구하려면 REF에서 Pivot의 값이 모두 1이며, Pivot이 속해있는 열은 Pivot 값을 제외한 모든 성분이 0이 되도록 ERO(Elementary Row Operation)를 사용해서 변형해야 한다. 바로 그 결과가 RREF가 된다.
3. (QnA 토론) 행렬과 인공지능; 행렬의 역사 : ... AI 를 이해하기 위하여 수학을 배우는 이유는 무엇일까? - 이**(2019****68)
질문 : AI 를 이해하기 위하여 수학을 배우는 이유는 무엇인가?
답변 : AI는 다양한 자료들을 이용하여, 입력된 정보로부터 결과물의 방향을 정한다. 즉 입력과 출력의 관계가 AI의 기본 구조이다. 입력이 동일하더라도, 메커니즘이 어떠한 형태를 지니고 있느냐에 따라 다른 결과가 출력될 수 있다. 바로 이 메커니즘은 행렬(Matrix)이라고 할 수 있다. 행렬의 값을 많은 데이터로부터의 학습을 통해 미세하게 조정하여, 입력에 대한 원하는 출력을 이끌어내는 것이다. 이러한 점에서, AI를 이해하기 위해 수학을 학습해야 하는 이유가 명백해진다.
4. 역행렬 구하기 문제 – 조**(2016****76)
내용 정리 : 역행렬을 구할 수 있는 방법에는 대표적으로 2가지가 있다. 첫 번째는 기본행렬(Elementary Matrix)을 통한 방법, 두 번째는 수반행렬(Adjoint Matrix / Adjugate Matrix)와 행렬식(Determinant)를 이용하는 방법이다. 첫 번째는 [A : I] 행렬을 RREF하여 [I : B]가 되는 경우, B가 A의 역행렬이 된다. 만약 행렬 A를 RREF하여 단위행렬로 만들 수 없다면, A의 역행렬은 존재하지 않는다. 두 번째는 adj(A)/det(A)를 계산한 값이 A의 역행렬이다. 만약 det(A)가 0이라면, 역행렬은 존재할 수 없는 것이다.
5. 행사다리꼴 관련 질문 – 김**(2020****67)
질문 : [A : B]와 [A : B].rref()가 서로 어떤 수학적 연관성을 지니고 있는가?
답변 : 첨가행렬 [A : B]를 RREF하여 얻은 첨가행렬 [C : D]는 전 행렬과 해집합이 동일하다. 즉 전자를 계산하나 후자를 계산하나 동일한 결론이 나온다는 것이다. 이 두 행렬의 관계를 Row Equivalent라고 말한다. 후 행렬을 ERO(Elementary Row Operation)을 이용하여 전 행렬로 만들 수 있는 관계로 해석할 수도 있다.
6. RREF(사다리꼴행렬)에 대한 추가 탐구 – 김**(2020****67)
내용 정리 : ERO(Elementary Row Operation)은 행연산을 위한 기본 연산자로, Replacement(대체), Scale(곱, Scalar배), Interchange(상호교환)이 있다. Replacement는 한 행을 다른 행의 배와 연산하여 대체하는 연산자이다.(R1+kR2 --> [1]) Scale은 행의 값을 특정한 값으로 곱하는 것이다.(kR1 --> [1]) Interchange는 두 개의 열을 서로 맞바꾸는 것이다.(R1 <--> R2) 이러한 세 가지 연산자들을 이용하면 RREF를 얻어낼 수 있으며, 기본 행 연산자를 적용하기 전과 후의 행렬은 동등(Row Equivalent)하므로 해집합(Solution Set)이 같다.
3. Gram-Schmidt 정규직교화 방법
Gram-Schmidt 정규직교화 방법을 처음 봤을 때, 고등학교 때 배웠던 정사영이 떠올랐다. 실제로 정사영을 구하는 방법을 반복적으로 계산하기 때문에 방법 자체는 외우기 편하다.
Gram-Schimidt 정규직교화 방법은 다음과 같다.
집합 S={x1, ... , xn}을 Rn의 임의의 기저라 하자. 그러면 S로부터 얻어지는 정규직교기저가 존재한다.
먼저 Rn의 기저 S로부터 직교집합 T={y1, ... , yn}을 다음과 같은 단계로 계산한다.
1. y1 = x1
2. y1에 의해 생성되는 부분공간을 W1이라고 하고
![]()
3. y2에 의해 생성되는 부분공간을 W2이라고 하고
![]()
...
4. n단계까지 다음의 방법을 반복한다.
![]()
위의 단계로부터 얻어지는 T = {y1, y2, ..., yn}은 서로 직교인 직교집합이다.
의 과정으로 각각의 크기를 1로 만들면, {z1, z2, ... , zn}은 Rn의 정규직교기저이다.
4. 이차곡선과 원뿔곡선
이차곡선의 기본 형태는
이다. 이는 두 변수 x, y를 갖는 이차곡선이라는 뜻이다. 2차원에서 표현해야 하므로 변수가 2개 쓰였으며, 이차항과 일차항 그리고 상수가 있을 수 있기 때문에
이다.
이를 행렬로 표현하면 다음과 같다.
![]()
여기까지는 고등학교에서도 대부분 배운 내용이고, 그나마 행렬로 바꾸는 법을 새롭게 배운 수준에 그친다.
하지만 원뿔곡선이라는 개념이 새로웠다. 원뿔곡선이란 평면이 원뿔과 교차될 때 생기는 곡선들을 일컫는 말로, 여기서 원뿔은 정확히는 모래시계처럼 되어있다.
실제로 원뿔과 평면을 어떻게 겹치느냐에 따라 원, 포물선, 타원, 쌍곡선이 생긴다.
또한 이차곡선의 방정식으로 만들어지는 그래프가 곡선이 아닌 한 점, 한 직선 또는 한 쌍의 직선으로 이루어져있거나 아예 존재하지 않을 때가 있다. 그러한 그래프들을 퇴화 원뿔곡선이라고 한다.
밑의 그림은 실제 원뿔곡선들이 어떻게 생기는지 보여주는 그림이다.
이렇듯 그리 큰 비중을 가지지 않는 개념이지만 이차곡선이라는 개념의 연장선이라 볼 수 있는 원뿔곡선이라는 것은 내게 있어 신선한 충격이였다.
5. 역행렬
어떤 행렬 A에 대하여 AB = In = BA를 만족하는 행렬 B가 있다면, B=A-1을 역행렬이라고 한다.
개념은 매우 단순하기 그지없으나, 이 행렬을 구하는 것은 상당히 어렵다. 단순히 때려맞추는 수준으로는 구하는 것 자체가 불가능에 가깝다.
그렇다면 역행렬을 그나마 쉽게 구할 수 있는 방법이 있을까? 다행히도 있긴 하지만 행렬 A가 n*n 크기의 정사각행렬이여야 한다는 제한조건이 달려있다. 그 조건이 성립할 때, 크게 2가지가 있다.
첫 번째는 RREF[A: I]를 이용하는 것이다. RREF[A: I]을 계산한 후 생기는 n * 2n 행렬에서, I 부분에 있는 행렬이 곧 A의 역행렬이라는 것이다.
첫 번째 방법으로 역행렬을 구하는 코드는 아래와 같다.
A = matrix([[1, -1, 2], [-1, 0, 2], [-6, 4, 11]])
I = identity_matrix(3)
print("A =")
print(A)
print()
AI = A.augment(I).rref() # 첨가행렬 [A : I] 의 RREF 구하기
print("RREF[A: I] =")
print(AI)
print()
A2 = AI.submatrix(0, 3, 3, 3) # A.submatrix(a, b, c, d)
# 행렬의 (a+1, b+1) 성분부터 c개의 행, d개의 열로 이루어진 부분행렬 구하기
print("inverse of A =")
print(A2)

두 번째 방법은 수반행렬을 이용해 역행렬을 구하는 것이다.
수반행렬이란, n차의 정사각행렬 A=[aij]의 성분 aij에 대한 여인사를 Aij라고 할 때, 행렬 [Aij]를 A의 수반행렬이라고 한다. 기호로 나타내면 adjA이다.
이렇게 수반행렬을 만들고 난 후 A의 역행렬을 구할 수 있다. 단, A는 가역행렬이여야 하는 조건이 달려있다. 수반행렬을 이용해 A의 역행렬을 구하는 공식은 다음과 같다.
![]()
이를 구하는 코드와 그 결과는 아래와 같다.
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) # 수반행렬을 이용한 역행렬 구하기

이와 같이 역행렬을 그나마 쉽게 구하는 방법 2가지가 있음을 알게 되었다. 하지만 이 방법을 쓰기 위해선 A가 정사각행렬이여야 함을 물론, 심지어 2번째 방법은 가역행렬이여야 한다는 조건까지 붙어서 일반적으로 쓰기에는 조금 난감한 방법들이다.
그 외에도 특이값 분해를 이용해서 구할 수도 있지만 이 또한 정사각행렬에 가역행렬이라는 조건이 붙어있다. 어느 하나 만만하지 않다. 그래도 역행렬을 구할 수 있는 방법이 있다는 게 다행이라고 생각한다.
6. 뉴턴 방법(Newton's Method)
실숫값 함수의 해(근사값)을 그래프(f(x))와 도함수(f'(x))를 이용해 어림짐작으로 쉽게 구하는 방법이다. 단, 처음 시작할 때 설정하는 초깃값이 r에 가깝지 않거나 적당하지 않을 경우 실제 구하려는 근과는 멀리 떨어진 잘못된 값을 구하게 될 수 있으니 주의할 것.
근사값을 구하는 과정은 다음과 같다.
1. 실제 구하려는 근이 r이라 할 때, r에 적당히 가까운 값인
을 가정한다.
2.
으로
를 구한다.
3.
을 여러 번 반복하여 r에 매우 가까운
을 구한다. 이때 n은 적당히 큰 시도 횟수이다.
4. 마지막으로 구한
이 실제 구하려는 근과 극히 가까운 근사값이다.
7. 이변수 함수 극값 판별
우선 f(x, y)의 이계도함수를 이용해 판별하는 방법이 있습니다. 방법은 다음과 같습니다.
(1) fxx(a,b)*fxy(a,b) – {fxy(a,b)}^2 > 0 일 때, fxx(a,b) > 0 이면 극솟값, fxx(a,b)<0이면 극댓값이다.
(2) fxx(a,b)*fxy(a,b) – {fxy(a,b)}^2 < 0 이라면 안장점이다.
하지만 이를 이용하지 않고 헤시안 행렬을 이용하는 방법도 있다. 헤시안 행렬을 이용해 극값을 판별하는 방법은 다음과 같다.
(1) f의 헤시안 행렬을 구한다.
(2) f의 헤시안 행렬에서 모든 고윳값을 구한다.
(3) 고윳값들이 모두 양수이면 그 때의 f(a, b)는 극솟값이고, 모두 음수이면 극댓값이며, 섞여있다면(부정부호) 그 점은 안장점이다.
9. 조건부 확률과 몬티홀 문제
몬티홀 문제란, 3개의 문 중 단 하나에만 선물이 있고 나머지 둘은 꽝인 상태에서 선물을 맞추는 문제이다. 다만 처음 선택했을 때, 진행자가 선택되지 않은 두 문 중 꽝 하나를 공개한 후 선택을 바꿀 것인지 아닌지를 묻는다. 이러한 규칙 하에, 과연 선택을 바꾸는 것과 바꾸지 않는 것 중 무엇이 더 이득인지 구하는 문제이다.
그 답은 ‘바꾸는 것이 이득’이다. 만약 선택을 유지한다면 선물에 당첨될 확률이 처음의 확률인 1/3이 되겠지만, 만약 선택을 바꾸었을 때 선물을 받을 확률은 (2/3) * (1/(3-2)) = 2/3이다. 따라서 선택을 바꾸는 것이 확률적으로 이득이다.
만약 문이 n개이며 선물이 있는 문은 여전히 1개라고 하자. 이때의 선물에 당첨된 확률을 구해보자. 선택을 안 바꾼다면 1/n이고, 선택을 바꾼다면 (n-1)/n * (1/n-2) = (n-1) / (n*(n-2))가 된다. 즉, 선택을 바꾸었을 때 선물을 받을 확률이 안 바꾸었을 때보다 1/(n*(n-2)) 만큼 크다.
이 풀이는 조건부 확률을 이용한 것이다. 사실 이 문제를 처음 들었을 때는 별 차이가 있나 싶었지만, 확률을 배운 후에는 정말 큰 차이가 있음을 알았다.
10. 대수의 법칙과 카지노
우선 대수의 법칙에 대해 알아보자. 시행 횟수를 n, 특정 사건 A가 일어날 횟수를 k라 하면, n이 한없이 커질 때 통계적 확률 P(A)는 수학적 확률 a에 가까워진다. 즉, 시행 횟수가 커질수록 통계적 확률이 수학적 확률과 거의 같아지게 된다는 말이다. 카지노는 이를 이용해 막대한 수익을 벌어들이고 있다.
카지노 또한 돈을 벌기 위한 기업이다. 하지만 도박의 특성상 수익을 벌어들일지 아닐지 순전히 운에 달려 있을 것이라 생각할 지도 모른다. 실제로는 그렇지 않다. 수학적으로, 카지노가 돈을 벌어들일 확률은 돈을 잃을 확률보다 근소하게 크다. 수많은 사람들이 무수한 도박을 하므로 시행 횟수는 기하급수적으로 커지기 때문에 승률이 수학적 확률과 거의 유사해진다. 즉, 시행 횟수가 커질수록 카지노는 수익을 반드시 벌어들이게 된다. 이것이 카지노가 계속해서 영업이 가능한 이유이다. 확률을 이용해 수익을 벌어들이는 것이 가능하다는 걸 처음으로 깨닫게 되었다.
11. 조합
서로 다른 n개에서 중복 없이 k개를 택하는 방법의 수는 다음과 같다.
![]()
조합이 쓰이는 경우는 대게 어떠한 사건의 가짓수를 구하는 경우가 많다. 이러한 경우를 이용하는 직업들은 무수히 많지만 의외의 직업도 있다. 불꽃 연출가처럼, 예술가들 중 여러 경우의 수를 고려해 극적인 효과를 일으키기 위해 부단히 노력하는 사람들이 있다.
12. 심프슨의 역설
일부의 면만 보여주는 확률을 믿으면 안 된다는 것을 단적으로 보여주는 예시인 역설이다.
이 역설의 예시로, 두 야구 선수 A와 B의 승률 비교가 있다.
|
|
투수 A |
투수 B |
||||
|
승 |
패 |
승률 |
승 |
패 |
승률 |
|
|
전반기 |
5 |
2 |
71.43% |
3 |
1 |
75% |
|
후반기 |
4 |
3 |
57.14% |
7 |
5 |
58.33% |
|
시즌 전체 |
9 |
5 |
64.29% |
10 |
6 |
62.5% |
이처럼 전반기와 후반기 모두 투수 A보다 투수 B가 승률이 더 높지만, 막상 시즌 전체에서 보면 투수 A가 투수 B보다 승률이 더 높다는 역설적인 상황이 발생한다. 이는 확률 관련 거짓 명제들 중
를 참이라고 착각했기 때문에 발생하는 것이다.
13. 조건부 확률과 제비뽑기
상당히 유명할 수도 있지만 의외로 모르는 사람이 많은 문제이다. ‘제비뽑기를 할 때 언제 하는 것이 가장 유리한가?’이다. 이 문제의 답을 알기 위해서는 꽝과 당첨의 각 개수와 총 제비의 개수를 알아야 한다.
이 문제의 답은 당연하게도 ‘언제 뽑든 똑같다’이다. 나중에 뽑았을 때의 확률을 구할 때는 앞에서 꽝 제비를 뽑았는지 당첨 제비를 뽑았는지도 고려해서 확률을 구해야 한다. 즉, 조건부 확률의 계산법으로 구해야 하며 실제로 확률을 구해보면 처음 뽑았을 때랑 전혀 다를 게 없다는 걸 알고 있다. 사람들은 나중에 뽑는 것이 불리하다고 종종 말하고는 하지만, 수학적으로 계산해보면 실제로는 아무 상관 없다는 걸 알 수 있다.
14. 표본평균과 여론조사
여론조사를 하는 집단은 많으며, 대표적으로 방송사에서의 여론조사가 있다. 통계에서 표본의 자료수가 부족하다면 자료 분석의 결과의 오차는 클 수밖에 없다. 하지만 표본평균의 이론에 따르면 모집단이 충분히 크면 그 분포는 정규분포에 가까워진다는 것이다. 정규분포가 어떤 형태로 구성되어 있는지는 이미 증명이 되어 있으므로, 조사한 자료의 분포가 정규분포에 가까울수록 그 자료의 경향을 더욱 정확히 알 수 있으며 신뢰도 또한 높아진다.
따라서 여론조사를 할 때는 표본평균과 모집단, 그리고 정규분포와의 유사도가 무엇보다도 중요하다. 짧게는 정치적 문제에서 넓게는 기업 경영, 날씨 예측 등에서 쓰이기 때문에 여론조사의 정확도를 올리기 위해 현재에도 많은 사람들이 노력하고 있다. 표본평균은 마치 규칙이 없는 것처럼 보이는 자료들 사이에서도 규칙을 찾아내기 때문에 상당히 유용하다.
15. 확률 및 통계와 보험 계리사
보험 계리사는 보험 사업 전반에 걸친 수리 및 통계 분석 업무를 하는 직업으로, 국내 사회 제도와 경제 실정에 맞는 보험 상품을 개발하고 운용하는 것이 일이다. 이 일을 할 때 가장 중요한 것 중 하나가 바로 보험료를 결정하는 것이다. 보험료를 결정할 때, 지금까지의 이용 고객의 데이터를 분석해 고객들이 보험비를 청구하는 비율을 보고 보험료를 인상할지 동결할지 아니면 내릴지를 결정할 수 있다. 또한 개인 고객에 대해서도 사고가 발생할 확률을 계산해 낸 후, 그 결과를 보험료 결정에 반영한다. 이처럼 확률과 통계는 경영, 특히 예측할 수 없는 경우에 더더욱 중요한 가치를 지니게 된다.
16. 인공지능의 학습
인공지능의 학습의 종류는 총 3가지가 있다.
● 지도학습: 어느 정도의 기준이 주어진 상태에서 자료를 분류해가며 기준을 보완하며 학습하는 것
● 비지도학습: 기준이 주어지지 않은 상태에서 자료들을 분류해가며 새로운 기준을 찾아내 그 기준을 바탕으로 학습하는 것
● 강화학습: 학습을 진행하면서 현재 할 수 있는 행동들 중 최대의 보상을 얻거나 최소의 위험을 감수하는 방향으로 학습하는 것
여기서 중요한 것은 강화학습이 지도학습의 하위 개념이 아니라는 것이다. 두 학습 모두 기준이 존재하기에 비슷해 보이지만, 가장 중요한 것은 지도학습에는 보상(reward)이라는 개념이 존재하지 않는 반면, 강화학습에는 보상이 존재한다는 것이다. 이 보상이라는 것 때문에 지도학습과 강화학습은 서로 구분된다는 것이다.
(3) 담당교수 또는 다른 학생들이 QnA에 업로드한 10개 이상의 자신의 Comment or Answer 를 주시오.
Q : 행렬
와
의 수학적 관계
A : 김민수 학우가 두가지 행렬 사이의 수학적인 상관관계에 대하여 질문을 하였는데,
를 RREF를 이용하여 구한 해집합이 기존의 해집합과 동일함을 엄밀한 증명이 가능할 것 같아서 방법을 고민하였고, 결과적으로 세가지의 엄밀한 증명을 얻을 수 있었다.
느낀 점 : 직관적으로 이해하고 넘어갈 수도 있는 문제였으나, 잠시 머물러서 생각을 깊이한 결과 RREF에 대해 더욱 더 깊이 이해할 수 있는 계기가 되어 아주 흥미로웠다. 학문을 공부할 때 종종 이러한 생각에 잠기게 되어 때로는 진도를 못 맞추기도 하지만, 이런 생각이 성과를 얻을 때에 얻게 되는 성취감이 말로 표현할 수 없기 때문에 계속 이러한 습관을 갖게 되는 것 같다. 신속함과 정확함 신중함을 골고루 갖추어 더욱 더 경쟁력을 갖추어야겠다고 다짐해본다.
Q : 여러 차례의 WebEx 미팅 요약
A : 교수님께서 매주 금요일 10:30에 WebEx 미팅을 열어주시고 한 주간 학습 활동에 대한 피드백, 앞으로의 수업 운영 방향을 공유해주시는데, 그 내용에 대해서 정리하고 요약한 것을 여러 차례 진행하였다.
느낀 점 : 먼저는 내용을 요약 정리하면서 스스로 무엇을 어떻게 챙겨가야겠다는 것이 정리가 되어서 매우 좋았다. 정리가 안된 채로 있으면 쉽게 잊어버리기 마련인데, 다시 정보를 찾아가도 다 챙기지 못하고 빠뜨리기 마련이기에 이 정리작업은 스스로에게 매우 의미가 있었다. 나아가 부득이한 사정으로 WebEx 미팅에 참여하지 못한 학생들에게 수업 공지를 요약 전달할 수 있어서 보람이 있는 작업이었다.
Q : 벡터공간의 10가지 성질에 대하여
A : 벡터공간을 충족하기 위해서 10가지 성질을 만족하여야 하며, 벡터공간의 부분집합이 벡터공간이 되어 부분공간이 되려면 10가지 성질 모두를 보이지 않고 두가지만 보이면 된다는 것을 알게 되었다.
느낀 점 : 수학교육과를 전공하신 어머니에게 들은 바가 있었는데, 벡터가 엄밀히 말하면 방향과 크기를 가진 물리량이라고만 할 수는 없다는 것이다. 벡터공간을 충족하는 복잡한 성질이 있다고 하였는데 처음에는 잘 와닿지 않았으나 의외로 어렵지 않은 성질들 10가지라는 것을 깨달았다. 우리가 수학에서 다루는 대다수의 대상이 벡터에 해당한다는 것을 깨닫고 매우 흥미로웠다.
Q : Gram-Schmidt 정규직교화 알고리즘 정리하기
A : Gram-Schmidt 정규직교화 알고리즘이란, 주어진 벡터의 기저를 정사영을 활용하여 같은 공간을 span하는 정규직교기저를 순차적으로 구해나가는 과정이다. 주어진 벡터의 기저 중 한 벡터를 골라 그 벡터가 span하는 1차원 부분공간을 생각하고, 다른 한 벡터를 그 부분공간에 정사영 내리면 두 개의 직교기저를 구할 수 있고 두 개의 직교기저가 2차원 부분공간을 span한다. 또다른 한 벡터를 이 2차원 부분공간에 정사영 내리면 세 개의 직교기저를 구할 수 있다. 이렇게 확장시켜 나가면 직교기저를 구할 수 있고, 각 기저를 norm으로 나누면 정규직교기저가 된다.
느낀 점: Gram-Schmidt 정규직교화 알고리즘이 내용이 길어서 처음에 잘 들어오지 않았다. 하지만 이것을 스스로 서술해가면서 약한 부분을 확인하며 보완하고 그 서술한 것을 확인받으면서 이 개념에 대해 확실히 이해할 수 있게 되었고 머릿속에 확실한 지식으로 자리잡게 되어 좋았다.
Q : QR분해하기
A : Gram-Schmidt 정규직교화 알고리즘을 이해하였으므로 이를 활용하여 임의의 행렬을
분해할 수 있다. 이 때,
의 열벡터는 정규직교기저가 되며
은
의 열벡터의 정규직교기저의 각 벡터에 대한 정사영으로 성분을 이룬다. orthogonality에 의해
은 상삼각행렬이 되며,
를 좀 더 다루기 쉬운 상삼각행렬을 이용하여 분석할 수 있다는 의미가 된다.
느낀 점 : Gram-Schmidt 정규직교화 알고리즘을 깨달았을 때 바로 따라오는 개념이기에 상당히 의미가 있다고 생각한다. 일반적인 행렬은 분석하기가 쉽지 않은 경우가 많은데 상삼각행렬만 되어도 그 수고가 훨씬 덜어지기 마련이다. 데이터의 수가 아주 많을 때
분해가 떠오르는 것만으로도 큰 경쟁력이 될 것이라고 생각한다.
Q : 벡터에 대한 Notation 바로잡기
A : 벡터에 대한 Notation을 잘못 사용하고 있어 교수님에게 지적을 받았다. 과거에
라고 사용한 적이 있었는데 틀린 표현이라고 하셔서
와 같이 볼드체로 고쳐서 사용했는데 단순한 이탤릭채가 아니라 반드시 볼드체 로마자로 변환하여
로 사용해야 함을 깨달았다.
느낀 점 : 곳곳에서 가르치는 벡터에 대한 Notation이 너무 제각각이다. 고등학교 때는
또는
와 같이 사용하였는데 벡터를 처음 배운지 한참 후에야 올바른 Notation을 깨달았다는 것이, 아무도 정확하게 지적해준 사람이 없다는 것이 놀라웠다. 누군가 Notation을 잘못 사용하고 있는 경우 또한 바로잡아주는 것이 나의 도리라고 생각한다.
32. 주성분 분석
주성분 분석(Principal Component Analysis, PCA)는 가장 널리 사용되는 차원 축소기법 중 하나로, 원 데이터의 분포를 최대한 보존하면서 서로 직교하는 새 기저(축)을 찾아, 고차원 데이터들을 선형 연관성이 없는 저차원 공간으로 변환한다. 이때, 계산은 주로 행렬의 고윳값 분해 또는 특이값 분해(SVD)를 사용한다.
PCA는 기존의 변수를 일차 결합하여 서로 선형 연관성이 없는 새로운 변수, 즉 주성분(PC) 들을 만들어 낸다. 첫 번째 주성분 PC1이 원 데이터를 가장 많이 보존하고, 그 다음으로 주성분 PC2, PC3 순으로 보존한다.
33. PC Score


34. 신경망(Neural Network)

신경망은 신경계의 기본 단위인 뉴런을 모델화 한 것이다.

하나의 인공 뉴런에서는 다수의 입력 신호 x_i를 받아서 하나의 신호를 출력한다. 이는 실제 뉴런에서 전기신호를 내보내 정보를 전달하는 것과 비슷하다. 이때 뉴런의 돌기가 신호를 전달하는 역할을 인공 뉴런에서는 가중치(weight) w_i가 그 역할을 한다. 각 입력신호에는 고유한 가중치가 부여되며 가중치가 클수록 해당 신호가 중요하다고 볼 수 있다.
뉴런에서 임계값(threshold) 이상의 자극이 주어져야 감각이 반응하는 것처럼, 인공 뉴런에서도 다수의 입력신호가 주어지면, 미리 부여된 가중치와 계산을 한 후 그 총합이 정해진 임계값을 넘으면, 1을 출력하고 넘지 못하면 0 (또는 –1)을 출력한다. 이 때 출력을 결정하는 함수를 활성화 함수(activation function) 라 한다.
신경망은 제대로 예측할 때 까지 많은 데이터를 필요로 하며, 또한 입력층과 출력층 사이에 많은 은닉층을 둘 수도 있다. 이와 같이 은닉층이 여러 개 있는 인공신경망을 심층신경망(deep neural network)라 하며, 심층 신경망을 학습하기 위한 기계학습 기법을 딥러닝(deep learning)이라 부른다. 은닉층이 여러개 있는 경우에도 마찬가지로 오차 역전파법을 이용하여 그 이전 층에서 전파된 오차로부터 경사하강법을 적용하여 가중치를 갱신할 수 있다.
35. 오차 역전파(back propagation)법
입력값과 정답을 알고 있는 데이터셋이 있다고 하면, 데이터셋을 잘 판단하도록 신경망의 가중치를 조정해야한다. 이때, 초기에 임의의 가중치를 부여해 놓고, 주어진 데이터로부터 신경망을 이용하여 얻은 예측값과 미리 알고 있는 정답간의 오차를 줄이는 방향으로 가중치를 점차 갱신해 나간다. 이때 계층 간의 각각의 연결이 오차에 영향을 주는 정도에 비례해서 오차를 전달한다. 오차 역전파법은 이 방법의 대표적인 예이다.
(예) Q : [Discussion] 알고리즘과 수학은 왜 배워야 하는가?
A : 1. 알고리즘의 작동환경에 대해 많은 신경을 써야한다. 오류가 생겼을 때, 사용자가 정확히 어떤 부분에서, 어떤 오류가, 왜 발생하는지를 파악해야 그것을 고칠 수 있기 때문이다.
2. 컴퓨터에게 알맞은 알고리즘을 짜는 것도 중요하다. 사람에게 적합한 알고리즘과 컴퓨터에게 적합한 알고리즘에는 차이가 있을 수 있기 때문이다.
3. 수학적인 기초가 없더라도 이미 만들어진 tool들이 존재하는 tool box를 사용하는 것은 가능하다. 그러나 그것들을 이해하고, 새로운 tool이나 나만의 AI를 만들기 위해서는 그에 맞는 수학적 지식이 반드시 필요하다.
느낀 점 : 왜 내가 이 수업을 듣고 있는지에 대해 돌아보게 만드는 좋은 discussion이었다. 학부연구생으로서 공부하고 계시는 분의 경험담을 들으니 더 열심히 해야겠다고 생각했다. 다양한 경험을 한 분들이 의견을 공유해주시니까 큰 도움이 된다고 느꼈다.
Q : [Discussion] 베이즈 정리, 조건부 확률과 몬티 홀 문제
A : 몬티홀 문제란 세 개의 문들 중에 하나를 선택하여 문 뒤에 있는 선물을 가질 수 있는 게임쇼에 참가했다. 한 문 뒤에는 자동차가 있고, 나머지 두 문 뒤에는 염소가 있다. 이때 어떤 사람이 예를 들어 1번문을 선택했을 때, 게임쇼 진행자는 3번문을 열어 문 뒤에 염소가 있음을 보여주면서 1번 대신 2번을 선택하겠냐고 물었다. 참가자가 자동차를 가지려할 때 원래 선택했던 번호를 바꾸는 것이 유리할까? 라는 내용이다.
1. 경우의 수를 하나하나 따져보면, 처음의 선택을 바꾸는 것이 유리하다.
2. 조건부 확률이나 베이즈 정리를 적용했을 때도 선택을 바꾸는 것이 유리하다.
2. 문의 개수를 훨씬(100만개까지) 늘려보면, 직관적으로 생각했을 때도 처음의 선택을 바꾸는 것이 유리함을 알 수 있다.
3. ‘선택하지 않은 문들 중 염소가 있는 문 하나를 공개해주겠다. 처음 선택을 바꿀 것인가?’ 대신 ‘선택을 바꾼다면 처음에 선택하지 않은 두 문 뒤에 있는 모든 물건들을 주겠다. 처음 선택을 바꿀 것인가?’라고 생각한다면, 즉 선택지를 조금 다르게 해석하면 확률 계산도 할 필요 없이 문을 두개 고른다는 생각에 쉽게 선택을 바꿀 수 있다.
느낀 점 : 몬티 홀 문제는 정말 유명하다. 그에 대한 해설도 당연히 잘 알려져 있다. 하지만 조건부확률과 베이즈 정리에 대해 처음 수업에서 배웠을 때 나는 이 문제를 떠올리지 못했다. 질문자님의 새로 배운 내용과 알고 있는 지식을 연결하는 능력이 뛰어나다고 느꼈다.
Q : 데이터 사이언스에서 선형 회귀와 같은 모델에서 최소제곱해를 구하여 오차를 최소화 하는 방식으로 파라미터를 최적화를 하는 것으로 알고 있는데요.
보통 데이터 셋은 매트릭스 형태로 되어 있고, 이는 선형 연립 방정식으로 풀 수 있다고 생각을 합니다.
이 때,
를 최소로 하는 해를 구하는 것이 선형 연립 방정식이 해를 갖지 않을 때에 해당하는 것인가요?
기존의 이해 : 선형 방정식이 해를 갖지 않을 때만 Least Square 방법을 사용하여 최적해를 찾는 것이라고 생각
Finalized answer : 연립 1차방정식의 행렬이 정사각행렬이고 가역행렬이면, 그 경우 최소제곱해는 바로 그 유일해가 됩니다. 따라서 Least Square 해법은 모든 연립방정식에 대해 최적해 (또는 유일해가 존재 할 때는 유일해)를 구하는데 적용 가능 -> 해가 없을 때 or 유일해 존재할 때 모두 적용 가능
...
(예) Q : [Discussion] 알고리즘과 수학은 왜 배워야 하는가?
A : 1. 알고리즘의 작동환경에 대해 많은 신경을 써야한다. 오류가 생겼을 때, 사용자가 정확히 어떤 부분에서, 어떤 오류가, 왜 발생하는지를 파악해야 그것을 고칠 수 있기 때문이다.
2. 컴퓨터에게 알맞은 알고리즘을 짜는 것도 중요하다. 사람에게 적합한 알고리즘과 컴퓨터에게 적합한 알고리즘에는 차이가 있을 수 있기 때문이다.
3. 수학적인 기초가 없더라도 이미 만들어진 tool들이 존재하는 tool box를 사용하는 것은 가능하다. 그러나 그것들을 이해하고, 새로운 tool이나 나만의 AI를 만들기 위해서는 그에 맞는 수학적 지식이 반드시 필요하다.
느낀 점 : 왜 내가 이 수업을 듣고 있는지에 대해 돌아보게 만드는 좋은 discussion이었다. 학부연구생으로서 공부하고 계시는 분의 경험담을 들으니 더 열심히 해야겠다고 생각했다. 다양한 경험을 한 분들이 의견을 공유해주시니까 큰 도움이 된다고 느꼈다.
Q : [Discussion] 베이즈 정리, 조건부 확률과 몬티 홀 문제
A : 몬티홀 문제란 세 개의 문들 중에 하나를 선택하여 문 뒤에 있는 선물을 가질 수 있는 게임쇼에 참가했다. 한 문 뒤에는 자동차가 있고, 나머지 두 문 뒤에는 염소가 있다. 이때 어떤 사람이 예를 들어 1번문을 선택했을 때, 게임쇼 진행자는 3번문을 열어 문 뒤에 염소가 있음을 보여주면서 1번 대신 2번을 선택하겠냐고 물었다. 참가자가 자동차를 가지려할 때 원래 선택했던 번호를 바꾸는 것이 유리할까? 라는 내용이다.
1. 경우의 수를 하나하나 따져보면, 처음의 선택을 바꾸는 것이 유리하다.
2. 조건부 확률이나 베이즈 정리를 적용했을 때도 선택을 바꾸는 것이 유리하다.
3. 문의 개수를 훨씬(100만개까지) 늘려보면, 직관적으로 생각했을 때도 처음의 선택을 바꾸는 것이 유리함을 알 수 있다.
4. ‘선택하지 않은 문들 중 염소가 있는 문 하나를 공개해주겠다. 처음 선택을 바꿀 것인가?’ 대신 ‘선택을 바꾼다면 처음에 선택하지 않은 두 문 뒤에 있는 모든 물건들을 주겠다. 처음 선택을 바꿀 것인가?’라고 생각한다면, 즉 선택지를 조금 다르게 해석하면 확률 계산도 할 필요 없이 문을 두개 고른다는 생각에 쉽게 선택을 바꿀 수 있다.
느낀 점 : 몬티 홀 문제는 정말 유명하다. 그에 대한 해설도 당연히 잘 알려져 있다. 하지만 조건부확률과 베이즈 정리에 대해 처음 수업에서 배웠을 때 나는 이 문제를 떠올리지 못했다. 질문자님의 새로 배운 내용과 알고 있는 지식을 연결하는 능력이 뛰어나다고 느꼈다.
Ch 3장. PBL Participation/Activity Part
(3장. PBL 참여 부분 ) < Final OK by SGLee only >
(온라인강의에서는 Final OK by TA, or Final OK by classmate 포함)
한 학기 동안 QnA 통하여 논의에 참여했던 내용에 자신도 참여했던 것 모두와 기타 자신이 제공한 유의미한 정보 또는 그것에 자신이 참여한 부분을 모두 아래에 정리하시면 됩니다. (20점)
@@ @@이라고 합니다.(자기소개)
작성자 : @@(2013****84)작성일 : 2020년 3월 11일 오후 7:09
조회수 : 40
과거 2017년에 이상구교수님의 선형대수학을 수강한 적이 있었습니다.
학습 자료를 방대하게 제공해주셔서 자칫 부담을 느낄 수도 있는 강좌였지만, 질문과 호기심을 바로바로 해소할 수 있는 시스템이 마음에 들어서 열심히 쫓아갔고 지금까지 들은 수업 중에 가장 내용이 많이 기억에 남는 수업이었습니다.
작년에 인공지능개론 수업을 뭣 모르고 신청하였었는데 다소 지루한 이론수업이었는데다 소프트웨어학과 학생들과의 경쟁 속에서 크게 흥미를 느끼지 못하고 지나간 경험도 있었습니다. 이번 수강신청 강좌에서 교수님의 인공지능을 위한 기초수학을 발견하고 참 듣고 싶었었는데 온라인 수강신청 일정을 착각하여 오늘 3월 11일에야 신청하고 부랴부랴 듣고 있네요..^^;; 교수님의 교육방법론이 이미 익숙한데 다시금 이것을 접하는 것이 너무나 반갑고 좋습니다.
제가 누구에게나 추천하고싶은 수업형태인만큼 이번 강좌에서도 열심히 배워가겠습니다. 감사합니다.
이상구(LEE SANGGU)3월 11일 오후 10:06
신@@군, 반가워요^^♡♡ 이번 학기에도 인공지능에 필요한 수학 지식에 대하여 많이 얘기하고, 좋은 성적 취득해 가세요^^Best wishes from이상구 교수***
■ 2017년 ... LA April PBL보고서를 마치고
3, 4월 : 대학에 들어와서 처음 접한 수업 방식이라 처음에 적응도 힘들고 많이 낯설었던 것이 사실입니다. 교수님께서 예습, 복습하라고 동영상 강의도 적극적으로 올려주시고 하셨지만, 충분히 활용 못한 부분도 많았습니다. 기존에 해오던 공부방식대로 책을 읽고 혼자서 이해하려고 한 습관을 떨치기가 쉽지 않았는데, 몇 번 활용해보니 단시간을 들여 빠른 이해를 가져올 수 있어서, 이 Flipped/PBL 방식의 수업이 왜 좋은지 깨달을 수 있었습니다. 그리고 기존에 수학이나 과학에 있어서 궁금한 것들을 교수님, 선생님에게 질문하고 답변 받는 활동을 좋아하는 바 있었기에 QnA를 통해 적극적으로 토론을 벌이는 이 운영방식은 굉장히 좋고 저에게 맞았습니다. 초반에는 관심있는 문제 소재가 아니라던지, 당장에 이해하기 어렵고 한 부분은 질문 답변을 조금 꺼리기도 한 것이 사실이었습니다만, 레포트를 작성하는 과정에서 조금이라도 더 관심을 갖고 답변에 참여해보자는 마음으로 미룬 답변, 관심 가질만한 답변을 찾아보며 참여를 하였습니다. 지나고 보니, 그 문제 소재에서만큼은 누구에게도 뒤지지 않을 대가가 되었던 것 같습니다.지금까지의 학습상황을 보았을 때, 중간중간에 개념적인 구멍이 눈에 조금 띄는 것도 있습니다. 남은 기간 QnA를 활용하고 적극적으로 조활동을 하고, 동영상 강의를 활용하면서 메워나가리라 생각합니다. 그리고 기말고사 범위에서는 내용이 더욱 복잡해지고 어려워질텐데, 이 수업의 장점을 더욱 더 최대한 활용하여 놓치는 개념 없이 완벽하게 잡고 가리라는 마음이 생겼습니다. 이제라도 익숙해졌으니, 기말고사까지 최선을 다해 이 수업의 장점을 활용하겠습니다. 항상 감사합니다.
5월 : 중간고사 끝나고 초반에 의욕적으로 7단원을 확실히 마스터해야겠다는 생각으로 예습, 복습, Q&A에 성실하게 참여했습니다. 후반으로 갈수록 ... 많이 남습니다. ... 이제 이 강좌도 마지막을 향해 달려가고 있는데, 강좌가 끝나더라도 이 수업에서 배웠던 학습방식을 토대로 향후 학업에도 큰 도움을 얻을 수 있을 것 같습니다.
6월 : 개인적으로 ... 힘들고 어려웠습니다. ... 그래도 선형대수학 수업방식을 통해 앞으로 대학공부를 어떻게 해 나가야겠다는 감을 잡게 되어 좋았습니다.
신@@(2013****84)3월 11일 오후 11:42
네넵 열심히 참여하겠습니다ㅎㅎ감사합니다
* RREF 계산 방법에 대한 질문 (3월 12일 1주차에 작성됨, 3월 30일 Final OK by TA)
* 고윳값에 대한 질문(수정입니다) (3월 24일 3주차에 작성됨, 4월 3일 Final OK by TA)
* 고윳값 분해와 특이값 분해의 차이 (4월 3일 4주차에 작성됨)
* 특이값 분해 Sage코드 오류 (4월 3일 4주차에 작성됨)

이상구(LEE SANGGU)3월 12일 오후 8:32
1. 일반 행렬을 RREF로 바꾸는 계산방법은 아래를 보시면 됩니다.
2. 그 방법과 과정을 우리는 손으로 하는 대신 코드 를 이용하여 소개 한 것입니다. 자세한 과정은 내가 웹에 올려놓은 자료와 내가 쓴 무료 전자 선형대수학 교재에 있으미 그것을 참고하세요^^
[Linear Algebra. Korean]
(디지털 교과서) http://matrix.skku.ac.kr/LA-K/
PBL - Flipped Learning http://youtu.be/Mxp1e2Zzg-A
Lecture 1 Introduction http://youtu.be/w7IzR4nGa3Q
(전자 교과서) http://matrix.skku.ac.kr/2015-Album/Big-Book-LinearAlgebra-Eng-2015.pdf
행렬을 RREF로 바꾸는 계산방법은
연립방정식을 소거법 으로 푸는 법 입니다.
그 과정을 Elementary Row Operation 들 이라고 하고, 이는 세가지 종류의 Elementary Matrix 들을 곱해서 얻어집니다.
곧 추가 설명 보태줄께요^^
이상구(LEE SANGGU)3월 12일 오후 10:07
http://matrix.skku.ac.kr/2018-album/LA-Sec-3-3-lab.html 와 아래에서 중간과정과 예를 확인 하시고 ... 코드 이용하여 실습하고 .. 큰 사이즈 행렬에 실습한 것을 공유 하세요^^
1. 기본행렬과 치환행렬
In에 기본행연산(elementary row operation, ERO)을 한 번 적용해서 얻은 행렬을
기본행렬(elementary matrices)이라 한다. 그리고 치환(permutation)행렬은 In의
행들을 교환하여 얻어진 행렬이다.
# 아래는 기본행렬을 보여주는 코드입니다.
E1=elementary_matrix(4, row1=1, row2=2) # 기본행렬 r2 <--> r3
# elementary_matrix(n, row1=i, row2=j) i행과 j행을 교환
E2=elementary_matrix(4, row1=2, scale=-3) # 기본행렬 (-3)*r3
# elementary_matrix(n, row1=i, scale=m) i행에 m을 곱한다.
E3=elementary_matrix(4, row1=0, row2=3, scale=7) # 기본행렬 7*r4 + r1
# elementary_matrix(n, row1=i, row2=j, scale=m) j행에 m을 곱하여 i행에 더함
print "E1 = "
print E1
print "E2 = "
print E2
print "E3 = "
print E3
# 아래는 기본행렬을 임의의 행렬의 왼쪽에 곱하는 것은
# 기본행렬에 대응하는 기본행 연산을 주어진 행렬에
# 시행한 것과 같음을 보여주는 코드입니다.
A=matrix(3,3,[1,2,3,1,1,1,0,1,3])
E1=elementary_matrix(3, row1=1, row2=2) # 기본행렬 r2 <--> r3
E2=elementary_matrix(3, row1=1, row2=0, scale=2) # 기본행렬 2*r1 + r2
E3=elementary_matrix(3, row1=1, scale=3) # 기본행렬 3*r2
print "A = "
print A
print "E1*A = "
print E1*A
print "E2*A = "
print E2*A
print "E3*A = "
print E3*A
http://matrix.skku.ac.kr/sglee/linear/ocu/20104.html
에 쉬운 설명 있습니다^^
정 의 mxn 행렬 A에 관한 다음 연산을 기본행연산(elementary row operation)이라고 한다.
E1 : A의 두 행 i 행과 j 행을 서로 바꾼다.
E2 : A의 i 행에 0 이 아닌 상수 k 를 곱한다.
E3 : A의 i 행을 k 배하여 j 행에 더한다.
앞으로 기본행연산을 다음과 같이 기호로 나타내기로 한다.
( [예제 1] 참조 )
E1 : Ri <--> Rj
E2 : k Ri
E3 : k Ri + Rj
정 의 행렬 A에 기본행연산을 시행하여 얻어지는 행렬을 B라 하면 A와 B는 행동치 (row equivalent)라고 한다.
[예제4]
다음 행렬 A를 기본행연산을 시행하여 REF와 RREF로 변형시켜 보자.
단계 1.
...
단계 2.
...
황인성(2019****19)3월 12일 오후 10:40
교수님께서 알려주신 방법을 단계에 따라 차근차근 풀어보니 이해하게 되었습니다.
도움을 주셔서 감사합니다!
이상구(LEE SANGGU)3월 13일 오후 1:39
황인성군^^ Great^^ You will make a history^^
이상구(LEE SANGGU)3월 23일 오전 11:52
황 군, <--- Comment 달아 Finalize 하면 될 듯 합니다^^^
이상구(LEE SANGGU)3월 30일 오전 5:03
내가 Web 에 올려 준 샘플 final pbl 보고서 . . . 모델의 Finlized OK 된 것을 참고하여 그동안 완전히 이해한 것들 을 ... 특히 < 다른 학생들이 푼 것을 이해하면 그것들을 바로 Final 선언 하시면 됩니다. >
1. 이름 포함된 참여자 모두 만점 입니다
2. 질문 답 수정 Final comment 단 학생 및 두 ... Finalized OK by SGLee 에 이름 포함된 학생 모두 만점.
3. 제출할 PBL 보고서에 포함된 이런 문제의 양과질이 여러분의 실력 입니다.
4. 지금 얘기한 그대로 하시면 .. 그런 학생은 , 그런 팀은... 모두 만점 A 받게 될 것입니다




이상구(LEE SANGGU)3월 25일 오전 00:40
황인성 군, 교재 책을 보셨으면 ... . http://matrix.skku.ac.kr/math4ai/part1/
1. 고윳값과 고유벡터의 정의가 책에 자세히 있습니다.... ~~ 물론 모든 주요 정의가 책에 있습니다.
2. 책에서 det 를 이용하여 고윳값을 구하고, 선형연립방정식을 플어서 고유벡터를 구한 것 입니다. 라고 설명 해주었습니다.
추가로 책에 더 자세한 설명이 있는 아래 주소도 주었습니다.
'많은 응용문제에서
제기되는 중요한 질문 중의 하나는 "Ax가 x와 평행이 되게 하는 영 아닌 벡터 x가
존재하는가?" 하는 문제인데, 이와 같은 고유벡터는 선형변환과 관계되어 많은 중요한
역할을 한다. '
고유벡터와 고유값에 대하여 알아본다.
http://matrix.skku.ac.kr/knou-knowls/CLA-Week-6-Sec-4-5.html
3. 여러분이 해야 할 큰 크기의 행렬 계산 ... 이 긴 계산 과정을 돕기위해 ... 코드로 만들어 준것 입니다^^
4. 내용은 Ax = 람다 x 를 만족하는
scalar 인 람다가 행렬 A 의 하나의 고윳값이고, 영아닌 vector
벡터 x 가 그 람다에 대응하는 하나의고유벡터 입니다. ^^
(아래 절차대로 특성방정식을 구하고, 고윳값들을 구하고, 각 고윳값들에 대응하는 1차독립인 고유벡터들을 구하는 것이 ㄱ 과정입니다.)
(단, 행렬이 4타 행렬 5차 행렬만 되어도, 고윳가뵤조차 손으로 구하는 것이 거의 불가능합니다. 따라서 여러분은 Math & Coding 을 여기서 무조건 사용하여야만 합니다. <--- 본 강좌에서는 위의 과정을 여러분이 이해하고 경험하게 (QnA + PBL 보고서) 하는 것입니다.)
결론| 내가 만들어 준 최고의 책 꼭 보시고 고윳값 정의 부분 그것을 여기에 가져다놓고, 그 중 이해가 안되는 부분을 질문 하세요^^
이상구(LEE SANGGU)3월 25일 오후 12:42
% In http://sage.skku.edu/ or https://sagecell.sagemath.org/
A=matrix(2, 2, [1, -3, -3, 1]) # A 입력
print (A.charpoly()), "= 0" # A의 특성방정식
solve(x^2 - 2*x - 8==0, x)
print (A.eigenvalues() ) # A의 고유값
(-2*identity_matrix(2)-A).rref()
# 동차이므로 계수행렬만 고려해도 된다.
(4*identity_matrix(2)-A).rref()
# 동차이므로 계수행렬만 고려해도 된다.
print (A.eigenvectors_right() ) # A의 고유벡터
# 고유값, 고유벡터, 중복도
% 특성방정식 x^2 - 2*x - 8
% 고윳값 두 개 [4, -2]
% [( 고윳값 4, [ 일차독립인 고유벡터 (1, -1) ], 대수적 중복도 1 ), ( 고윳값 -2, [ 일차독립인 고유벡터 (1, 1) 의 개수가 고윳값의 기하적 중복도 ], 대수적 중복도 1)]
이상구(LEE SANGGU)3월 25일 오후 12:53
http://matrix.skku.ac.kr/2008-Lecture/LAA-sglee/text-ch06SPF/Page005.html
을 보고 < 주어진 고윳값에 대응하는 고유공간 (eigen space)의 정의> 에 대하여 ... 이해한 바를 얘기해 보세요^^
이상구(LEE SANGGU)3월 30일 오전 4:44
내가 웝에 울려 준 샘플 final pbl 보고서 . . . 모델의 Finlized OK 된 것을 참고하여 그동안 완전히 이해한 것들 을 바로 Final 선언 하세요.
그대로 하시면 만점 A입니다





이상구(LEE SANGGU)4월 3일 오전 10:23
<-- 잘했어요^^ 다른 학생들이 질문/답 등 을 읽어 보고 <-- 이해 했으면 이해했다고 Comment 달고 (질문과 답변을 정리하여) ... PBL 보고서에 포함하여 제출하세요^^
이상구(LEE SANGGU)4월 3일 오전 10:25
다른 학생이 이해했으면 , 행렬 크기가 큰 여러분 다른 책에서 본 행렬에 대하여, 실제 그 행렬에 시행한 결과도 보여 주시면 어떨까요?



![]()
이상구(LEE SANGGU)4월 4일 오후 5:25
내가 교재에 준 코드를 자세히 보시면, ..., 고윳값이 달라,
대응하는 일차독립인 고유벡터들이 이미 직교 이므로, 정규화만 하연되었습니다.
학생이 사용한, 행렬
G 가 무엇인지 ... 설명 해보세요^^
질문 에 사용한
1. 4차 정사각 행렬 A 의 경우,
2. A A ^T 와 A^T A 의 고윳값과 고유벡터를 구하여 ...
구한 일차독립인 4개의 고유벡터 들을 각각 정규화 하여 U
와 V 를 구하는 것인데 ...
우선 황군이 입력한 행렬 G 는
왜 거기에 있는지 이유를 설명해 보세요^^
이상구(LEE SANGGU)4월 4일 오후 6:22
황 군이 준 행렬의 경우에는 중근인 고유값이 있어서 고유벡터로 G를 구성한 후 gram schmidt 과정을 한 번 더 거쳤어야 하는 것 아닐까요?
이상구(LEE SANGGU)4월 4일 오후 6:23
[G1, mu] = G.gram_schmidt()
Vh = matrix([1/G1.row(j).norm()*G1.row(j) for j in range(0, 4)]) # V의 전치행렬
황인성(2019****19)4월 5일 오전 00:03
확인해본 결과 B의 고윳값 중 4가 중근이었긴 때문에 오류가 났던 것으로 확인되었습니다.
이러면 그 고유값을 가진 고유벡터가 실제로 직교하는지 아닌지를 알 수 없게 되는 것 때문에 문제였던 것 같습니다.
기초적인 걸 놓쳤었네요... 감사합니다 교수님!
이상구(LEE SANGGU)4월 5일 오후 1:23
Good^^^ 황인성 군,
http://matrix.skku.ac.kr/2018-album/SVD.html 에서 보여준
이런 식으로 확인해 보면 .... 둘이 같다는 것을 ... 확인할 수 있답니다.
이상구(LEE SANGGU)4월 5일 오후 1:42
아래를 참고하여 다른 문제도 풀어 보세요^^
http://theronhitchman.github.io/linear-algebra/course-materials/workbook/section-svd.html
http://matrix.skku.ac.kr/2018-album/SVD.html
수학적으로 이해가 되엇으면 ... 다음은 실제 자신의 행렬에 대하여 맞는 SVD 를 구하는 것을 해 봐야 되는데 ...
손으로 구하는 것은 이미 4차 행렬만 되어도 불가능하고 ..
그래서 코드를 이용합니다.
코드 이용하여 구할 때 ... 쉽게 되는 경우와 잘 안되는 경우 ... 를 직접 경험하고 ... 그 차이가 무엇이고 ... 어떻게 고치면 해결하는지를 경험하는 것이 이 부분 (Math4AI ) 교육의 목표 랍니다^^
이상구(LEE SANGGU)4월 5일 오후 1:50
참고 : Sage and the SVD
Sage has a built in command for the singular value decomposition of a matrix. If you have a matrix A, the command is A.SVD(). But there is a little trick to using it! At present, Sage only has this function implemented for matrices defined over rings of “floating point numbers”. The best way around this is to either define your matrix with entries in the ring RDF, or use the .change_ring(RDF) method on you matrix before you use the SVD.
이상구(LEE SANGGU)4월 5일 오후 3:14
아래 도 참고가 될 것입니다 http://matrix.skku.ac.kr/sglee/SVD-B/SVD-all.htm
이상구(LEE SANGGU)4월 5일 오후 6:11
A = matrix(RDF, [[4, 2, 2, 0], [2, 4, 2, 0], [2, 2, 4, 0], [0, 0, 0, 4]])
print("A= ")
print(A)
print()
U, S, V = A.SVD() # A의 SVD. A = U*S*V'
print ("U = ")
print (U)
print ("S = ")
print (S)
print ("V = ")
print(V)
print (U*S*V.transpose())
print ( (A - U*S*V.transpose()).norm() )
이상구(LEE SANGGU)4월 5일 오후 6:17
위의 코드를 sage cell 에서 실습해보고, 본인 생각을 보태보세요^^
□ 3월 설명(소감)
Sage 코드를 이용해 선형대수학 문제들을 풀었다는 것이 새삼 새롭게 느껴졌다.
교재에서 몇 번이고 본 코드들이었지만, 문제를 풀기 위해 실제로 써보니 낯설었다.
하지만 이 문제를 풀면서 차츰 익숙해졌고 이는 내가 앞으로 Sage 코드를 능숙하게 사용할 수 있는 밑거름이 되리라는 생각이 들었다.
이렇게 Sage 코드를 연습할 기회가 주어져서 좋다고 생각한다.
4주차 ~7주차 동안 다음 5개의 글에 참여했습니다.
* n변수 함수 극값 판별에 대한 질문 (4월 15일 6주차)
* 함수의 그래프와 극한 by 김예훈 (4월 17일 6주차)
* Jacobian을 활용한 이중적분 문제 실습 (4월 21일 7주차)
* TakeHomeExam2 예제 11번과 12번 변형해서 풀어보았습니다 (4월 23일 7주차)
* Webex 출석 인증 겸 오늘 물어본 것들 요약 (4월 24일 7주차)





이상구(LEE SANGGU)4월 15일 오후 11:08
3주라는 짧은 시간에 미적분을 모두 리뷰하는 과정이니, 용어 익히고, 구할 줄 아는 것이 우선 필요 합니다. 접점을 스스로 모두 깨우치는 접근보다. 다변수 함수의 헤시안 행렬을 구한 후 그 행렬의 고윳값을 구하는 문제를 몇개 더 해보시는 것이 더 필요합니다. 그보다 황군은 지금쯤 다른 학생이 푼 문제에 코멘트 5~10개 정도 다시면 좋을 듯 합니다.
이상구(LEE SANGGU)4월 16일 오전 4:35
황인성 군, ... 다른 학생이 푼 조언/문제/정보에 ... 검색 ... 둘러보고 ... 자신의 코멘트를 정도 다시고, 이해되었으면, 질문과 답을 정리해 새글로 Finalize 를 하시면서 방법은 ... 1. 제목에 Final 과 정답을 얻는 과정에 기여한 모든 학생과 정리한 자신 이름 달고, 그리고 key word 달아 ... 공유하시고 2. 중간고사에 자신 이름으로 이나 Final 로 검색해서 ... 자신 이름 들어간 ... 그런것 모두 포함시켜서 제출 하시면, ... 3. It will help you a lot. 그럼 A 에 좀 더 가까워 지는 방법임을 다시 한번 알려주고 4. 아직 A를 받기위해 make up 할 시간이 일 주일 이 있다는 조언을 remind 해 줍니다. 행운을 빌어요.
이상구(LEE SANGGU)4월 16일 오후 6:38
고유값과 헤시안 행렬에 대한 접점은 part 1 마지막 절 이차형식에 있습니다^^ 여기는 수식/이미지가 입력이 안되므로 위에 추가해 줄께요^^



황인성(2019****19)4월 17일 오전 10:51
1번 문제는 범위에 따라 서로 다른 함수를 그릴 수 있도록 Sage 코드를 짠 것이고 2번 문제는 특정 함수를 이용해 좌극한과 우극한을 확인하는 방법, 그리고 이를 바탕으로 극한값의 유무를 구하는 코드이네요 극한과 관련된 개념을 이해하는데 충분히 도움이 되었다고 생각합니다
김예훈(2020****54)4월 17일 오전 11:42
의견 달아주셔서 감사합니다.
이상구(LEE SANGGU)4월 22일 오전 4:35
함수가 한점으로 수렴한 때 좌극한과 우극한 구하는 명령어는 다른 것입니다. 이 둘이 존재하여 같을 때 극한 리미트가 존재한다고 하는 것입니다. 위의 경우 좌 우 극한이 우연히 같은 것일 뿐입니다.



이상구(LEE SANGGU)4월 24일 오전 6:44
잘 했습니다




이상구(LEE SANGGU)4월 23일 오후 8:31
아주 잘 했습니다^^ I like it^^☆☆

HW2 : 10차 행렬을 random하게 생성하여 가역인지 아닌지 확인한 결과

예제 3-6 첨가 행렬
의 RREF를 이용하여 행렬
의 역행렬을 구하여라.

예제 4-2 다음 동차연립방정식의 해공간(solution space) 을 구하여라.

정리) Rn, Rm이 벡터공간이고 어떤 선형변환 T에 대해서 T:Rn->Rm에 대하여 T가 단사일 필요충분조건은 ker(T)={0}이다.
단사 = 변환 T:Rn->Rm이 T(v)=T(u)일때 v=u를 만족하면 단사라고 한다.
여기서 정리 부분이 단번에 이해되지 않고 정말 그럴까란 의문이 들어서 증명을 해봤습니다.

var('x')
f1(x) = x
f2(x) = 4-x
plot(piecewise([[(0, 2), f1(x)], [(2, 4), f2]])) # graph f1 on (0, 2), and f2 on (2, 4)
기존의 코드를 보면 f1(x), f2(x)로 두 함수를 정의해서 (0,2) 범위에 f1을, (2,4)범위에 f2를 그려내는 코드입니다.
범위의 조절과 함수의 갯수를 늘렸을때도 오류없이 실행되는지 값을 수정해서 실행해봤습니다.




위 코드에서 최댓값과 최솟값을 구하기 위해서는 코드를 한번 입력함으로써 끝난게 아니라, 먼저 f(x)의 함수를 그려 거기서 극소값과 극대값을 찾아낸다.
이후에 극소, 극대, 각 범위의 끝값을 비교해 최댓값과 최솟값을 찾아낸다.

함수 자체와 범위를 바꾼 다음 먼저 그래프를 그려 극소/극대 값을 찾았다. 이후 그 값을 함수에 집어넣은 값으로 최댓값과 최솟값을 찾아냈다.




P1은 적분으로 계산해내는 구역의 넓이를 뜻하고, P2는 적분의 대상이 되는 함수다. 둘을 시각적으로 한눈에 보여준 뒤, 실제적으로 적분해 값을 계산하고 이를 근사값으로 표현해주는게 5,6번의 코드다.
구간은 같게 설정하고, 적분의 대상이 되는 함수만 바꿔보았다.

![]()
벡터의 수를 조금 늘려서 계산해보았습니다.

a=vector([2,-3]) #define vector a
b=vector([-3,-2]) #define vector b
c=vector([5,-5]) #define vector c
d=vector([-1,2]) #define vector d
e=vector([-6,-6]) #define vector e
print ( a+b+c+d+e ) # find the vector sum of a, b, c, d, e
f=a+b+c+d+e
plot(a, color='red') + plot(b, color='green') + plot(c, color='blue') + plot(d, color='purple') + plot(e, color='orange') + plot(f, color='black') #graph 6 vectors


함수 수치를 조금 바꿔 계산해보았습니다.
var('x,y')
f(x,y)=28*x*y-11*x^2*y^2
f_x = diff(f(x,y),x,1) #편도함수 fx(x,y)
f_y = diff(f(x,y),y,1) # 편도함수 fy(x,y)
print ("fx(x,y) = ",f_x)
print ("fy(x,y) = ",f_y)
![]()
함수만 바꾸어서 계산해 보았습니다.
var('x,y')
f(x,y)=-53*x^2+4*y^2-x+61*y
gradf = f.gradient() # 함수 f의 그래디언트
solve([gradf[0] == 0 ,gradf[1] == 0],x,y)
![]()
![]()
벡터의 값을 바꾸어 계산해 보았습니다.
a = vector([16, -33, 41])
b = vector([20, 0, -13])
s = b.dot_product(a) # find the dot product of a and b
c = b.cross_product(a) # find the cross product of a and b
theta = arccos(a.dot_product(b)/(a.norm()*b.norm())) # find the angle between a and b
print('내적(inner product, dot product)은 ', s)
print('외적(cross product)은', c)
print('벡터 a와 b 의 사잇각(angle)은', theta)
내적(inner product, dot product)은 0
외적(cross product)은 (-9, -26, -6)
벡터 a와 b 의 사잇각(angle)은 1/2*pi
![]()
cos t 대신에 sin t 로 바꾸어 계산해 보았습니다.
var('t')
x(t) = sin(t)
y(t) = t
r(t) = (x(t), y(t))
dr(t) = (diff(x(t), t), diff(y(t), t))
print("r'(t) =", dr(t)) #
t0 = pi/4
p1 = r(t0)
p2 = dr(t0)/abs(dr(t0))+r(t0)
p = parametric_plot((x(t), y(t)), (t, 0, 2*pi)) # Sketch curve
utv = line([p1, p2], color = 'red', thickness = 2) # Sketch tangent vector
show(p + utv)

![]()
coin = sample(c("앞","뒤"), 100, replace = TRUE) # 100회 반복
print(coin)
table(coin)
[1] "뒤" "앞" "뒤" "앞" "앞" "앞" "뒤" "뒤" "앞" "앞" "앞" "앞" "앞" "앞" "뒤" [16] "앞" "앞" "앞" "뒤" "뒤" "앞" "뒤" "뒤" "뒤" "뒤" "앞" "앞" "뒤" "앞" "앞" [31] "앞" "앞" "뒤" "뒤" "뒤" "앞" "뒤" "앞" "뒤" "뒤" "뒤" "앞" "뒤" "앞" "뒤" [46]
"뒤" "뒤" "앞" "앞" "앞" "앞" "뒤" "뒤" "뒤" "앞" "앞" "뒤" "뒤" "뒤" "뒤" [61] "앞" "앞" "앞" "앞" "앞" "앞" "뒤" "뒤" "뒤" "앞" "앞" "앞" "앞" "앞" "앞" [76] "뒤" "앞" "뒤" "뒤" "앞" "뒤" "뒤" "앞" "뒤" "앞" "앞" "뒤" "뒤" "뒤" "앞" [91] "앞" "뒤" "뒤" "앞" "앞" "뒤" "앞" "뒤" "앞" "뒤"coin뒤 앞 47 53

불량품 비율 -> 1000개중 6개, 이중 19개 구입
# 모두 불량품이 아닐 확률
print(choose(994,19)* choose(6,0)/ choose(1000,19))
# 적어도 불량품이 1개 이상 있을 확률
1 - choose(997,19)* choose(6,0)/ choose(1000,19)
[1] 0.8910199[1] 0.0559788
25명을 선택했을때, 4명 미만, 8명, 17명 이상의 시민이 만족할 확률
print(pbinom(3, size=25, prob=0.3, lower.tail=T)) # 3명 미만의 시민이 만족할 확률, T는 왼쪽
print(dbinom(8, size=20, prob=0.3)) # 6명의 시민이 만족할 확률
pbinom(17, 25, 0.3, lower.tail=F) # 10명 이상의 시민이 만족할 확률, F는 오른쪽
[1] 0.03324052[1] 0.1143967[1] 1.810448e-05
□ 4월 설명(소감)
이번 미분적분학을 배우면서 사실 모르는 개념은 거의 후반부에나 있었지만, 다시 배우는 개념들도 헷갈리기는 매한가지였다.
QnA 덕분에 애매했던 개념들은 확실하게 할 수 있었고, 몰랐던 개념들은 제대로 이해할 수 있었다.
8주차부터 12주차 동안 다음 15개의 글을 작성 및 참여했습니다. 날짜는 제가 작성 혹은 참여했을 때의 날짜를 기준으로 작성하였습니다.
* 10주차에서 배운 개념들로 3문제 풀이 (9주차 5월 8일)
* TakeHomeExam3 Part2 5문제 변형해서 풀어보았습니다. (11주차 5월 20일)
* 중심극한정리(Central Limit Theorem) 에 대하여 토론하세요^^ by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글참여)
* 베이즈 정리(Bayes’ theorem) 에 대해 토론 하시오. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* 대수의 법칙(Law of large number)에 대해 토론하세요. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* [매경시평]... 혁신의 역사, 누군가가 시킨 것을 단순 이행하는 업무란 ... by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Deepo 란? Deepo is a Docker image with a full reproducible deep learning research environment. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Chapter 3. Part 2. 확률변수 문제 풀이 by 조윤근(2016****14)(12주차 5월 26일 - 댓글 참여)
* for t in range (0,2)? by 신재열(2013****84) (12주차 5월 26일 - 댓글 참여)
* TakeHomeExam3 Part6 3문제 변형해서 풀어보았습니다. (12주차 5월 28일)
* A 받으려는 학생과 F 면하려는 학생들은 이번 주 정말 열심히 Makeup 하셔야 합니다^^ 어제 STRONG KOREA 2020 동영상 (4시간) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 최소제곱문제(least squares problem) : 최소제곱해, 선형회귀, 최소제곱직선 by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 경사하강법(Gradient Descent Algorithm) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 주성분 분석(Principal Component Analysis) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] Math4AI 인공지능 (고등학교) 수학 - Tools by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
[Refinalized] [Final OK by TA] 벡터공간의 충족요건 (2개의 기본 성질과 8개의 연산 성질 ^^) by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 3:32
조회수 : 2
[Final OK by TA] 벡터공간의 충족요건 (2개의 기본 성질과 8개의 연산 성질 ^^) by 신@@, 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 3월 30일 오전 11:29
조회수 : 9

이렇게 설명을 해주셨습니다.
혹시 8개의 연산 성질이 무엇인지 상세하게 써주실 수 있으실지요??ㅎㅎ
In http://matrix.skku.ac.kr/knou-knowls/,
http://matrix.skku.ac.kr/knou-knowls/cla-week-14.html
![]()
(벡터공간의 충족요건 (2개의 기본 성질과 8개의 연산 성질 ^^) <-- 이제 알았습니다. )
그리고 W가 V의 부분공간임을 보일 때, W가 V의 부분집합이라는 전제가 있다면 덧셈과 스칼라배에 대하여 닫혀있음만 보이면 되는 이유에 대해서도 궁금합니다.
새롭게 생각하는 어떤 집합에 대해서 벡터공간임을 보이고 싶다고 하면, 이 집합이 이미 벡터공간으로 알려진 다른 집합의 부분집합이고, 덧셈과 스칼라배에 대하여 닫혀있다는것만 보이면 벡터공간임이 명확히 증명된다는 것이 맞나요?
이상구(LEE SANGGU)3월 11일 오후 9:59
신@@군 반가워요~^^먼저, W가 V의 부분공간임을 보일 때,
1. W가 V의 부분집합이라는 전제가 있다면
2. 벡터 덧셈과 스칼라배에 대하여 닫혀있음만 보이면 되는 이유는,
나머지 8가지 성질은 을 V 안의 모든 벡터들에 성립하는 성질이므로,
저절로 V 의 부분집합인 W 안의 모든 벡터들에 대해서도 나머지 8가지 성질들이 저절로 만족하기 때문입니다.
이 8가지 성질에 대해 설명을 해주면, 많은 공대생 들이 졸던데, 신군은 호기심이 있는 학생이니 아래에서 가르쳐 줄께요^^ Good^^
이상구(LEE SANGGU)3월 11일 오후 10:11
http://matrix.skku.ac.kr/knou-knowls/cla-week-14-sec-9-1.html 에 벡터공간 정의 에서 요구하는 10가지 조건 있습니다. 이미지와 파일을 답글로 업로드 안되니 ... 위에 다시 올려 줄께요^^
이상구(LEE SANGGU)3월 11일 오후 10:21
http://matrix.skku.ac.kr/sglee/linear/ocu/20501.html정 의 임의의 집합 V(≠ø)에서 두 연산, 덧셈(vector addition) '+'와 스칼라 배(scalar multiplication)'. '이 정의되어 있고, 임의의 x, y, z∈V 와 h, k∈R에 대하여 그 정의 아래에서 두개의 기본 법칙A. x, y∈V ⇒x+y∈VSM. x∈V, k∈R ⇒kx∈V와, 다음의 8개의 연산법칙이 성립할 때, 집합 V를 주어진 연산에 관한 R상의 벡터공간(vector space)이라 하고, 벡터공간 V의 원소를 벡터(vector)라 한다.
A1. x+y=y+x
A2. (x+y)+z=x+(y+z)
A3. 모든 x∈V에 대하여 다음을 만족하는 원소 0이 V에 단 하나 존재한다. x+0=0+x=x
A4. V의 각 원소 x에 대하여, 다음을 만족하는-x가 V에 유일 하게 존재한다. x+(-x)=(-x)+x=0
SM1. k(x+y)=kx+ky
SM2. (h+k)x=hx+hy
SM3. (hk)x=h(kx)=k(hx)
SM4. 1x=x
여기서, 조건 A3를 만족시키는 0을 영벡터, 조건 A4를 만족시키는 -x를 x의 음벡터라 한다.
3. 마지막 질문에 대한 답.
어떤 집합에 대해서 벡터공간임을 보이고 싶다고 하면,
1. 이 집합이 이미 벡터공간으로 알려진 다른 집합의 부분집합이고,
2. 벡터들의 덧셈과
3. 스칼라와 벡터를 곱하는 ... 스칼라배 ...에 대하여 closed . . . 닫혀있다는것 . . . 만 보이면 저절로 2+8개인 10개의 벡터공간 이 되기 위한 조건을 모두 만족하므로 W가 부분공간임이 명확히 증명되는 것입니다. 두 가지만 보이면 됩니다. 맞습니다^^
신@@(2013****84)3월 11일 오후 11:09
아하 그렇군요 감사합니다~1번에 대해서는 그러면,
W의 모든 부분집합에 대해서는 8가지 성질이 보장이 되는데, 2가지 성질에 대해서는 따져봐야 한다는 것이고,
모든 부분집합 중에 2가지 성질까지 만족하는 특별한 경우를 부분공간이라고 한다는 것이군요~ 벡터공간이라고 할 수 있는 부분집합이네요~ 선형대수학에서 일반적으로 다루는 대상들이 벡터이기 때문에 그냥 부분집합보다는 부분공간이 더욱 의미가 있는 것이겠구요ㅎㅎ
신@@(2013****84)3월 11일 오후 11:18
8개의 조건이 찾아봤는데 복잡한게 아니라 그동안 배웠던 기본적인 조건들이네요~덧셈에 대한 교환법칙, 덧셈에 대한 결합법칙, 덧셈에 대한 유일한 항등원, 덧셈의 항등원에 대한 유일한 역원, 스칼라배에 대한 두가지 분배법칙, 스칼라배에 대한 결합법칙근데 마지막에 1x=x 이건 무슨뜻이지요??벡터공간이 아닌 집합중에 스칼라 1을 곱했을 때 자기자신이 안나오는 경우가 존재한다는 뜻인가요?
이상구(LEE SANGGU)3월 12일 오전 6:46
맞습니다. 맞는 표현은... 벡터공간이 아닌 집합에서는 그안의 모든 벡터에 곱했을 때, 모두 원래 벡터자신이 되게하는 스칼라 가 존재하지 않을 수도 있다는 의미입니다.
즉, 벡터공간이 아니면 스칼라 곱셈 에 대한 identity 가 존재하지 않을 경우도 있다는 것입니다.^^
이상구(LEE SANGGU)3월 12일 오전 6:48
다른 말로 벡터공간이 되려면 ... 다른 9개 조건에 보태서 ...10. 스칼라 곱셈 에 대한 identity 가 존재 해야만 한다는 것입니다.^^
Final Comment
우리가 어릴 때부터 배워온 수학에서 다루어온 대부분의 개념들이 벡터에 속한다고 해도 과언이 아닐 정도로 벡터공간의 개념이 매우 넓음을 이해하였다. 벡터의 쉬운 정의 "방향과 크기를 가진 물리량"은 지극히 제한적인 정의라는 말을 들은 적이 있는데, 그 말이 무엇인지 이제야 깨달았다. 8개 성질은 벡터공간의 부분집합에서 항상 보존되지만 나머지 2개의 성질은 존재하는지 다시 따져보아야 부분집합이 부분공간이 된다는 것도 흥미롭다.
1번 문제를 변형해서 풀었습니다.
x^2과 1-x그래프 그리기(0과2사이)
var('x')
f1(x) = x^2
f2(x) = 1 - x
plot(piecewise([[(0, 1), f1], [(1, 2), f2]]), (x, 0, 2))

2번문제를 변형해서 풀었습니다.
극한 구하기 문제(log(x)와1/x극한구하기)
var('x')
g(x) = log(x)
print(limit(g(x), x = 0)) # x = 0일 때 극한
f(x) = 1/x
print(limit(f(x), x = 0, dir = '-')) # x = 0일 때 좌극한
print(limit(f(x), x = 0, dir = '+')) #x=0일때 우극한
Infinity
-Infinity
+Infinity
3.계도함수 구하기 문제를 변형해서 풀었습니다.
var('x')
f(x) =cos(x)-sin(x)
def diffmore(a,b,num):
for i in range(num):
a=diff(a,b)
return a
def diffmoretimes(numm):
for i in range(numm):
print(i+2,'계도함수',diffmore(f(x),x,i))
diffmoretimes(8)
2 계도함수 cos(x) - sin(x)
3 계도함수 -cos(x) - sin(x)
4 계도함수 -cos(x) + sin(x)
5 계도함수 cos(x) + sin(x)
6 계도함수 cos(x) - sin(x)
7 계도함수 -cos(x) - sin(x)
8 계도함수 -cos(x) + sin(x)
9 계도함수 cos(x) + sin(x)
4.점 (4,22)에서 곡선 y=x^2+x+2 에 대한 접선의 방정식을 구하는 문제를 풀었습니다.
var('x')
f(x) = x^2 +x+ 2
df(x) = diff(f(x), x)
print(solve(diff(f(x)) == 0, x))
y(x) = df(4)*(x -4) + 22 # 기울기(df(4))를 구하여 접선의 방정식 구하기
print(y(x))
p1 = plot(f(x), x, 0, 10, linestyle = "--", color = 'blue') # 함수 f(x) 그리기
p2 = plot(y(x), x, 0, 10, color = 'red') # 접선 y(x) 그리기
show(p1 + p2) # 함수 f(x)와 접선 y(x)를 동시에 보여주기
6. 식만 바꿔서 문제를 풀어 보았습니다
var('x')
f(x) = x^3 - 2*x +3
p1 = plot(f(x), x, -3, 3)
show(p1)
print(solve(diff(f(x)) == 0, x)) # look for the flection points of df, -1/3*sqrt(3), 1/3*sqrt(3)
ma = max(f(-1/3*sqrt(3)*sqrt(2)), f(1/3*sqrt(3)*sqrt(2)), f(-3), f(3)) # find maximum value
mi = min(f(-1/3*sqrt(3)*sqrt(2)), f(1/3*sqrt(3)*sqrt(2)), f(-3), f(3)) # find minimum value
print('최댓값 =', ma)
print('최솟값 =', mi)
[x == -1/3*sqrt(3)*sqrt(2),x == 1/3*sqrt(3)*sqrt(2)]최댓값 = 24최솟값 = -18
7.적분하기 문제(log(x)+3에서 0.5에서 4까지 적분하기)
f(x) = log(x)+3
P1 = plot(f(x), 0.5, 4, fill = "axis") # fill the area between f(x) and x-axis
P2 = plot(f(x), 0.3, 4 + 0.05, color = 'green') # graph f(x)
show(P1 + P2) # show P1 and P2
print(integral(f(x), x, 1/2, 4).simplify_full()) # integrate f(x)
print((integral(f(x), x, 1/2, 4).simplify_full()).n(digits=5)) # 근사값
17/2*log(2) + 7
12.892
8. 3차원상으로 스케치를 하는 문제를 풀었습니다.
var('x, y, z')
implicit_plot3d(z == x^3+y^3, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)

9.벡터(1,2,2)와 (2,0,2)의 내적, 외적 사잇각 구하기
a = vector([1, 2, 2])
b = vector([2, 0, 2])
s = b.dot_product(a)
c = b.cross_product(a)
theta = arccos(a.dot_product(b)/(a.norm()*b.norm()))
print('내적(inner product, dot product)은 ', s)
print('외적(cross product)은', c)
print('벡터 a와 b 의 사잇각(angle)은', theta)
내적(inner product, dot product)은 6
외적(cross product)은 (-4, -2, 4)
벡터 a와 b 의 사잇각(angle)은 arccos(1/2*sqrt(2))
10. 3log(t)+t 의 위치벡터와 접선벡터 구하기
var('t')
x(t) = 3*log(t)+t
y(t) = t
r(t) = (x(t), y(t))
dr(t) = (diff(x(t), t), diff(y(t), t))
print("r'(t) =", dr(t)) # 도함수
t0 = 3
p1 = r(t0)
p2 = dr(t0)/abs(dr(t0)) + r(t0)
p = parametric_plot((x(t), y(t)), (t, 0, 2*pi))
utv = line([p1, p2], color = 'red', thickness = 2)
show(p + utv)
r'(t) = (3/t + 1, 1)

11. 매개변수 함수 (t, cos(t), sin(t)) 에서 t 가 -1 -에서 1까지 변하는 동안 생성하는, 곡선의 길이 구하기 (Line integral)
var('t')
r(t) = (t, cos(t), sin(t))
dr = diff(r(t), t)
s(t) = dr.norm()
print(integral(s(t), t, -1, 1)) # length of the curve
parametric_plot3d(r(t), (t, -1, 1))
2*sqrt(2
12. log(x)+cos(y)-x*y^2 2계 편도함수 구하기
var('x, y')
f = log(x)+cos(y)-x*y^2
fxx = diff(f, x, 2)
fyy = diff(f, y, 2)
fxy = diff(f, x, y)
fyx = diff(f, y, x)
print("fxx =", fxx)
print("fyy =", fyy)
print("fxy =", fxy)
print("fyx =", fyx)
fxx = -1/x^2
fyy = -2*x - cos(y)
fxy = -2*y
fyx = -2*y ■
13. x=cos(u)*sin(v), y=sin(u)+cos(v), z=s^2*t의 dz/du찾기
var('u, v, s, t') # https://sagecell.sagemath.org/
x = cos(u)*sin(v)
y = sin(u)+cos(v)
z = s^2*t
print("dz/du =", diff(z(s = x, t = y), u).simplify_full())
dz/du = (3*cos(u)^3 - 2*cos(u)*cos(v)*sin(u) - 2*cos(u))*sin(v)^2
14. 점(1,2,2)에서 x축에서 양의방향으로 30도 회전한 단위벡터 방향으로 f(x, y,z) = x^2 - 3*x*y*z + 4*y^2+ z^2의 방향도 함수 구하기
,
var('x, y, z')
f(x, y,z) = x^2 - 3*x*y*z + 4*y^2+ z^2
u = vector([cos(pi/6), sin(pi/6),0])
gradf = f.gradient()
print("Duf(1,2) =", gradf(1, 2,2).dot_product(u))
print(gradf(1,2,2))
Duf(1,2) = -5*sqrt(3) + 5
(-10, 10, -2)
15. x*y^3+x*y-y^2의 임계점 구하기
var('x, y')
f(x, y) = x*y^3+x*y-y^2
gradf = f.gradient()
solve([gradf[0] == 0, gradf[1] == 0], x, y)
[[x == 0, y == 0], [x == -I, y == I], [x == I, y == -I]]
16.2*x*y - 3*x^2 - 6*y^2 - x - y + 5 의 극값을 구하여라
var('x, y')
f(x, y) = 2*x*y - 3*x^2 - 6*y^2 - x - y + 5
gradf = f.gradient() # 그래디언트 계산
print(solve([gradf[0] == 0, gradf[1] == 0], x, y)) # 임계점 계산
hessf = f.hessian() # 헤시안 계산
H = hessf(-7/34, -2/17)
print("The eigenvalues of H are ", H.eigenvalues())
m, n = H.nrows(), H.ncols() # 행렬의 크기
if m != n:
raise ValueError("The matrix must be square.") # 정사각행렬이 아니면 에러
for i in range(1, n + 1):
H_principal_minor = H.submatrix(0, 0, i, i).det() # 선행 주 소행렬식
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
def f(x,y):
z= 2*x*y - 3*x^2 - 6*y^2 - x - y + 5
return z
print('극값:',f(-7/34,-2/17))
[
[x == (-7/34), y == (-2/17)]
]
The eigenvalues of H are [-sqrt(13) - 9, sqrt(13) - 9]
The 1 번째 principal minor 는 -6
The 2 번째 principal minor 는 68
극값: 351/68
17.경사하강법 문제(행렬을 바꿔서 시도해보기)
A = diagonal_matrix(RR, [30,20,15,20,25])
b = vector(RR, [1, 1, 1, 1, 1]) # objective function
x0 = vector(RR, [0, 0, 0, 0, 0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red'))

18.F(x, y, z) = sin(x)+sin(y)-z 의 xy평면위로의 적분값 구하기(부피)
var('x, y, z')
F(x, y, z) = sin(x)+sin(y)-z
implicit_plot3d(F(x, y, z) == 0, (x, 0, 1), (y, 0, 1), (z, 0, 1), opacity = 0.4)
solve(F(x, y, z) == 0, z)
integral(integral( sin(x) + sin(y), x, 0, 1), y, 0, 1)
[z == sin(x) + sin(y)]
부피 :-2*cos(1) + 2
19. 1/sqrt(2*pi)*exp(-x^2/2) 적분값 확인하기(통계학에서 필요한 적분값)
var('x')
f=1/sqrt(2*pi)*exp(-x^2/2)
integral(f, x, -infinity, infinity)
답 : 1
20.결합밀도함수 exp(-(x + y))가 P(x+y<=1/3) 일 확률을 구하여라.
결합밀도함수는
모든 (x,y)에대하여 f(x,y)>=0
f(x,y)를 이중적분한 값이 1 그리고 아래의 식을 만족해야된다.
var('x, y')
f(x, y) = exp(-(x + y))
print(integral(integral(f(x, y), y, 0,1/3-x), x, 0,1/3))
print((integral(integral(f(x, y), y, 0, 1/3 - x), x, 0, 1/3)).n(digits=5))
-4/3*e^(-1/3) + 10.044625
21. Use a computer to graph the function, and plot some contour lines of the same function.
var('x, y')
f(x, y) = (x^2+y^2-1)-x^2*y^3
plot3d(f(x, y), (x, -2, 2), (y, -2, 2), opacity = 0.4)
contour_plot(f(x, y), (x, -2, 2), (y, -2, 2), fill = False, cmap = 'hsv', labels = True)

[Final] 거듭제곱법에 대한 생각 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 1:45
조회수 : 3
거듭제곱법에 관한 생각
작성자 : 신@@(2013****84)작성일 : 3월 13일 오후 3:07
조회수 : 27

![]()
Eigenvector에 대해서는 이와 같이 자명합니다.
그런데 예제에서 교수님께서 제시하신 (1,1,1)벡터는 A의 eigenvector가 아니잖아요~
예제의 풀이의 결과를 보면
A를 거듭제곱하고 (1,1,1)에 곱한 결과로서 eigenvector가 찾아진다는 이야기같은데 어떻게 가능한지 궁금합니다.
![]()
이 명제가 참이라는 얘기같은데 맞나요?? 증명이 어떻게 될지요??
eigenvector가 하나가 아닌데 어떤 eigenvector로 찾아지는지도 서술이 필요할 것 같습니다.
그리고 m차 정사각행렬에는 m개의 eigenvalue가 있는데 거듭제곱하고 나눔으로써 자연스레 가장 큰 eigenvalue가 선택이 된다고 하신 것 같은데, 다른 eigenvalue가 배제되는 이유에 대해서도 궁금합니다.
아직까지 거듭제곱법이 어떤 점에서 이점을 가져다주는지도 사실 감이 아직 잘 안옵니다...ㅎㅎ이러한 측면에서도 설명해주시면 좋을 것 같습니다. 감사합니다!
이상구(LEE SANGGU)3월 13일 오후 3:22
신 군은 너무 진지해요^^ 수학자가 되어도 되겠어요^^
1. 이것은 큰 크기의 음아닌 행렬에 대한 <가장 큰 고유벡터와 그에 대응하는 고유벡터를 쉽게 찾는 Power Method> 에 대한 설명으로 ... 전체 설명은 본 강좌의 범위가 아니므로 ... 이해 할 자료만 주고 . (강좌의 수준을 벗어나는 사족의 질문이 처음 부터 너무 많으면 다른 학생들이 당황하니까 ) 나중에 내 연구실 32304에 오시면 설명해 줄께요)
지금은 물어본 내용들에 대해 간단하게 답만 드립니다^^
http://matrix.skku.ac.kr/sglee/project/Project10/project10.htm
https://nosyu.pe.kr/1866이상구, <현대 선형대수학>, 경문사, 2005, pp. 206~208
http://sage.math.washington.edu/home/tkosan/newbies_book/
http://matrix.skku.ac.kr/sglee/project/Project10/project10.htm
http://matrix.skku.ac.kr/LA-Lab/5-1/5-1.htm
http://matrix.skku.ac.kr/cal-lab/Power-Method-Algorithm.htm
http://seaver-faculty.pepperdine.edu/dstrong/LinearAlgebra/2013/2013SangGuLee.pdf
1. Eigenvector에 대해서 ... 예제에서 제시한 음아닌 벡터 (1,1,1) 는 이 알고리즘을 돌리기 위하여 이므로 시작하는 그냥 하나의 벡터입니다. 물론 아직은 eigenvector 를 전혀 모르는 상태입니다. ... 이렇게 대충 시작해도 ... 우리가 개발한 알고리즘은 ... 보통 짧은 시간에 ... 가장큰 고유벡터를 우리에게 찾아준다는 것이 유명한 Power Method 입니다. 여기서 소개한 이유는 앞으로 ... 우리 강좌에서는 ... 손으로 만 하던 수학을 벗어나서 ... 코딩을 이용하는 느낌을 가지라는 의미입니다.
2. 예제의 풀이의 결과를 보면 A를 거듭제곱하고 (1,1,1)에 곱하면서 ... 제시한 Power Method 를 돌리면 eigenvector가 찾아진다는 이야기는 물론 이미 증명이 완전하게 되어 있어서 ... 세상의 아는 사람은 모두 알고 수십년을 사용해 오는 방법 중 하나입니다. 어떻게 가능한지는 Power Method 를
https://en.wikipedia.org/wiki/Power_iteration 찾아보시면 모든 책에 증명이 나와 있습니다.
3. Power Method 는 참임이 이미 증명되었으니 ... 9분 짜리 아래 동영상 설명을 듣고 https://www.youtube.com/watch?v=yBiQh1vsCLU 이해 안되는 부분 여기서 어떤 학생들이 어렵다고 부담 느낄 듯하니까 ... 여기서 보다는 ... 내게 와서 모르는 부분 만 다시 물어보세요^^ 다른 학생들은 <가장 큰 고유벡터를 구하는 이런 쉬운 방법> 도 있다는 것을 ... 그리고 구글 검색엔진이 이 방법을 쓴다는 것 ... 정도만 ... 알고 가도 충분합니다.
4. eigenvector가 하나가 아닌데 ... 이 방법은 크기가 가장 큰 음아닌 eigenvector 하나을 찾는 알고리즘이랍니다.
신군, Hope this helps you^^
5. m차 정사각행렬에는 (대수적 중복도 포함) m개의 eigenvalue가 있는데 Power_iteration 을 통하여 자연스레 가장 큰 eigenvalue가 구해집니다. 이미 증명되어 있습니다.
6. 거듭제곱법이 어떤 이점이 있는지는 ... (방정식을 풀어서 고유값과 고유벡터 구하는 것보다 시간과 비용이 천배 ... 만배는 더 절약됩니다.) ... 더 궁금한 것은 .. 내게 오시면 자세히 한번 더 알려줄께요^^
신@@군, Power Method 설명입니다^^
작성자 : 이상구(LEE SANGGU)작성일 : 3월 18일 오전 11:48
조회수 : 15
신@@군, 궁금해 한 Powe Method 설명 과 증명입니다^^
Power Method : https://youtu.be/n4KD4aq_jxw
(Linear Algebra) 사이버 실습실
http://matrix.skku.ac.kr/K-MOOC-LA/
Hope it helps^^
Final Comment


![]()
[Finalized by 신@@] Final OK by SGLee, 모든 (실수) 행렬은 symmetric matrix와 skew-symmetric matrix의 합으로 나타낼 수 있다. by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 1:50
조회수 : 7
Q. 모든 (실수) 행렬은 symmetric matrix와 skew-symmetric matrix의 합으로 나타낼 수 있다.
작성자 : 신@@(2013****84)작성일 : 3월 20일 오후 2:46
조회수 : 22

(출처 : 자체 제작 수식편집기)
1. 강의 중간에 하신 말씀이 이 내용인데, 제 증명은 맞나요?
Answer by SGLee ; Yes!!!
맞습니다^^ 위와 같은 방법으로 모든 (실수) 행렬은 symmetric matrix와 skew-symmetric matrix의 합으로 나타낼 수 있다.
2. 형태적 유사성을 보니 궁금해지는 부분인데, 혹시 쌍곡선함수와도 관련성이 있나요?
Answer by SGLee ; Yes!!!
이차형식의 하나인 쌍곡선함수 와 물론 관련 있습니다. 이 내용은 행렬의 대각화 및 '이차 형식'에서 사용됩니다^^
http://matrix.skku.ac.kr/knou-knowls/CLA-Week-12.html
Final Comment
모든 (실수) 행렬은 symmetric matrix와 skew-symmetric matrix의 합으로 나타낼 수 있다. 는 사실은 앞으로 이차형식 등을 배울때 를 포함하여 행렬을 분석할 때 아주 중요하게 사용되는 사실이라는 것을 깨우쳤다.
그리고 모든 (복소수 성분의) 행렬은 Hermitian matrix와 skew-Hermitian matrix 의 합으로 나타낼 수 있다.
[Final] A의 역행렬 (증명) Finalized by 신@@
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 1:58
조회수 : 3
A의 역행렬 (증명)
작성자 : 신@@(2013****84)작성일 : 3월 20일 오후 3:17
조회수 : 45
http://matrix.skku.ac.kr/sglee/2000ocu/ocu20302/ocu20302.html
• Laplace 여인자 전개
• 일반적으로
차의 정사각행렬
에 대하여도 다음이 성립한다.
![]()
• 따라서
차의 정사각행렬
의 행렬식은 여인자 전개를 이용하는 (Laplace 여인자 전개라고 불리우는) 다음 정리를 이용하여 구할 수 있다.
정리 2.11
가
차의 정사각행렬일 때
에 대하여 다음이 성립한다.
(i열에 관한 여인자전개)
, (j열에 관한 여인자전개)
http://matrix.skku.ac.kr/2008-Lecture/LAA-sglee/text-ch02SPF/Page016.html


정리 2.12
차의 정사각행렬
가 가역일 때,
의 역행렬은 다음과 같다.
![]()
https://math.stackexchange.com/questions/345517/why-is-it-true-that-mathrmadjaa-deta-cdot-i
이 명제의 증명이 궁금합니다..
교수님 답:
https://mathinstructor.net/2012/04/how-to-prove-that-a-adja-adja-adeta-i/
1.
prove that
A.adj(A)= adj(A).A=det(A).I
2.
If, we are given matrix A then
How to prove that A.adj(A)=adj(A).A=det(A)I?
where adj(A) is adjoint of A and det(A) is determinant of A.
=
http://matrix.skku.ac.kr/sglee/2000ocu/img/pf2-2-12.gif
행렬식의+응용(A-1)+_A_+=+ai1Ci1+++ai2Ci2+++…+ainCin+a11+a12+…+a1n.jpg
이상구(LEE SANGGU)3월 20일 오후 3:47
위에 드린 답에서 보듯이^^ A.adj(A)= adj(A).A=det(A).I 을 보이면 답은 따라 나옵니다
https://medium.com/@polluxrey/inverse-of-a-matrix-using-gauss-jordan-elimination-and-adjoint-matrix-method-7af77a618860에 증명이 있습니다.
임동선(2017****79)3월 20일 오후 3:47
adjugate matrix 의 정의는 cofactor matrix의 transpose 인데, determinant는 고정된 row or column의 cofactor 의 합으로 표현됨을 이용하면 얻어질 것 같아요.
이상구(LEE SANGGU)3월 20일 오후 4:13
신 군,
http://matrix.skku.ac.kr/sglee/2000ocu/img/pf2-2-12.gif
http://matrix.skku.ac.kr/2018-album/LA-Sec-4-2-lab.html 을 한번 보세요^^
A.adj(A)= adj(A).A=det(A).I은 Laplace cofactor expansion 이 준답니다.
I assume that A is a square matrix, then we know
The inverse of A = adj(A) / det(A) where det is the determinant
multiply both sides of the = by A and we get
A*inverse of A = (A*adj(A)) / det(A) and A*inverse of A = (adj(A)*A) / det(A)
note that * means multiply
the above implies that
I = (A*adj(A)) / det(A) and I = (adj(A)*A) / det(A)
From above, we can say that det(A)I = A*adj(A) and det(A)I = adj(A)*A, then
A*adj(A) = adj(A)*A= det(A)*I
이상구(LEE SANGGU)3월 20일 오후 6:35
신@@ 군이나 이호준 군이, (이해되었으면 ... ) 위의 논의를 질문과 답변으로 정리 Finalize 하여 new QnA 에 새로 다시 공유해 보세요^^ (HWP 파일도 좋습니다) http://matrix.skku.ac.kr/sglee/2000ocu/img/pf2-2-12.gif
Final Comment
정사각행렬의 행렬식은 cofactor expansion으로 표기될 수 있으며 cofactor matrix의 transpose인 adjugate matrix를 주어진 행렬에 곱하면 단위행렬의 행렬식배가 됨을 알았다. 이것은 adjugate matrix가 역행렬의 행렬식배가 된다는 것을 뜻하며, 이로써 역행렬은 adjugate matrix를 행렬식 값으로 나눈 것을 의미한다는 것을 깨달았다. 행렬식이 0이면 분모가 0이기 때문에 역행렬 또한 존재하지 않음을 알 수 있으므로, 역행렬의 존재여부를 판별하는 방법 중에 하나가 행렬식이 0인지를 조사하는 것이다.
[Final] projection에 관한 질문 <-- Will be Finalized^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 3월 22일 오후 7:29
조회수 : 22

(1)과 (2)가 참인 명제일 것 같은데 명확하게 증명하기는 쉽지 않네요..
|
정의. |
|
벡터
와
가
에 있고,
라 하자. 그러면 점
에서
에 내린 수선의 발을
라 할 때, 벡터
를
위로의
의 정사영(projection of
onto
)이라 하고
=
로 나타낸다. 이때 벡터 ![]()
를
에 직교인
의 벡터성분(vector component)이라 한다. 따라서
는 두 벡터의 합
로 나타내진다.
▪
가
에 평행이므로,
이다. 그리고
는
에 직교(orthogonal)이므로,
.
따라서
이고
. ■
|
정리. |
정사영 |
의 벡터
,
에 대하여 다음이 성립한다.
여기서
. ■
,
에 대하여
위로의
의 정사영
와
에 직교인
의 벡터성분
를 구하여라.
(
,
)
풀이
이므로
= (15/7, -15/14, 45/14),
![]()
![]()
=(13/7, 1/14, -17/14) ■
[ 실습 : http://sage.skku.edu/ ]
x = vector([2, -1, 3])
y = vector([4, -1, 2])
yx = y.inner_product(x) # 벡터 x와 y의 내적 구하기
xx = x.inner_product(x) # 벡터 x와 x의 내적 구하기
p = yx/xx*x # 벡터의 정사영 구하기
w = y - p # 벡터 x에 직교인 y의 벡터 성분 w 구하기
print("x =", x)
print("y =", y)
print()
print("p =", p)
print("w =", w)
in http://matrix.skku.ac.kr/math4ai/part1/
이상구(LEE SANGGU)3월 22일 오후 7:46
V 안의 하나의 벡터에 대한 W 위로의 정사영 p가 하나 존재하는 것입니다^^ 그 벡터 하나는 부분공간 W 가 되지 않지만 ... 그 벡터의 Span 인 span(p) 가 하나의 부분공간을 이루게 됩니다^^
1. 마찬가지로 V 안의 벡터들의 정사영들의 집합 S 의 span 인 span(S) 는 W 의 부분공간이 됩니다.
2. 그리고 정사영들의 집합이 일차독립이 아닐 수 있으므로, 기저가 되지 않습니다.(위의 경우는 [질문이 부정확하고 또 맞지도 않는 가설이라서 증명이 안되는 것입니다. 어려운 것이 아니라 증명이 안되는 것이라 안된 것이랍니다.] 질문을 좀 더 다듬으면 더 좋은 질문이 될 수도 있습니다. ).
<--- 한번 들르세요^^ 추가 조언 해 줄께요^^
신@@(2013****84)3월 22일 오후 7:51
아 그렇군요...언제쯤 들르면 될지요??
신@@(2013****84)3월 22일 오후 8:13
교수님 그러면 혹시, 벡터 x의 W에 대한 정사영은, W의 기저 각각에 대한 정사영의 합이라고 할 수 있나요??좌표공간에서 방향코사인 생각하던 것에 착안하면 충분히 가능할 것 같습니다.
신@@(2013****84)3월 22일 오후 9:28
Gram-Schmidt 직교화에서도 그걸 활용하고 있는데, 앞에서 얘기한 바 있는데 제가 기억을 못하는건가 싶기도 하네요...
이상구(LEE SANGGU)3월 22일 오후 9:28
8 차원 벡터공간 안의 벡터 y 의 7차원 부분공간 W 위 로의 정사영은 하나의 벡터 p 일 뿐입니다.
즉, W 안에 있는 단 하나의 벡터 일 뿐 입니다. ^^그런데 7차원 부분공간 W 안에 영 아닌 그런 p 벡터들이 여러 개 즉 수백 개가 있으면... 당연히 그 중에 7개의 일차 독립인 벡터들이 있을 수 있게 되고, 그럼 그 7개의 벡터들의 집합은 a basis for W 가 됩니다^^
Final Comment

[Final] A^T A의 가역여부 증명 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 3월 22일 오후 8:06
조회수 : 21

이후 어떻게 풀어가야할 지 모르겠습니다..
A의 전치행렬과 A를 곱한 nxn 행렬의 rank가 n이라는 것을 보여주는 것이 핵심인 것 같은데, 어떻게 하면 증명이 되려나요..?
신@@(2013****84)3월 22일 오후 8:09
최소제곱해 문제에서 A가 full column rank인건 대상이 되는 x값을 다르게 설정하기 때문에 당연히 full column rank 상황이 되겠지요..?!
이상구(LEE SANGGU)3월 22일 오후 9:33
A가 full column rank 가지면 A^T A 가 full column rank 갖는 정사각행렬이고 그럼, 가역행렬 정리에 의하여, Det (A^T A) 가 영이 아니므로, 쉽게 A^T A가 가역행렬이 되는 것입니다.
신@@(2013****84)3월 22일 오후 9:35
아하 행렬식의 성질로 간단히 증명이 되는군요!
이상구(LEE SANGGU)3월 23일 오전 10:59
내가 답글로 위의 질문과 답변을 Finalize 해주려고 해도 ... 수식이나 수식 이미지 가 답글에서는 안 써지므로 ... 신 군이 시범적으로 ,... 원래 글에 Finalized by 신@@Q.A. ...로 Final Answer 모델을 보여주면 합니다^^(이것이 여러분의 4주차 마치고 다음 다음 주에 제출할 3월 PBL 보고서 겸 HW이기도 하니까 ... 미리 하는 셈 치고 ... 해 보세요^^)
신@@(2013****84)3월 23일 오후 12:16
A가 full column rank이지만, 정사각행렬이 아니어도 되기 때문에 determinant를 정의할 수가 없네요. 처음에 받아들이기로는, A와 A^T의 행렬식이 같고 0이 아니기 때문에 A^T A도 행렬식이 0이 아니라고 받아들였는데, A가 정사각행렬이 아닌 경우에는 이 증명이 성립하지 않는다는 것을 간과했습니다.
그리고 다시 궁금한 게 있는데,
A가 full column rank이면 A^T A가 왜 full column rank를 갖는 정사각행렬인지 잘 모르겠습니다..
이상구(LEE SANGGU)3월 24일 오후 2:11
m by n 행렬 A가 full column rank이면 rank A = n 이고,n by n 행렬 A^T A은 rank 가 n 인 정사각행렬 이므로 가역행렬 정리에 따라, 가역행렬 입니다.
Final Comment
직교대각화, 특이값 분해에 대한 내용을 좀 더 공부하고 다시 살펴보니 더욱 이해가 명확해진 것 같다. A^T A는 대칭행렬이므로 직교대각화가 가능하며, 일차독립인 eigenvector를 가지기 때문에 역행렬이 존재한다는 것도 확인할 수가 있다.
[Refinalized][Final OK by TA] Gram-Schmidt 직교화 (질문과 답^^) by 신@@ , 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 25일 오전 00:40
[Final OK by TA] Gram-Schmidt 직교화 (질문과 답^^) by 신@@ , 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 3월 30일 오전 11:36
조회수 : 20
Gram-Schmidt 직교화 알고리즘이 한번에 정리가 안돼서 차근차근 나름대로 정리해봤습니다. 검토해주시면 감사하겠습니다. 정규직교기저를 찾기 전에 직교기저를 찾는 알고리즘만 기술했습니다.

|
|
|
|
http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-10.html
일 때, Gram-Schmidt 정규직교화 과정을 이용하여
의 기저
로부터
의 정규직교기저
를 구하여라.
풀이 먼저 직교화 과정을 이용하여
를 계산하면 (직교기저를 얻는다).
단계 1 : ![]()
단계 2 : ![]()
![]()
단계 3 : ![]()
![]()
![]()
![]()
그러므로
를 각각 정규화하여,
의 정규직교기저
를 얻는다.
![]()
![]()
집합
는
의 정규직교기저이다.
즉, { (1/2*sqrt(2), 1/2*sqrt(2), 0), (-1/3*sqrt(1/2), 1/3*sqrt(1/2), 4/3*sqrt(1/2) ), (-2/3, 2/3, -1/3)} ■
[ 실습 : http://sage.skku.edu/ ]
http://matrix.skku.ac.kr/math4ai/part1/
x1 = vector([1, 1, 0])
x2 = vector([0, 1, 2])
x3 = vector([1, 2, 1])
A = matrix([x1, x2, x3]) # x1, x2, x3를 행벡터로 하는 행렬 생성
print("A =")
print(A)
print()
[G, mu] = A.gram_schmidt() # 직교화 과정: 행에 대하여 직교기저를 찾는다. A==mu*G
print("G =")
print(G)
print()
N = matrix([G.row(i) / G.row(i).norm() for i in range(0, 3)])
# 정규화과정: 정규화한 직교기저를 행으로 하는 행렬
print("N =")
print(N)
10-thm-gram-schmidt-orthn-process-pf.png
이상구(LEE SANGGU)3월 23일 오전 7:19
여기를 읽어 보고 다시 한번 질문해 보세요.
http://matrix.skku.ac.kr/K-MOOC-LA/cla-week-10.html
신@@(2013****84)3월 23일 오전 11:53
아하 다시봤더니 제가 정사영 내리는 과정에서 식을 잘못 쓴 부분이 있었습니다.
W_n-1에 첨가하여 W_n을 생성하는 직교기저 y_n을 생각할 때, x_n을 W_n-1에 정사영 내리고 x_n에서 정사영을 빼서 y_n을 구해야 하기 때문에, 제가 시그마를 활용하여 y_k를 정의한 식에서 봤을 때, 시그마에서 x_i+1이 아니라 x_k로 쓰면 맞겠네요. 그 위에 y_2, y_3를 구할 때도 당연히 x_2, x_3을 한 차원 낮은 이전의 부분공간에 정사영 시키기 때문에 x_2, x_3로 고정되어야 하지, x의 첨자가 변할 이유가 없습니다.
신@@(2013****84)3월 23일 오전 11:54
교수님, x_1부터 x_n까지의 기저가 생성하는 부분공간이 y_1부터 y_n까지의 기저가 생성하는 부분공간과 일치하는것이죠 그러면?
이상구(LEE SANGGU)3월 23일 오후 10:07
맞습니다. 그 둘은 같은 부분공긴입니다
신@@(2013****84)3월 24일 오후 3:25
Finalize는 그냥 'Finalize 하겠습니다.' 하면 되는건가요??
이상구(LEE SANGGU)3월 30일 오전 4:38
맞습니다. 학생별로 이해된 문제들 최소 매주 1개 이상에, 그러니까 첫 4주는 각각 4개 문제 이상1.문제와 얻은 정답만 정리하고2. 참여한 사람 이름 적고3. Comment 적으면 됩니다.샘플 준것 보세요.그리고 sample 에서 질문과 답변을 복사해와서 개선해도 됩니다.
2개의 댓글
이상구(LEE SANGGU)3월 30일 오후 1:59
신@@군, 이것을 더 깔끔하게 질문과 답변 만 간결 명료하게 정리하여 (복사해서 재 구성 하면서) Re-Finalize 해 보세요^^ 그래서 그것을 march PBL 에 포함시켜서 제출하세요^^
모델: http://matrix.skku.ac.kr/2019-Album/DM-PBL/index.htm
(학생들의 질문/답변/활동 기록: http://matrix.skku.ac.kr/math4ai/PBL-Record/ )
http://matrix.skku.ac.kr/2018-album/LA-PBL.htm
Finalize) Preview 6.1, 6.2
Preview by 김찬호 19.04.29
Revise by 박재형,최세현, 김은민, 담딘바자르 19.04.29
Finalized by 김두원 19.04.29
Final OK by professor 19.04.29
(quoted from : http://matrix.skku.ac.kr/2018-DM/DM-Ch-6-Lab.html)
6 Counting Methods and the Pigeonhole Principle
Page 384.
Problem : Calculate gcd(2 * 52 * 72 * 134 , 74 * 132 * 17).
Sol :As the property of gcd function : gcd(ka,kb)=k*gcd(a,b),
gcd(2 * 52 * 72 * 134 , 74* 132* 17)= 72*132 * gcd(2 * 52 * 132 = 8450, 72 * 17 = 833).gcd(8450,833) = gcd(833,120) = gcd(120,113) = gdc(113,7) = gcd(7,1) = 1.
so, gcd(2 * 52 * 72 * 134 , 74* 132* 17).= 72*132 * 1 =8281
comment : I revise it easy to see. This exercise requires gcd's concept. gcd is greatest common divisor. So gcd (ka,kb) is equal to gcd(a,b).. Chapter 7
Problem 1.(new)
Use determinant to check whether the following vectors are linearly independent or not:, , , ,
Solution.
By Theorem 7.1.1. the following five vectors in, , , ,are linearly dependent because .
■Sage http://math3.skku.ac.kr/home/pub/476 by 황훌
x1=vector([1,1,-3,2,0])
x2=vector([0,2,1,3,0])
x3=vector([0,-1,0,-4,1])
x4=vector([0,-1,0,5,2])
x5=vector([2,2,-6,4,0])
A=column_matrix([x1,x2,x3,x4,x5])
print A.det()
Comment: 에서 위의 5개의 벡터가 기저(일차독립)일 필요충분조건은 ≠0이다.그러나 이 문제에서는 =0이므로 5개의 벡터가 일차독립이 아니다.
(틀린 Notation등을 수정하여 다시 기술해보면 다음과 같다.)


Final Comment
Gram-Schmidt 정규직교화는 이미 주어진 부분공간에 대한 기저를 활용하여, 같은 부분공간을 span하는 정규직교를 찾는 알고리즘이다. 기준이 되는 기저의 벡터를 정하고 나머지 벡터 중 하나를 골라 정사영을 펼쳐나감으로써 직교기저를 찾는 방법이다.
[Refinalized] [Final OK by TA] QR분해에서 (질문과 답^^) <--- Comment 달아 Finalize 하면 될 듯^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 25일 오전 00:05
[Final OK by TA] QR분해에서 (질문과 답^^) <--- Comment 달아 Finalize 하면 될 듯^^ by 신@@, 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 3일 오후 5:55
조회수 : 9
교수님, QR분해에서, A=QR이라고 할 떄, R은 A의 REF중의 하나가 되는 것인가요??
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
▶ QR 분해 http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html (실습!)
행렬
가
개의 일차독립인 열들을 가지면 여기에 Gram-Schmidt의 정규직교화과정을 적용하여 얻은 정규직교벡터들을 열로 하는 행렬
를 만들어 행렬
(여기서
은 상삼각행렬)로 분해가 된다. QR 분해는 최소제곱문제와 고윳값, 고유벡터를 구하는 문제를 해결하는데 많이 사용된다.
|
정리. |
QR 분해 |
행렬
가 rank
인
행렬이라면,
로 분해가능하다. 여기서
는
의 열공간 Col
의 정규직교기저로 만들어진
행렬이고,
은 가역인 크기
의 상삼각행렬이다.
이제 행렬
이고
인 경우
라 하자. Gram-Schmidt 정규직교화 과정에 의하여 행렬
의 열공간
의 정규직교기저
을 얻을 수 있다. 이제
와
사이의 관계를 알아보자.
![]()
가 Col
의 정규직교기저이므로
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
로 표현가능하다. 또한
(
)이므로 위의 표현은 다음과 같이 간단하게 표현가능하다. 즉,
![]()
![]()
![]()
.
이제 다음과 같이 상삼각행렬(upper triangular matrix)
을 정의하고,

앞서 정의한 행렬
와의 곱을 생각해보자. 행렬 곱
의
번째 열벡터는
이므로
의
번째 열벡터의 성분을 계수로 하는
의 열벡터들의 일차결합이다. 따라서
![]()
(1)
즉,
이다. 위에서 만들어진
차 정사각 삼각행렬
은 주대각성분이 모두 영이 아니므로, 가역행렬이다. 또한
이므로
는 (column) 직교행렬이다. 따라서 우리는 QR 분해(QR decomposition)
를 얻은 것이다.
행렬
가 다음과 같이 주어졌을 때
-분해를 구하여라.
![]()
풀이. 행렬
가 full column rank를 가지고 있으므로 QR 분해가 존재함을 알 수 있다. Gram-Schmidt 정규직교화를 다음 벡터들에 적용해보자.
,
,
그러면 정규직교화 과정을 통해 직교행렬
를 다음과 같이 구할 수 있다.
(직교벡터!! 열벡터의 내적들이 모두 zero)
그러면 앞의 (1)식으로부터 (삼각행렬)
을 구하면,
(삼각행렬)
따라서 다음과 같은 QR 분해를 얻을 수 있다.
(QR 분해
)
아래는 Sage가 제공하는 gram_schmidt() 함수를 수정하여 좀 더 직관적으로 그 과정을 확인하도록, gs_orth() 함수 코드를 만들어 QR 분해를 확인하였다. (자주 사용하는 함수는 함수 코드를 만들어 활용한다.)
# SageMath의 gram_schmidt() 함수를 보완하여 gs_orth()을 만들었음
def gs_orth(A): # 함수 정의
m, n = A.nrows(), A.ncols() # 행렬의 크기
r = A.rank() # 행렬의 rank
if m < n: # 행렬의 크기 확인
raise ValueError("The number of rows must be larger than the number of columns.")
elif r < n: # full column rank인지 확인
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt() # gram_schmidt 함수 활용
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)]) # Q의 transpose
R1 = Q1*A
Q = simplify(Q1.transpose()) # 정규직교기저로 만들어진 행렬
R = simplify(R1) # 상삼각행렬
return Q, R
A = matrix([[1, 0, 0], [1, 1, 0], [1, 1, 1]]) # 행렬 입력
Q, R = gs_orth(A) # QR 분해
print("Q =")
print(Q)
print()
print("R =")
print(R)
print()
print("Q*R =")
print(Q*R)
▶ 최소제곱문제를 QR 분해로 풀기
앞서 학습했듯이,
의 최소제곱해란 normal equation인
의 해이다. 여기서
가 가역행렬이라면
가 그 해가 된다. 그렇다면
의 역행렬을 구하는 것이 최소제곱해 문제를 해결하는 가장 중요한 열쇠가 된다. 이를 QR 분해를 이용하여 구해보자.
가 full column rank를 가지면, 다음과 같이 QR 분해된다.
![]()
그러면
![]()
(양변에
를 취해주자.)
이제 (
이 가역행렬이므로) 여기에 후진대입법(backward substitution)을 적용하면,
(유일해)
가 된다. 이와 같이 QR 분해는 선형연립방정식의 (최소제곱)해를 역행렬을 구하지 않고 손쉽게 구할 수 있도록 해주므로 다양한 계산이 필요한 컴퓨터 알고리즘의 연구에서 가장 중요한 도구로 여겨진다. QR 분해의 이론에 대해 좀 더 자세한 내용은 아래 주소를 참고하라.
http://matrix.skku.ac.kr/nla/ch7.htm
http://matrix.skku.ac.kr/sglee/03-Note/QR-Decomp.htm
http://matrix.skku.ac.kr/sglee/project/generalized-inverse/
다음 문제의 최소제곱해를 구하여라.

풀이 계수행렬
는 다음과 같이
분해된다.

이를 이용하면, 최소제곱해
를 얻는다.
![]()
최소제곱해 ■
# Sage의 gram_schmidt 함수를 보완하여 작성
def gs_orth(A): # 함수 정의
m, n = A.nrows(), A.ncols() # 행렬의 크기
r = A.rank() # 행렬의 rank
if m < n: # 행렬의 크기 확인
raise ValueError("The number of rows must be larger than the number of columns.")
elif r < n: # full column rank인지 확인
raise ValueError("The matrix is not full column rank.")
[G, mu] = A.transpose().gram_schmidt() # gram_schmidt 함수 활용
Q1 = matrix([G.row(i) / G.row(i).norm() for i in range(0, n)]) # Q의 transpose
R1 = Q1*A
Q = simplify(Q1.transpose()) # 정규직교기저로 만들어진 행렬
R = simplify(R1) # 상삼각행렬
return Q, R
A = matrix([[1, 3, 5], [1, 1, 0], [1, 1, 2], [1, 3, 3]]) # 계수 행렬 입력
b = vector([2, 3, -1, 2]) # 상수항 벡터 입력
Q, R = gs_orth(A) # QR 분해
print(R.solve_right(Q.transpose()*b)) # 최소제곱해
http://matrix.skku.ac.kr/math4ai/part1/
Final Comment
A의 QR분해는 RREF와는 관련이 없으며, 상삼각행렬의 편리함을 활용하기 위하여 사용하는 것이다. Gram-Schmidt 정규직교화 알고리즘이 선행되어야 하는데, 이 알고리즘을 사용하려면 먼저 A가 Full Column Rank여야 한다. 즉, QR분해가 가능하려면 A가 Full Column Rank여야 한다.
[Refinalized][Final OK by TA] 선형변환 T에 대한 이해 by 신@@ , 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 11:58
[Final OK by TA] 선형변환 T에 대한 이해 by 신@@ , 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 3일 오후 5:59
조회수 : 5
교수님, 선형변환 T의 kernel이라는 것이,
[T]의 null space라고 이해하면 맞나요??
http://matrix.skku.ac.kr/math4ai/part1/
5.2 핵(kernel)과 치역(range)
참고 동영상: http://youtu.be/9YciT9Bb2B0 http://youtu.be/H-P4lDgruCc
실습 사이트: http://matrix.skku.ac.kr/knou-knowls/cla-week-8-Sec-6-3.html
|
정의. |
핵(kernel), 단사, 전사, 전단사, 동형사상(isomorphism) |
(1)
이 선형변환일 때,
에 의한 상이
이 되는
안의 벡터 전체의 집합을
의 핵(kernel)이라 하고
로 나타낸다. 즉
![]()

(2) 변환
가
를 만족하면 단사(one-to-one; injective)라 한다.
(3) 선형변환
에 대하여, 임의의
의 상
전체의 집합을
의 치역(range)이라 하고
로 나타낸다. 즉,
.
특히,
, 즉 변환
가 임의의
에 대해
인
가 존재하면 전사(onto, surjective)라 한다.
(4) 선형변환
가 단사이고 전사 (전단사)이면
이 되고,
를
에서
으로의 동형사상(isomorphism)이라고 한다.
T가 R^n에서 R^m으로의 일차변환이라고 하면,
단사인 경우 n≤m 이어야 하겠죠~ 단사를 함수적 관점에서 보면 일대일 함수에 해당하는거구요~
T가 단사이기 위한 필요충분 조건이 ker T={0} (0벡터) 라고 하셨는데,
그 얘기는 [T]의 열벡터들이 일차독립이라는 얘기이기도 하겠군요.
이 얘기는 [T]가 Full Row 열 Column Rank라는 얘기이기도 하고,
T가 단사이면서 전사이기도 하다면 함수적 관점에서는 일대일대응 함수가 되는 것이고, 당연하게 m=n이 되면서 [T]가 정사각행렬이 될 것이고, 역행렬이 존재한다는 사실로도 나아갈 수 있겠네요..
이상구(LEE SANGGU)3월 24일 오후 3:06
선형변환 T의 kernel 은 T(x) =[T](x) = Ax = 0 되는 모든 x 들의 집합이므로 [T]의 null space라고 이해하면 맞습니다^^ 아주 잘 이해 하셨습니다.
이상구(LEE SANGGU)3월 24일 오후 3:08
2. T가 R^n에서 R^m으로의 일차변환이라고 하면, 단사인 경우 n≤m 이어야 합니다. 맞습니다. 단사를 함수적 관점에서 보면 1-1 함수에 해당하는 것이 맞습니다.
2. T가 단사이기 위한 필요충분 조건이 ker T={0} (0벡터) 라고 하셨는데, 그 얘기는 [T]의 열벡터들이 일차독립이라는 얘기입니다^^ <--- 맞습니다.
2. 이 얘기는 [T]가 Full 열(Column) Rank라는 얘기입니다^^ ( 행 Row 가 아닙니다!! <-- 이것만 혼돈하셨습니다)
이상구(LEE SANGGU)3월 24일 오후 3:09
T가 단사이기 위한 필요충분 조건이 ker T={0} (0벡터) 라고 하셨는데, 그 얘기는 [T]의 열벡터들이 일차독립이라는 얘기이기도 하겠군요. 이 얘기는 [T]가 Full Row Rank라는 얘기이기도 하고,
3. T가 단사이면서 전사이기도 하다면 함수적 관점에서는 일대일대응 함수가 되는 것 맞습니다. 그래서 역함수가 존재합니다. 당연하게 m=n이 되면서 [T]가 정사각행렬이 될 것이고, 가역행렬이 되고, 역행렬이 존재한다는 사실로도 나아갈 수 있습니다^^ < --- 모두 정확하게 이해하셧습니다.
신@@(2013****84)3월 24일 오후 3:15
아아 열벡터들이 곧 열공간의 기저이고 그 기저의 개수가 열공간의 차원이자 행렬 A의 Column Rank이니 Full Column Rank라고 하는 것이 올바른 표현이겠군요~
이상구(LEE SANGGU)3월 24일 오후 4:06
신군이 학구적이니까 너무 좋습니다^^ 그런데 Math4AI 는 성격이 좀 다른 Math & Coding 시간 이니까 ... ... 우선은 ...
(1) 제공한 용어와 개념을 주어진 대로 아주 쉽게 받아들이면서 ... (개념에 대하여 토론 하고) (구체적인 ... 각각의) 이미 잘 알려진 Fact 증명하는 것은 조금 미루고 (2) 먼저 Part 1 과 part 2 의 문제 풀이와 코드를 쭉 보면서 이해 하시고 ...
(3) 유사한 문제 를 코드를 바꾸어 가면서 하나 씩 풀어서 공유 하시고 ^^ 그럼 훨씬 자신감이 생기고 자신이 하고자 하는 말이 (conjecture) 맞는지 틀리는 지를 쉽게 확인이 가능합니다^^
(4) 그 다음에 ... 구체적인 detail 을 증명하는 것은 나중이나 Matrix Theory 과목 에서 집중적으로 하는 것이 효과적이니 ... 그렇게 추천할께요^^
신@@(2013****84)3월 24일 오후 4:14
아하 네넵 알겠습니다
Final Comment
선형변환의 핵과 치역, 전사, 단사에 대한 내용은 행렬의 성질과 함수의 정의역, 치역, 공역, 일대일함수, 일대일대응 내용을 결합하면 어렵지 않게 이해할 수 있음을 깨달았다.
[Refinalized] [Final OK by TA] 서로 다른 eigenvector의 orthogonality by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 11:55
조회수 : 0
[Final OK by TA] 서로 다른 eigenvector의 orthogonality by 신@@, 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 3일 오후 6:00
조회수 : 3
n차 정사각행렬의 서로 다른 고유 값에 대응하는 eigenvector 들은 일차독립이다. 그리고 며, 인 가 n개 존재하는데, 이들이 서로 orthogonal 하다고 하셨습니다. 그 이유가 무엇인가요??
이상구(LEE SANGGU)3월 24일 오후 3:55
Fact: eigenvectors with distinct eigenvalues are orthogonal. 신 군이 궁금해 한 정리는 이것인 듯하네요^^ : Eigenvectors of real symmetric matrices are orthogonal 증명은 여기에 있습니다.
https://math.stackexchange.com/questions/82467/eigenvectors-of-real-symmetric-matrices-are-orthogonal 입니다^^
이상구(LEE SANGGU)3월 24일 오후 3:57
How do I prove that eigenvectors corresponding to distinct eigenvalues of a real symmetric matrix are orthogonal?
증명;
http://matrix.skku.ac.kr/2010-Album/2010-MT-all-Solution-v1-sglee/2010-MT-all-Solution-v1-sglee.html (IE 에서 보세요)
또는
Alexander Farrugia, frequent user of linear algebra.
Answered Sep 8, 2016
Take a real symmetric matrix ݑ, and two distinct eigenvalues of ݑ, ݜ1 and ݜ2, such that ݑݑ¥1=ݜ1ݑ¥1 and ݑݑ¥2=ݜ2ݑ¥2. From ݑݑ¥1=ݜ1ݑ¥1, we get ݑ¥2ݑݑݑ¥1=ݜ1ݑ¥2ݑݑ¥1. From ݑݑ¥2=ݜ2ݑ¥2, we similarly obtain ݑ¥1ݑݑݑ¥2=ݜ2ݑ¥1ݑݑ¥2. But since ݑ is symmetric, ݑ¥2ݑݑݑ¥1=ݑ¥2ݑݑݑݑ¥1=(ݑݑ¥2)ݑݑ¥1=ݑ¥1ݑ(ݑݑ¥2)=ݑ¥1ݑݑݑ¥2. Also, clearly ݑ¥1ݑݑ¥2=ݑ¥2ݑݑ¥1. Thus ݜ1ݑ¥1ݑݑ¥2=ݜ2ݑ¥1ݑݑ¥2 (ݜ1−ݜ2)(ݑ¥1ݑݑ¥2)=0. But ݜ1−ݜ2≠0. Hence ݑ¥1ݑݑ¥2=0, as required.
신@@(2013****84)3월 24일 오후 3:58
네넵 감사합니다!
Final Comment
대칭행렬의 eigenvector들이 왜 orthogonal한지는 전치행렬에 대한 성질로써 유도가 가능하다는 것을 깨달았다.
[Refinalized] [Final OK by TA] 행렬의 대각화에 대한 설명 정리 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 11:48
[Final OK by TA] 행렬의 대각화에 대한 설명 정리 by 신@@, 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 3일 오후 6:02
조회수 : 5

http://matrix.skku.ac.kr/knou-knowls/CLA-Week-13.html
![]()
이상구(LEE SANGGU)3월 24일 오후 4:48
맞습니다. (행렬 이 n 개의 1차독립인 고유벡터를 갖는 경우 ... < 모든 행렬이 이 성질을 갖지는 않지만 > (실) 대칭행렬은 언제나 이 성질을 갖습니다.
[ (복소) Normal 행렬은 iff (if and only if) n 개의 1차독립인 고유벡터를 갖습니다. ] )
http://matrix.skku.ac.kr/knou-knowls/CLA-Week-13.html
그럼 P^-1 A P = D = diag { n 개의 고윳값들 } 로 주어진 행렬 A 에 닮음인 대각선 행렬 D 를 쉽게 구하는 것입니다^^
이상구(LEE SANGGU)3월 29일 오후 2:16
신@@ 군, 증명은
http://matrix.skku.ac.kr/2008-Lecture/LAA-sglee/index.html 에 모두 있어요^^ 그리고 실습실은 http://matrix.skku.ac.kr/knou-knowls/ 에 대부분 있습니다^^ 참고하여 정리하면서 ... 누구보다 먼저 적극적으로 ... 공유하고 A 를 받으세요^^
신@@(2013****84)3월 31일 오후 8:57
아하 네넵 알겠습니다!
Final Comment
대각화에 대한 중요한 개념들을 한번 쓰면서 정리가 되었다. 대각화의 결말은 주대각선 성분을 고유벡터로 만들어 분석하기 쉽게, 고윳값과 고유벡터로써 얻어지는 많은 성질들을 활용하는 데에 있다. Hermitian 행렬과 Unitary 행렬에 대해서는 복소행렬 내용이라 아직 정확한 이해가 어렵지만 차근차근 보고 이해하며 기존의 선형대수학 지식을 한층 넓혀가야겠다.
1. 책에 제시된 REF와 RREF의 정의에 대한 질문 – 김예훈(2020****54)
*질문
책에서는 행렬이 REF이면, 각각의 행의 선행요소는 1이 되어야 한다고 정의하고 있습니다.
하지만 다른 책(Linear Algebra and It's Applications)을 학습하면서, 정의가 서로 맞지 않다는 것을 깨달았습니다.
If a matrix in echeon form satisfies the following additional conditions, then it is in reduced echelon form(or RREF).
The leading entry in each nonzero row is 1.
Each leading 1 is the only nonzero entry in its column.
(Linear Algebra and It's Applications 내용 일부 인용)
http://matrix.skku.ac.kr/math4ai/
행렬 가 다음 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이다.
실습 사이트: http://matrix.skku.ac.kr/knou-knowls/CLA-Week-2-Sec-2-2.html (실습하세요!)
교재가 모두 맞습니다^^
아마 이 부분은 오류로 보는 것이 맞을까요? <--- 교재가 모두 맞습니다^^
*답변
오류 없습니다. 정의를 다시 보세요. 모든 책이 똑 같습니다.
1.row echelon form (or REF) 정의와 2. reduced row echelon form (or RREF).
둘 다
The leading entry in each nonzero row is 1. 와 각각 추가 2개와 3개 조건을 가집니다 .
이러한 질문을 한 이유는 REF의 정의를 읽으면서, 이것이 RREF의 정의가 아닌가라는 의문을 해결하기 위함이었다. 이전에 Linear Algebra and It’s Applications에서 학습한 내용에 따라 그 조건이 RREF라고 알고 있었다. 질문에 대한 답변으로 교수님께서는 책의 정의가 맞다고 하셨다.
Wikipedia의 영문으로 정의된 RREF를 읽었을 때는 의문점이 해소되지가 않았다. 여기서도 “0이 아닌 행 각각의 선행성분이 1이다.”가 RREF의 조건으로 나와있기 때문이었다.
하지만 Wikipedia의 한글 문서에서 새로운 사실을 알게 되었다. 바로 일부 문헌에서는 선행 계수 자체를 1로 표기한다는 것이다. 즉, 몇몇 문헌에서는 단순히 선행 계수(Leading Entry)라고 말하면, 그 자리의 값이 1이 된다는 것을 내포하고 있는 것이다. 그리고 RREF가 REF의 정의를 포괄하기에, REF에서 모든 선행계수가 1이면, 자동으로 RREF의 조건을 만족하게 된다.
![]()
그러나 Wikipedia의 Pivot에 대한 설명에서는, “종종 Pivot에 1이 오기는 하나, 1이 아닌 값도 가능하다“라고 설명하고 있다. (Pivot은 Leading Entry과 동등한 의미를 지니고 있다)
Wikipedia의 내용으로는 어느 쪽이 맞다고 결론을 내릴 수 없었다.
인터넷에서 계속 검색을 해보니, “The leading entry in each nonzero row is 1”이 REF의 조건이라고 보는 관점과 RREF의 조건이라고 보는 관점이 서로 섞여있었다.
RREF 관점 : https://blog.naver.com/hyunmonn/221826660033
REF 관점 : https://blog.naver.com/ptm0228/221888794878
저 주소 말고도 다양한 자료들이 있었는데, 비교적 최신에 작성된 글(2020년에 작성됨)만을 추려보았다. 이 두 관점의 차이는 REF의 Pivot 값이 모두 1이냐 1이 아니냐의 문제가 되는 것인데, 사실 이는 크게 중요하지 않다. 다음과 같은 행렬이 있다고 가정하자.
[ 1, 2, 0 ] [ 1, 2, 0 ]
[ 0, 0, 2 ] ~ [ 0, 0, 1 ]
[ 0, 0, 0 ] [ 0, 0, 0 ]
전자의 관점을 지니는 사람은 왼쪽 행렬은 REF가 아니라고 볼 것이고(2번째 행의 Pivot이 1이 아니기 때문이다), 후자의 관점을 지니는 사람은 왼쪽 행렬이 REF에 해당한다고 볼 것이다. 그리고 전자는 오른쪽 행렬을 REF이면서, RREF에 해당한다고 볼 것이고, 후자는 왼쪽 행렬과 오른쪽 행렬이 REF이고, 오른쪽 행렬만 RREF에 해당한다고 볼 것이다. 사실 이것을 엄격하게 구분할 필요가 없는 이유는 왼쪽 행렬과 오른쪽 행렬이 상등(Row Equivalent)이기 때문이다. 왼쪽 행렬은 ERO(Elementary Row Operation)으로 오른쪽 행렬을 만들 수 있으며, 그 역 또한 성립한다.
이러한 2가지 관점이 존재하는 이유는 아마 계산을 수행할 때, REF보다는 RREF를 자주 사용하기 때문인 것 같다. 또한 단순히 REF는 RREF를 만들기 위한 과정으로 전락되었기 때문일 수도 있다. 정확한 REF의 정의를 내릴 필요가 없어지게 되자, REF의 개념이 이중성을 지니게 된 것이다.
정리하면, REF에 대하여 두 가지 관점이 존재한다. 이 조건(“The leading entry in each nonzero row is 1”)이 REF에 해당한다는 관점과 RREF에 해당한다는 관점이다. 교수님께서는 전자의 관점을, 필자는 후자의 관점을 지니고 있는 것이었다. 사실 이 둘을 엄격하게 구분할 이유는 없다. 위에서 말한 대로 REF의 비중이 크지 않아서, RREF에 종속되는 것이라서 REF에 대한 정확한 정의를 내릴 필요가 없어지게 된 것이다. 그래서 결론은 관점의 차이일 뿐, 둘 다 맞는 표현이다.
2. [문제 변형] - 함수의 그래프와 극한 – 김예훈(2020****54)
1번과 2번 문제를 변형하여 풀어보았습니다.
1. 함수 f(x) = e^(-x)-1 (-1 < x < 0) / sin(x) (0 < x < pi) / x-pi (4 > x > pi)의 그래프를 그리시오.
<예시 코드>
#함수 정의
f(x) = e^(-x)-1 # -1 < x < 0
g(x) = sin(x) # 0 < x < pi
h(x) = x-pi # pi < x < 4
#plot 선언 후, EXP1에 할당
EXP1 = plot(piecewise([[(-1, 0), f(x)], [(0, pi), g(x)], [(pi, 4), h(x)]]), xmin=-1, xmax=4)
#EXP1 출력
show(EXP1)
<실행 결과>

#plot 기능을 사용하기 위해서 Jupyter Notebook을 사용하였습니다.
2. 극한 lim(x -- > pi/2)(tan(x)/|x-pi/2|)가 존재하면 값을 구하시오. 만일 값이 정의되지 않는다면(Not defined), 그 이유를 설명하시오.
<예시 코드>
f(x) = tan(x)/abs(x - pi/2) #함수 정의
limit(f(x), x = pi/2, dir="-") #좌극한 확인
limit(f(x), x = pi/2, dir="+") #우극한 확인
<실행 결과>

+Infinity
-Infinity
<결론>
좌극한과 우극한이 모두 무한대이기 때문에, 극한값은 존재하지 않는다.
#양의 무한대와 음의 무한대는 서로 다른 문자이지만, Sage에서는 이 둘을 같은 문자로 취급합니다. 즉, bool(limit(f(x), x = pi/2, dir="-") == limit(f(x), x = pi/2, dir="+"))은 True입니다.
<Comment>
황인성(2019****19)
1번 문제는 범위에 따라 서로 다른 함수를 그릴 수 있도록 Sage 코드를 짠 것이고
2번 문제는 특정 함수를 이용해 좌극한과 우극한을 확인하는 방법, 그리고 이를 바탕으로 극한값의 유무를 구하는 코드이네요
극한과 관련된 개념을 이해하는데 충분히 도움이 되었다고 생각합니다
김예훈(2020****54)
의견 달아주셔서 감사합니다.
3. [문제 변형] - 도함수와 접선의 방정식 – 김예훈(2020****54)
3번과 4번 문제를 변형하여 풀어보았습니다.
3. x^3 + 2e^x + ln(x)의 제 1계, 제 2계, 제 3계 도함수를 각각 구하시오.
<예시 코드>
f(x) = x^3 + 2*e^x + ln(x) #함수 정의
#for문을 이용한 연속적인 처리
for n in range(3):
f(x) = diff(f(x), x)
print("제 %d계 도함수 :" %(n+1), f(x))
<실행 결과>

제 1계 도함수 : 3*x^2 + 1/x + 2*e^x
제 2계 도함수 : 6*x - 1/x^2 + 2*e^x
제 3계 도함수 : 2/x^3 + 2*e^x + 6
#반복적인 과정을 단순화시키기 위해, for문을 사용하였습니다.
#Sagemath는 Python을 기반으로 하기 때문에, 예시처럼 Python 언어를 사용하여 표현할 수 있습니다.‘
4. 점 (0, 2)에서 함수 y = cos(2x) + e^x에 대한 접선의 방정식을 구하시오.
<예시 코드>
f(x) = cos(2*x) + e^x #함수 정의
f1(x) = diff(f(x), x) #함수 미분
y(x) = f1(0)*(x - 0) + f(0) #접선 정의
print("y =", y(x)) #출력
y = x + 2
<실행 결과>


<Comment>
이제 대부분의 주어진 (n차 미분가능한) 함수의 도함수 구하는 것은 문제 없겠네요^^^ 잘했어요^^
# http://matrix.skku.ac.kr/KOFAC/ 에서 실습
f(x) = x^3 + 2*e^x + ln(x) #함수 정의
#for문을 이용한 연속적인 처리
for n in range(17):
f(x) = diff(f(x), x)
print("제 %d계 도함수 :" %(n+1), f(x))
제 1계 도함수 : 3*x^2 + 1/x + 2*e^x
제 2계 도함수 : 6*x - 1/x^2 + 2*e^x
제 3계 도함수 : 2/x^3 + 2*e^x + 6
제 4계 도함수 : -6/x^4 + 2*e^x
제 5계 도함수 : 24/x^5 + 2*e^x
제 6계 도함수 : -120/x^6 + 2*e^x
제 7계 도함수 : 720/x^7 + 2*e^x
제 8계 도함수 : -5040/x^8 + 2*e^x
제 9계 도함수 : 40320/x^9 + 2*e^x
제 10계 도함수 : -362880/x^10 + 2*e^x
제 11계 도함수 : 3628800/x^11 + 2*e^x
제 12계 도함수 : -39916800/x^12 + 2*e^x
제 13계 도함수 : 479001600/x^13 + 2*e^x
제 14계 도함수 : -6227020800/x^14 + 2*e^x
제 15계 도함수 : 87178291200/x^15 + 2*e^x
제 16계 도함수 : -1307674368000/x^16 + 2*e^x
제 17계 도함수 : 20922789888000/x^17 + 2*e^x
for 문을 이용하여 연속적인 미분 과정을 수행하면 편리하기는 하나, 교수님께서 말씀하신 대로 함수에 대한 n번째까지의 도함수가 존재한다는 것이 전제되어야 한다. 미분 도중에 미분 불가능한 함수가 나오게 되면, 그 후에 작업은 이루어지지 않을 것이다. 그래서 Python 내에 있는 예외 처리 기능인 try, except를 사용하여 이러한 문제를 해결할 수 있다.
<수정된 코드>
f(x) = x^3 + 2*e^x + ln(x) #함수 정의
#for문을 이용한 연속적인 처리
for n in range(3):
try:
f(x) = diff(f(x), x)
print("제 %d계 도함수 :" %(n+1), f(x))
except:
break
4. 3차원 그래프 코딩 이해 - 신재열(2013****84)
var('t') # https://sagecell.sagemath.org/
r = vector([cos(2*t), sin(3*t), t]) # Define r(t)
C = parametric_plot3d(r, (t, 0, 2*pi), color = 'green', thickness = 2) #
Sketch curve
t1 = pi/10 # location of arrows
t2 = 2*pi/3
t3 = 5*pi/3
Ar1 = arrow3d(r(t = t1), r(t = t1+0.1), color = 'green') # Draw arrows
Ar2 = arrow3d(r(t = t2), r(t = t2+0.1), color = 'green')
Ar3 = arrow3d(r(t = t3), r(t = t3+0.1), color = 'green')
C + Ar1 + Ar2 + Ar3
마지막 줄이 의미하는 바가 무엇인지 잘 모르겠습니다. 한 좌표공간 안에 t의 자취에 따라 그려지는 곡선과 세개의 화살표를 그리라는 것인가요?
곡선이 그려진 그림 자체를 변수 C에 대응하였고
t가 0.1만큼 변할 때 지나가는 자취로써 그려지는 화살표 세개를 Ar1, Ar2, Ar3 변수에 저장한 것이라고 이해하였는지 맞는지 궁금합니다..
<comment>
이상구(LEE SANGGU)
마지막줄 에 빠진 명령어 채우세요^^
김예훈(2020****54)
Sketch curve앞에 있어야할 #가 없어서 문제가 발생하는 것 같습니다.
이상구(LEE SANGGU)
var('t') # https://sagecell.sagemath.org/
r = vector([cos(2*t), sin(3*t), t]) # Define r(t)
C = parametric_plot3d(r, (t, 0, 2*pi), color = 'green', thickness = 2) #Sketch curve
t1 = pi/10 # location of arrows
t2 = 2*pi/3
t3 = 5*pi/3
Ar1 = arrow3d(r(t = t1), r(t = t1+0.1), color = 'green') # Draw arrows
Ar2 = arrow3d(r(t = t2), r(t = t2+0.1), color = 'green')
Ar3 = arrow3d(r(t = t3), r(t = t3+0.1), color = 'green')
show(C + Ar1 + Ar2 + Ar3)
이상구(LEE SANGGU)4월 17일 오전 11:32
김예훈씨 , 맞습니다. 잘 봤어요^^ 복사해 오면서 줄이 바꾸이었네요^^
5. 대수의 법칙 관련 문제 변형 - 김예훈(2020****54)
*동전을 k번 던져 앞면과 뒷면의 상대도수를 계산한다고 가정하자. 또한 k의 값은 10의 n제곱으로 한정한다. n의 값을 증가시키면서, 각각의 상대도수가 0.5에 수렴하는 것을 보여라.
--------------------------------
res1 = prop.table(table(sample(c('F', 'B'), 10, replace = T)))
res2 = prop.table(table(sample(c('F', 'B'), 100, replace = T)))
res3 = prop.table(table(sample(c('F', 'B'), 1000, replace = T)))
res4 = prop.table(table(sample(c('F', 'B'), 10000, replace = T)))
res5 = prop.table(table(sample(c('F', 'B'), 100000, replace = T)))
res6 = prop.table(table(sample(c('F', 'B'), 1000000, replace = T)))
res7 = prop.table(table(sample(c('F', 'B'), 10000000, replace = T)))
# 'replace = T'는 중복을 허락하여 값을 선택하는 sample의 옵션이다.
print(cbind(res1, res2, res3, res4, res5, res6, res7)) # 값들을 행으로 묶어서 출력
------------------------------

---------------
왼쪽 그래프(B관련 그래프)와 오른쪽 그래프(F관련 그래프)는 index 1에서 index 3까지 산발적인 형태를 보이나, index 4에서부터는 0.5에 수렴하는 양상을 보인다. 이것으로 보아 대수의 법칙은 직관적으로 성립한다고 할 수 있다.
이상구(LEE SANGGU)5월 11일 오전 7:01
대수의 법칙이 성립하는 것을 직관적으로 확인 할 수 있어서 좋습니다.
6. 라이브러리 설치 관련 문제해결 – 김예훈(2020****54)
조건부 확률 문제를 푸는 과정에서, 'sets'라는 라이브러리를 사용하지만, 실제 그 라이브러리를 불러오는 명령어를 입력하면 다음과 같은 오류가 뜨는 것을 확인하였습니다.
library('sets')
Error in library("sets") : there is no package called ‘sets’
오류의 원인은 'sets'라는 라이브러리가 존재하지 않는다는 것입니다. 그래서 그 라이브러리를 따로 설치하는 과정이 있어야 합니다. 하지만 sagemath의 sagecell은 R에 대한 라이브러리가 설치되어 있지 않은 형태이며, sagemath.org 서버의 쓰기(Writing) 자체가 막혀있기 때문에 설치 명령어도 작동하지 않습니다.

더이상 sagemath에서는 'sets'라는 라이브러리를 사용할 수 없을 것 같아서, 컴퓨터에 직접 r-base를 설치하여 라이브러리를 설치하는 방법으로 전환하였습니다.
설치 방법은 간단합니다.
install.packages('이름') : 패키지 설치
remove.packages('이름') : 패키지 제거
update.packages() : 패키지 업데이트
위의 명령어를 이용하여 install.packages('sets')라고 입력하면 자동으로 설치가 됩니다.


도움이 되고자, 개인적으로 경험했던 문제의 해결방법을 올려봅니다.
이상구(LEE SANGGU)5월 10일 오후 8:48
굿^^http://math1.skku.ac.kr/home/pub/보시고http://math1.skku.ac.kr 에서 id 만들고 사용 하시면, 라이브러리 사용도 자연스레 가능 합니다.
이상구(LEE SANGGU)5월 11일 오전 4:42
Good. 김예훈 씨,해 보는 것이 제일중요합니다. 그런데 ... part 3 책 보면서 궁금 한 것은 없었나요? 질문하는 것도 학습의 중요한 부분이고, 더 중요한 것은1. 다른 학생의 풀이를 보고 comment 주는 것도 중요한 수업의 일부이니 ... try to give your comment or 답글그 외에는 모두 잘했습니다.
김용훈(2019****23)5월 11일 오후 10:07
이 글 내용이 이해하기에 복잡해보입니다. 혹시 괜찮다면 라이브러리관련된 난관에 봉착한 저의 글을 읽어주실 수 있나요?
이상구(LEE SANGGU)5월 12일 오후 6:26
지금은 라이브러리 사용이 목표가 아니니 ... 책을 먼저 따라서 해보시고 책 안의 내용 이해 안되것 질문 하세요. 아래는 우리가 어제 만든 도구인데 ...
http://sagecell.medicyan.info/?q=eqzpmz 은 라이브러리 사용 합니다.
7. 조건부 확률 관련 문제 변형, 신재열 님 ... 답 확인 부탁합니다^^ [수정 완료] - 김예훈(2020****54)
*1000명의 사람이 한 장소에 모인다고 가정하자. 이중에서 30%는 걸어서, 50%는 대중교통을 이용하여, 20%는 자가용을 이용하여 왔다고 한다. 또한 자가용을 이용한 사람의 70%, 대중교통을 이용한 사람의 40%, 도보를 이용한 사람의 0%는 타 지역 거주자이다. 타 지역 거주자의 수는 몇 명인가? 그리고 타 지역 거주자라는 전제에서, 그 사람이 대중교통을 이용하였을 확률은 몇인가?
------------------------------
#확률
A = 0.3 # 도보
B = 0.5 # 대중교통
C = 0.2 # 자가용
# 조건부 확률
EX_A = 0.0
EX_B = 0.4
EX_C = 0.7
# 첫 번째 문제
print("%d" %int(1000*(A*EX_A + B*EX_B + C*EX_C)))
# 두 번째 문제
EX = (A*EX_A + B*EX_B + C*EX_C)
B_EX = EX_B*B/EX
print(B_EX)
------------------------------

------------------------------
타 지역 거주자의 수는 340명이며, 타 지역 거주자 중, 그 사람이 대중교통을 이용할 확률은 약 58.82353, 즉 58.8%이다.
이상구(LEE SANGGU)5월 11일 오후 12:07
지금부터 14주차까지 (1) 질문 제일 많이 하는 학생, (2) 답변 제일 많이 하는 학생 중 일부는 (질문과 답변의 질을 일부 고려하여) 모두 A 주려고 합니다. Try^^
김용훈(2019****23)5월 11일 오후 10:20
암산으로 풀어보았는데 자꾸 틀린 답이 나와서 이유를 알아봤더니 도'걸어서 온 사람'의 0%가 타 지역 주민이었다는 부분에 대한 해석이 다른 것 같습니다. 단순히 생각해보았을 때 대중교통을 이용한 사람이 500명인데 그 중 40%면 200명이 타 지역주민이고 자가용을 이용한 200명 중 70%가 타 지역주민이므로 140명이 됩니다. 그리고 걸어서 온 사람 중에서는 타 지역주민이 없으므로 타 지역주민은 340명이 아닌가요? 제가 무엇을 누락하고 생각하는 건지 잘 모르겠습니다.
이상구(LEE SANGGU)5월 12일 오전 9:15
신재율군에게 한번 직접 물어보세요^^
신재열(2013****84)5월 12일 오후 8:38
신재열군인데 오타이신듯하네요..ㅋㅋㅋ
신재열(2013****84)5월 12일 오후 8:43
제가 지금 봤는데 조건부 확률 변수 설정에서 헷갈리셨어요..기본 확률에 대한 변수에서는 A, B, C를 각각 도보, 대중교통, 자가용 데이터를 갖고오셨는데,조건부 확률에 대한 변수를 선언하실 때는 EX_A, EX_B, EX_C를 각각 자가용, 대중교통, 도보 데이터에서 갖고 오셨어요~전혀 관련없는 데서 곱사건의 확률을 계산하였기에 오류가 나왔네요~계산해보면 1번 문제는 340명, 2번 문제는 10/17 나옵니다.
김예훈(2020****54)5월 13일 오전 00:42
죄송합니다.. 코드를 문제와 다르게 작성했네요..지적해주셔서 감사합니다!
8. [FINAL]프로그램 오류발생시 - 김용훈(2019****23)



20200511_220209.jpg
20200511_220218.jpg
20200511_220229.jpg
사진과 같은 오류가 뜨는데 어떻게 해결해야할까요? 김예훈님이 라이브러리관련 글을 게시했기에 참고하려했으나 내용이해가 되지않았고 교수님의 댓글 중 아이디를 만들어 사용하면 라이브러리 이용이 가능하다고 하셨는데 그 때 역시 마찬가지 오류가 떴습니다.
이상구(LEE SANGGU)5월 11일 오후 10:15
이것은 Sage 명령어입니다. 오른쪽 아래 박스에서, R 을 Sage 로 바꾸고 해 보세요^^sagecell.sagemath.org 이나 우리가 새로 만든 http://sagecell.medicyan.info/에서도 해보세요^^
김예훈(2020****54)5월 13일 오전 1:06
늦게 봐서 죄송합니다. 교수님의 말씀처럼, R 언어가 아닌 Sage 언어로 작성된 코드입니다.R 언어로 굳이 바꾸자면, 'Set = ([1, 2, 3])'이라는 표현을 'set =(1, 2, 3)'으로 바꾸어서 사용하실 수 있습니다.또한 cardinality는 집합의 크기이며, R에서는 length를 이용하여 집합의 크기를 표현할 수 있습니다.
library('sets')
s = set(1, 2, 3, 4, 5, 6)
a = set(2, 4, 6)
res = length(a)/length(s)
print(res)
김용훈(2019****23)5월 15일 오전 11:30
R이 아니라 sage 명령어 였군요! 간단히 해결됐습니다. 예훈님의 답변 감사합니다!
9. 책 내용의 사소한 오류 – 김예훈(2020****54)

'이산확률함수(Discrete Probability Function)'이라고 표기하는 것이 맞는 것 같은데, 책에서는 '이산확률함수(Probability Function)'이라고 적혀있습니다.
크게 문제되는 부분은 아니나, 발견을 해서 올려봅니다.
이상구(LEE SANGGU)5월 17일 오후 1:55
교재 p. ??? 에서'이산확률함수(Discrete Probability Function)' <--- '이산확률함수(Probability Function)' 로 고칩시다^^PBL 보고서에 이런 부분들 자세히 적고 ... Bonus 점수 요구하세요^^ 오타 하나에 1 점씩 Bonus 점수 줄께요^^
김예훈(2020****54)5월 17일 오후 8:19
223 페이지(정의. 확률분포)입니다.
10. 이항분포 관련 R 언어 정리 – 김예훈(2020****54)
*이항분포
[d, q, p, r] + binom
dbinom : d의 의미는 정확히 무엇의 약자인지는 파악하지 못하였으나, 확률변수에 대한 입력값을 이항분포의 이산 확률 함수에 대입하여 값을 제시하는 기능이다.
>>>dbinom(입력값, 시행 횟수, 사건이 발생할 확률)
qbinom : q는 양(quantity)를 의미하며, 확률값에 대응하는 입력값을 출력하는 기능이다. 예를 들어 사건이 발생할 확률이 0.5라고 한다면, 그것에 대응하는 값을 출력해준다. 확률에 대응하는 값을 구할 때, 하나의 값이 아닌 한 지점으로부터 끝 지점까지 모두 더한 확률에 대응하는 값을 찾는다. 끝 지점에 대한 방향을 정하고자 할 경우, 'lower.tail' 옵션을 사용하면 된다. 'lower.tail = T'는 왼쪽으로, 'lower.tail = F'는 오른쪽으로 처리한다.
>>>qbinom(확률, 시행 횟수, 사건이 발생할 확률, lower.tail = T or F)
pbinom : p는 확률(probability)를 의미하며, qbinom과 반대의 기능을 수행한다. 즉, 값을 입력받고 확률을 출력한다. 입력되는 값을 기점으로, 끝 지점까지의 값들을 모두 더하여 확률을 구한다. 위에서 언급한 'lower.tail' 옵션을 사용하여 끝 지점에 대한 방향을 정할 수 있다.
>>>pbinom(입력값, 시행 횟수, 사건이 발생할 확률, lower.tail = T or F)
rbinom : r은 무작위(random)를 의미하며, 이항분포에 속하는 모집단에서 제시된 수만큼 무작위로 값을 추출하는 기능이다.
>>>rbinom(추출 횟수, 시행 횟수, 사건이 발생할 확률)

cf) d, p, q, r의 의미는 다른 분포에 대하여 동일하게 적용되는 경우가 많다. 대표적으로 포아송 분포도 dpois, qpois 처럼 사용할 수 있다.

이상구(LEE SANGGU)5월 17일 오전 4:26
dbinom : d의 의미는 아마 density (or discrete) 의 약자 일 것입니다.이항분포의 밀도 함수, 누적 분포 함수, 분위수 함수, 난수 발생을 위한 R 함수 및 모수는 다음과 같습니다.구분이항분포(binom) R 함수/모수밀도 함수d dbinom(x, size, prob)누적 분포 함수ppbinom(q, size, prob, lower.tail = TRUE / FALSE)분위수 함수qqbinom(p, size, prob, lower.tail = TRUE / FALSE)난수 발생rrbinom(n, size, prob)출처: https://rfriend.tistory.com/99 [R, Python 분석과 프로그래밍의 친구 (by R Friend)]
김예훈(2020****54)5월 17일 오후 8:24
좋은 정보 주셔서 감사합니다!
11. 이항분포의 평균과 분산 - 김예훈(2020****54)
1. 이항분포의 평균 성립 여부 확인

exp의 값(기댓값)과 표본의 평균값이 유사하다는 것을 확인할 수 있다.
그래서 이항분포의 평균이 n*p라는 것은 직관적으로 성립한다.
2. 이항분포의 분산 성립 여부 확인

표본의 분산이 var의 값(분산)에 근사한다는 것을 확인할 수 있다.
그래서 이항분포의 분산이 n*p*(1-p)라는 것은 직관적으로 성립한다.
(아직 R에서 for문을 사용할 줄 몰라서, 코드를 비효율적으로 작성한 것이 좀 아쉽다)
3. 포아송분포의 평균 성립 여부 확인

포아송분포의 평균과 분산은 λ이다.
확인해보면, 표본의 평균값이 포아송분포의 평균값과 근접한다는 것을 알 수 있다.
그래서, 포아송분포의 평균이 λ라는 것도 직관적으로 성립한다.
이상구(LEE SANGGU)5월 17일 오후 3:40
포아송 분포는 이항분포와 같은 형태의 그래프를 가집니다.또한 포아송 분포같은 경우엔 정말 랜덤한 현상인지 아닌지에 대하여 감지하는데 사용됩니다.예를들어 랜덤한 현상 중 하나인 비행기 사고의 포아송 분포가 포아송 분포형태의 그래프를 가지지 않는다면 비행기 사고가 랜덤하지 않고 의도적으로 발생했다는 것을 말해줍니다. 또한 포아송 분포를 시간에 대해서 보면 event가 몰려서 나오게 되는 특징이 있습니다. 그 이유는 랜덤한 사건을은 몰려서 일어나기 때문입니다. 이것은 실제로 수학적으로도 증명이 되었다고 합니다. 따라서 안좋고 힘든일이 연달아 일어나더라도 힘내서 견디다 보면 좋은날이 올 것 입니다. 만약 안좋은 일이 한달간격으로 주기적으로 나타난다면 그 안좋은 일은 랜덤한 사건이 아닌 의도적일 가능성이 크므로 반드시 의심해봐야 합니다.[출처] 이항 분포(Binomial distribution) &포아송 분포(Poisson distribution)|작성자 장용희https://blog.naver.com/cj3024/221236533062
12. Part 2 문제 변형 및 설명 - 김예훈(2020****54)
1. 점 (5, -1, 10)에서 평면 x+4y+7z-6=0에 이르는 거리를 구하여라.
#코드
v = vector([5, -1, 10])
nv = vector([1, 4, 7])
d = -6
distance = abs(v.dot_product(nv) + d)/v.norm()
print(distance)
#결과
65/42*sqrt(14)
사실상 Sage에서는 점과 평면사이의 거리를 구하는 기능이 없으므로, 직접 구현해야 한다. 공식의 (aA+bB+cC)부분은 두 벡터 (a, b, c)과 (A, B, C)의 내적으로 표현될 수 있다. 그리고 d는 따로 변수를 할당한 후 내적의 값과 더해주면 된다. 또한 sqrt(a^2 + b^2 + c^2)은 벡터 (a, b, c)의 크기를 구하는 기능인 norm을 이용하여 표현될 수 있다. 이러한 것들을 조합하여, 점과 평면사이의 거리를 구할 수 있다.
2. 다음 선형연립방정식을 Gauss-Jordan 소거법으로 풀어라.
#코드
a = matrix(5, 5, [2, 1, 1 , -2, 3, -2, 1, -6, 1, 1, -1, -1, 5, -1, 2, -8, 7, 5 ,1, 2, 9, 4, -4, 5, 1])
b = vector([1, 2, 3, 4, 5])
print(a.augment(b).rref())
#결과
[ 1 0 0 0 0 -604/3227]
[ 0 1 0 0 0 –1328/3227]
[ 0 0 1 0 0 1063/6454]
[ 0 0 0 1 0 9623/6454]
[ 0 0 0 0 1 9903/6454]
A라는 5X5 행렬을 만들고, B라는 벡터를 만든 후에, 이 둘을 첨가하였다. 물론 5X6 행렬로 바로 작성하면, 이 작업을 거치기 않아도 된다. 그 후에 RREF를 이용하여 행렬을 감축시켰다. 오른쪽 끝에 있는 값이 바로 각각의 변수의 대한 해(Solution)이다.
3. 기본행 연산을 이용하여 다음 행렬의 역행렬을 구하여라.
#코드
a = random_matrix(ZZ, 4, 4)
I = identity_matrix(4)
print(a)
print(a.augment(I).rref())
#결과
[ 0 38 14 16]
[-1 0 -2 2]
[-5 1 -3 1]
[-1 -6 7 -1]
[ 1 0 0 0 -2/649 199/1947 -136/649 -106/1947]
[ 0 1 0 0 10/649 -346/1947 31/649 -119/1947]
[ 0 0 1 0 19/1298 -134/1947 -3/649 179/1947]
[ 0 0 0 1 17/1298 313/649 -71/649 42/649]
4X4 무작위 행렬을 만들고, 그것을 4X4 단위행렬과 결합(Augment)한다. 그리고 그 행렬을 RREF하면, 죄측은 단위행렬이 되고, 우측은 새로운 4X4 행렬이 나오게 된다. 이 과정은 기본행 연산을 이용하여, 단순한 방법(RREF)으로 역행렬을 구하는 방법이다.
4. 다음 행렬식을 (a) 먼저 손으로 구하고, (b) 문제를 변형하여 새로운 문제를 만든 후, 그 문제에 대하여 Sage로도 구하시오.
#코드
a = random_matrix(ZZ, 4, 4)
print(a)
print(a.determinant())
#결과
[ 3 1 8 1]
[-1 -1 -1 -4]
[11 -1 -1 1]
[-1 -1 5 -1]
528
행렬의 크기가 커지면 커질수록 행렬의 행렬식을 구하는 것은 어려워진다. 왜냐하면, 계산해야할 부분이 많아지기 때문이다. 행렬을 간단한 형태로 변형하여 행렬식을 구하는 방법과 Cofactor Expansion을 이용하여 구하는 방법이 있는데, 위에서 무작위로 배정된 행렬을 구하기 위해, 두 방법을 동시에 사용하였다. 먼저 행렬을 규칙에 따라 감축시킨 후, 0이 많은 행 또는 열을 따라 Cofactor Expansion을 적용하였다. Sage에서는 이와 같은 과정이 A.determinant()로 한번에 끝난다.
5. 교재에서 3차 행렬 의 고유값을 구한 방법과 같은 방법으로, 각자가 만든 새로운 5차 행렬의 5개의 고유값 (중근포함)과 고유벡터를 구하라.
#코드
a = random_matrix(ZZ, 5, 5)
print(a)
print(a.eigenvalues())
print(a.eigenvectors_right())
#결과
[ -1 1 -1 18 0]
[ 1 -1 -3 1 0]
[ -3 -3 10 -30 2]
[ -6 11 1 0 6]
[ 0 -1 21 -1 0]
[-6.260606413880177?, -2.525311568535656? - 2.452038151119392?*I, -2.525311568535656? + 2.452038151119392?*I, 9.65561477547575? - 11.84032096063191?*I, 9.65561477547575? + 11.84032096063191?*I]
[(-6.260606413880177?, [(1, -0.5853550937974717?, -0.7943973776413986?, -0.3038693720957836?, 2.522618324889699?)], 1), (-2.525311568535656? - 2.452038151119392?*I, [(1, -0.3592848494391023? + 0.5506071863800691?*I, -0.3270261826547048? - 0.0706232637850957?*I, -0.08294738343062546? - 0.1707371445158087?*I, 1.678328920212667? - 0.8919168585772876?*I)], 1), (-2.525311568535656? + 2.452038151119392?*I, [(1, -0.3592848494391023? - 0.5506071863800691?*I, -0.3270261826547048? + 0.0706232637850957?*I, -0.08294738343062546? + 0.1707371445158087?*I, 1.678328920212667? + 0.8919168585772876?*I)], 1), (9.65561477547575? - 11.84032096063191?*I, [(1, 0.05129474580674115? + 0.4175459081136611?*I, -1.324978549352723? - 1.536063859633150?*I, 0.5155189711286822? - 0.7663294849099289?*I, 0.4441336462029072? - 2.760038917742413?*I)], 1), (9.65561477547575? + 11.84032096063191?*I, [(1, 0.05129474580674115? - 0.4175459081136611?*I, -1.324978549352723? + 1.536063859633150?*I, 0.5155189711286822? + 0.7663294849099289?*I, 0.4441336462029072? + 2.760038917742413?*I)], 1)]
무작위로 5X5 행렬을 만든 후, 그 행렬의 고유값을 A.eigenvalues()로, 고유벡터를 A.eigenvectors_right()로 각각 구하였다. 값들을 보면 ‘I’라는 기호가 나오는데, 이는 허수를 의미한다. 5차 특성다항식을 풀면서 발생할 수 있는 값이다. 그렇기에 행렬은 실수계가 아닌 복소수계에 있는 것이다.
이상구(LEE SANGGU)5월 24일 오후 10:17
다른 학생이 이미 한문제는 21세기 지금 .... 같은 일 반복 하기보다. 아래 그 학생이
공유한 것 에 가서.
Revise 또는 코멘트 달고 Finalize or Re-Finalize 하시기를 권합니다.

□ 4월 설명(소감)
이번 미분적분학을 배우면서 사실 모르는 개념은 거의 후반부에나 있었지만, 다시 배우는 개념들도 헷갈리기는 매한가지였다.
QnA 덕분에 애매했던 개념들은 확실하게 할 수 있었고, 몰랐던 개념들은 제대로 이해할 수 있었다.
8주차부터 12주차 동안 다음 15개의 글을 작성 및 참여했습니다. 날짜는 제가 작성 혹은 참여했을 때의 날짜를 기준으로 작성하였습니다.
* 10주차에서 배운 개념들로 3문제 풀이 (9주차 5월 8일)
* TakeHomeExam3 Part2 5문제 변형해서 풀어보았습니다. (11주차 5월 20일)
* 중심극한정리(Central Limit Theorem) 에 대하여 토론하세요^^ by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글참여)
* 베이즈 정리(Bayes’ theorem) 에 대해 토론 하시오. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* 대수의 법칙(Law of large number)에 대해 토론하세요. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* [매경시평]... 혁신의 역사, 누군가가 시킨 것을 단순 이행하는 업무란 ... by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Deepo 란? Deepo is a Docker image with a full reproducible deep learning research environment. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Chapter 3. Part 2. 확률변수 문제 풀이 by 조윤근(2016****14)(12주차 5월 26일 - 댓글 참여)
* for t in range (0,2)? by 신재열(2013****84) (12주차 5월 26일 - 댓글 참여)
* TakeHomeExam3 Part6 3문제 변형해서 풀어보았습니다. (12주차 5월 28일)
* A 받으려는 학생과 F 면하려는 학생들은 이번 주 정말 열심히 Makeup 하셔야 합니다^^ 어제 STRONG KOREA 2020 동영상 (4시간) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 최소제곱문제(least squares problem) : 최소제곱해, 선형회귀, 최소제곱직선 by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 경사하강법(Gradient Descent Algorithm) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 주성분 분석(Principal Component Analysis) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] Math4AI 인공지능 (고등학교) 수학 - Tools by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)



이상구(LEE SANGGU)5월 9일 오후 10:33
Very good
이상구(LEE SANGGU)5월 11일 오후 12:06
지금부터 14주차까지 (1) 질문 제일 많이 하는 학생, (2) 답변 제일 많이 하는 학생 중 일부는 (질문과 답변의 질을 일부 고려하여) 모두 A 주려고 합니다. Try^^

민재필(2015****15)5월 22일 오전 11:27
law of large number 와 비슷한 개념입니다. 어떤 무작위 변수가 있을 떄 그 변수의 수가 많아지면 정규분포를 따릅니다. 이는 정규분포를 따르지 않는 변수의 null hypothesis 를 test 할때 유용하게 쓸 수 있습니다. sample size 가 크면 t table 의 값이 없을 때 대신 z test 를 사용할 수 있습니다. 계산도 간편해지는 측면이 있습니다. 보통 n=30이면 central limit theorem을 쓸 수 있다고 알고 있습니다.
황인성(2019****19)5월 22일 오후 5:53
실제로 이 중심극한정리를 사용하는 예시들은 정규분포를 사용하는 모든 통계들이지만, 그중에서도 대표적인 것은 방송사에서 하는 여론조사라고 생각합니다. 모집단의 분포가 정규분포에 가까울수록 방송사들의 여론조사에 대한 분석의 신뢰도가 상승할 것이기에 중심극한정리가 중요하게 여겨질 것입니다.
조완제(2016****76)5월 25일 오후 11:35
중심극한정리는 여러가지 장점이 있습니다. 우선 샘플수가 적어도 모집단의 평균을 거의 정확하게 알 수 있습니다. 또 마찬가지로 분산도 거의 정확하게 알 수 있습니다. 그리고 모든 데이터를 정규분포로 만들 수 있습니다. 그래서 정규분포를 가정하는 통계적 기법을 적용시킬 수 있습니다.



김승한(2012****19)5월 17일 오후 10:22
ai(i=1,2,,,n)가 s의 분할로 이루어진 집합이라는 점이 ai(i=1,2,,,n) 끼리 서로 배반사건의 의미로 받아집니다. 그것을 이용해 조건부확률의 공식을 사용하여 확장한 정리가 베이즈 정리라 생각듭니다.
예제와 같이 확률의 합이 100%가 나올때만 사용이 가능한 정리인 것으로 보입니다.
이상구(LEE SANGGU)5월 18일 오후 1:15
그래서 제일 먼저 수학적으로 ... partition (분할) 이 존재하는 집합인지 아닌지 확인하는 것 ... 이 중요하답니다.
민재필(2015****15)5월 22일 오전 11:36
인공지능의 설계에 있어서 베이즈 정리는 유용하게 사용됩니다. 인공지능에서 휴리스틱을 사용할 때 그 전에 학습했던 것을 기반으로 decision tree를 생성하는데 이는 베이즈 정리와 매우 유사하다고 생각됩니다.
황인성(2019****19)5월 22일 오후 5:59
인공지능이 베이즈 정리를 사용하는 것은 사전 확률 체계의 업데이트를 위한 것입니다. 새로운 정보를 계속해서 학습하면서, 여려 경우의 확률들을 조합해 판단을 위한 전체적인 기준을 확립하는 데 이용되는 원리라고 생각합니다.
조완제(2016****76)5월 25일 오후 11:24
베이즈정리는 머신러닝에 있어서 매우 중요합니다. 특히 나이브베이즈라는 머신러닝 기법은 베이즈정리를 중점적으로 이용한 기법입니다. 나이브베이즈를 이용해 스팸메일을 구별하는 용도로 사용합니다.
신재열(2013****84)5월 26일 오후 5:07
"B에 대한 확률 분의 A_i와 B의 교집합의 확률이 B가 일어났을 때 A가 일어날 조건부 확률이다." 이게 베이즈 정리라고 보면 되는거죠?

김승한(2012****19)5월 17일 오후 10:29
당연하다고 생각드는 부분이지만 반대로 생각해 보았을 땐 n이 한없이 커질때 통계적 확률 P(A)가 수학적 확률 a에 가까워 지지 않는다면 수학적 확률이 의미를 잃는다고 생각합니다.
이상구(LEE SANGGU)5월 18일 오후 1:14
그래서 정확한 수학적 확률을 아는 것이 제일 중요하답니다^^
민재필(2015****15)5월 18일 오후 6:01
어떤 사건에 대해서 정확한 확률을 알고 있다면 그 사건에 대해 입장을 취할 때 여러번 반복하면 특정 값에 도달한다는 개념을 알고 있다면 학문적 분야 뿐만 아니라 일상 생활에서도 많은 도움이 되는 것 같습니다. 특히 카지노가 대수의 법칙의 예라고 할 수 있습니다. 카지노 입장에서는 고객의 play가 오랜기간 지속되면 무조건 카지노가 돈을 따게 되어있는데,
이는 카지노에서 하는 게임이 승률에서 약간이나마 카지노에게 유리하게 설정되어 있기 때문입니다.
예를 들어 룰렛이라는 게임이 카지노에게 게임 당 2% 더 유리하게 되어있다 한다면, 이 게임을 사람들이 많이 할 수록 카지노는 ... 궁극적으로는 total game money 판돈의 2% 정도의 돈을 벌게 되어있습니다. 또한 도박을 하는 사람들은 이 게임을 많이 하면 할 수록 ... 적어도 total game money 판돈의 2% 정도는 돈을 잃게 되어있습니다. (이것이 원래 가지고 간 돈의 2% 가 아니라. total game money 판돈의 2% 이라 매우 큰 액수 일 수 있습니다.)
조완제(2016****76)5월 20일 오후 9:34
찾아보니까 보험사도 대수의 법칙을 적용해서 돈을 번다고 되어있습니다. 간단하게 사망에 관해서만 본다면 사람의 성별, 나이대별 사망율을 계산해서 보험금의 총액을 계산할 수 있고 보험가입자로 부터 받게되는 보험료의 총액과 비교해 그것을 이용해서 돈을 벌어들입니다.
황인성(2019****19)5월 22일 오후 5:35
하지만 대수의 법칙을 실제 실생활에 이용하는 것은 조심해야 한다고 생각합니다. 앞서 예시로 나온 보험사와 카지노 같은 경우에는 실제로 무수히 많은 고객들이 오기에 그만큼 시행횟수가 기하급수적으로 증가해 대수의 법칙을 이용할 수 있겠지만, 가위바위보같이 그리 많은 시행 횟수를 거칠 일이 없는 일의 경우에는 함부로 대수의 법칙을 적용할 수 없다고 생각합니다.
'초심자의 행운'이라는 말이 있듯이, 시행 횟수가 크지 않을 때는 실제 확률과 통계적 확률이 크게 다를 수 있다는 것을 명심해야 할 것입니다.
신재열(2013****84)5월 26일 오후 5:10
흥미로운 점은, 각각 n개의 시행이 독립이라면, n이 무수히 커졌을 때 전체 시행의 결과가 수학적 확률 분포에 근사하지만 다음 시행을 전혀 예측해줄 수 없다는 점이라고 봅니다.


황인성(2019****19)5월 22일 오후 6:28
좋은 시평 소개해주셔서 감사합니다!
덕분에 인턴 경험이 얼마나 중요한 것인지 알 수 있었습니다.
김용훈(2019****23)5월 22일 오후 7:48
대한민국에서는 형식상으로만 충족하려는 그러한 문화(?)가 팽배해있다고 평소에 생각하고 있었는데 인턴 또한 그런 것 중의 하나라는 생각이 듭니다. 진정 의미있는 활동이 되어야 할텐데 말입니다.
13. 정규분포의 시각적 분석 – 김예훈(2020****54)
정규분포가 평균과 표준편차에 따라 변하는 형태를 시각적으로 파악하기 위해 다음과 같이 코드를 짜보았습니다.
첫 번째는 표준편차를 1로 고정시키고, 평균에 1, 2, 3을 대입하여, 결과를 출력하였습니다.
두 번째는 평균을 0으로 고정시키고, 표준편차에 1, 2, 3을 대입하여, 결과를 출력하였습니다.
---------------------------------------------------------------------
var('x, s, m')
# N(x, y)
f(x, s, m) = 1/sqrt(2*pi)/s*e^(-(x-m)^2/2/s)
# 표준편차 고정
A = plot(f(x, 1, 1), x, (x, -2, 6), color="red")
B = plot(f(x, 1, 2), x, (x, -2, 6), color="green")
C = plot(f(x, 1, 3), x, (x, -2, 6), color="blue")
show(A + B + C)
# 평균 고정
D = plot(f(x, 1, 0), x, (x, -3, 3), color="red")
E = plot(f(x, 2, 0), x, (x, -3, 3), color="green")
F = plot(f(x, 3, 0), x, (x, -3, 3), color="blue")
show(D + E + F)

---------------------------------------------------------------------

결과적으로 평균은 그래프를 이동시키는 것에, 표준편차는 정규분포의 평균축에 대한 밀집도에 관여한다는 것을 알 수 있습니다.
1-6.png
2-3.png
이상구(LEE SANGGU)5월 25일 오전 7:24
Good point. 결과적으로 정규분포의 경우 평균은 그래프를 이동시키는 것에, 표준편차는 정규분포의 평균축에 대한 밀집도에 관여한다는 것을 알 수 있다.
14. [Bonus 1 점] 교재의 몇 가지 사소한 부분 <-- <--- I see. OK. E(X-μ)^2 을 E[(X-μ)^2] 로 바꾸었습니다. - 김예훈(2020****54)
교재에서 몇 가지 사소한 부분이 있어서, 올려봅니다.

파란색 부분에서, 확률변수 X 가 아니라 확률변수 Z인 것 같습니다. <--- 확률변수 X 와 Z 모두 맞습니다.

공분산 공식에서, E(X-μ)^2이 E((X-μ)^2)이 아닌 (E(X-μ))^2으로 해석될 여지가 있는 것 같습니다. 처음에 후자로 이해를 해서 문제를 풀던 중 답과 맞지 않아서 의아해했습니다. 계속 생각을 하다가 후에 저게 분산을 의미하는 것임을 깨달았습니다.
<--- I see. OK. E(X-μ)^2 을 E[(X-μ)^2] 로 바꾸었습니다.
KakaoTalk_20200525_121818117.png
Corr`(`X,``Y``)= rho = {E`[`(`X- mu _{x} `)(`Y- mu _{y} `)]} over {sqrt {E``[(`X- mu _{x} `) ^{2} ]` CDOT E``[(`Y- mu _{y} `) ^{2}} ]} = { Cov``(`X`, Y`)`} over {sqrt { V``(`X``)`` CDOT V``(`Y``)`}
Source : http://matrix.skku.ac.kr/math4ai/part3/
이상구(LEE SANGGU)5월 25일 오전 00:22
인용했으면 출처 추가 하세요.
김예훈(2020****54)5월 25일 오전 00:23
추가했습니다.
이상구(LEE SANGGU)5월 25일 오후 12:15
공분산 공식에서, E(X-μ)^2이 E((X-μ)^2)이 아닌 (E(X-μ))^2으로 해석될 여지가 있는 것 같습니다. .....
<--- I see. OK. E(X-μ)^2 을 E[(X-μ)^2] 로 바꾸었습니다.
Corr`(`X,``Y``)= rho = {E`[`(`X- mu _{x} `)(`Y- mu _{y} `)]} over {sqrt {E``[(`X- mu _{x} `) ^{2} ]` CDOT E``[(`Y- mu _{y} `) ^{2}} ]} = { Cov``(`X`, Y`)`} over {sqrt { V``(`X``)`` CDOT V``(`Y``)`}
보너스 1점 줄께 PBL 보고서에 위의 내용 적으세요^^
15. 통계에서의 함수 용어 - 김예훈(2020****54)
*확률질량함수(Probability Mass Function, PMF)
이산확률분포를 따르는 확률변수에 대한 함수로, 불연속적인 속성으로 인해 입력값이 한정되어 있다.
대표적으로 포아송 분포, 베르누이 분포, 이항 분포가 확률질량함수를 갖는다.
*확률밀도함수(Probability Density Function, PDF)
연속확률분포를 따르는 확률변수에 대한 함수로, 연속적인 속성으로 인해 특정 범위에 한해서 입력값이 자유롭다.
대표적으로 정규 분포, 균등 분포, 지수 분포, 코시 분포가 확률밀도함수를 갖는다.
*누적분포함수(Cumulative Distribution Function, CDF)
![]()
함수 f(x)를 왼쪽 끝 값으로부터 특정 지점 x까지 적분하여 구한 함수 F(x)를 누적분포함수라고 한다.
또한 확률함수의 넓이에 대한 함수라고 표현할 수도 있다.
이 함수는 R언어에서 주로 사용하는 것으로, 특정 입력값까지의 범위를 구하는 데 사용한다.
기본적인 확률 옵션은 'lower.tail=T'으로 설정되어 있으며, 이는 위의 적분 수식을 따른다는 것이다.
만약 'lower.tail=F'로 옵션을 변경하면, 다음 수식을 사용하게 된다.
![]()
*적률생성함수(Moment Generating Function, MGF)
![]()
위의 식처럼, 자연상수 e의 xt제곱을 확률함수에 곱하여, x에 대한 무한범위 적분을 수행해서 얻은 함수를 적률생성함수라 한다.
이 함수는 자료를 분석하는 새로운 방법으로, 입력 변수가 t이며, t의 값에 따라 적률이 출력된다.
(아래 두 부분은 새롭게 알게 된 함수여서, 강조표시를 하였습니다)
*Reference
https://en.wikipedia.org/wiki/Probability_density_function
https://en.wikipedia.org/wiki/Probability_mass_function
https://en.wikipedia.org/wiki/Cumulative_distribution_function
https://en.wikipedia.org/wiki/Moment-generating_function
이상구(LEE SANGGU)5월 25일 오전 00:21
정리한 내용이 정확한지를 확인할 근거나 인용 하였으면 출처 가 빠졌습니다.
김예훈(2020****54)5월 25일 오전 00:37
사실 퍼온게 아니라, 제가 직접 작성한 것입니다.
출처 대신에 제가 참고한 부분을 추가하겠습니다.
16. 코시 분포의 평균 – 김예훈(2020****54)
'코시 분포의 평균은 존재하지 않는다.'는 말을 실제로 증명해보기 위해, 다음과 같은 작업을 하였습니다.
1. 자료의 크기에 따른 평균의 수렴성 확인
#코드
for(n in 1:10)
{
print(sum(rcauchy(10^n, 0, 1))/(10^n))
}
(이번에는 for 문을 사용하여, 이전보다는 더 효율적으로 코드를 구성하였습니다)
#실행 결과


값이 어딘가에 수렴하는 양상을 보이지는 않는 것 같습니다.
시각적으로 보면 그래프가 수렴하는 형태가 아닌 것을 알 수 있습니다.
값을 더 크게 하면 더 정확히 알 수 있겠지만, 10^8 이후는 무리인 것 같습니다.
2. 수식을 통한 증명
기댓값(Expectation)의 정의에 따라, 다음과 같이 구해보았습니다.
![]()
(pi*(1+x^2)이 분모이고, x가 분자입니다)
전자의 식은 -infinity(음의 무한대)이고, 후자의 식은 +infinity(양의 무한대)입니다.
전자의 식과 후자의 식의 방향이 다르므로, 값은 정의될 수 없습니다.
그래서 코시 분포의 평균값은 존재할 수 없습니다.
이상구(LEE SANGGU)5월 25일 오전 00:20
Nuce try^^
17. 퍼셉트론에 대한 정리 – 김예훈(2020****54)
퍼셉트론(Perceptron)이란 가장 원시적인 인공 신경망으로, 다른 신경망의 모범이 된다고 할 수 있을 정도로 기초적인 신경망이기에, 현대의 알고리즘을 이해하기 위해서는 퍼셉트론에 대한 본질을 이해할 필요가 있다.

퍼셉트론은 동물의 신체적 메커니즘 중 하나인 신경계를 모범으로 만든 것이다.
즉, 퍼셉트론은 뉴런(Neuron)이라는 단위가 처리하는 일을 차용한 것이라고 할 수 있다. 생명과학 부분은 오랫동안 다루지를 않아서 잘 알지는 못하지만, 뉴런에서는 가지 돌기에 입력되는 전압에 따라 분극여부가 결정되어, 분극으로 인한 신호가 축삭돌기쪽으로 전달되는 것으로 알고 있다.
이 과정은 나트륨 이온의 양과 같은 화학적 메커니즘이 복잡하게 작용하는 것으로 나타난다. 이 메커니즘이 작용하려면 특정 전압 이상을 뉴런의 가지돌기에 가해야 한다. 이러한 뉴런의 본질을 퍼셉트론이 유사하게 지니고 있다. 뉴런의 입력의 차이는 전압의 세기라면, 퍼셉트론은 입력되는 복합적인 데이터가 차이를 유발한다. 또한 뉴런의 신호 처리를 위한 화학적인 메커니즘이 퍼셉트론에 대하여 처리되는 메커니즘과 유사한 점이 있다.
이외에도 뉴런의 출력은 신호의 전달여부(전달됨, 전달되지 않음)라고 한다면, 퍼셉트론은 0과 1의 2진적인 값을 출력한다.
퍼셉트론 내부의 메커니즘에 대하여 분석해보자.
퍼셉트론이 입력받는 값의 유형은 다양하지만(e.g. 10 진수, HTML 색상 코드, 문자, 좌표값, 사진, 동영상 등), 사실상 이러한 값은 가장 기초적인 2진수로 표현이 된다. 각각의 데이터에 대하여, 인코딩(Encoding) 방식에 따라 고유한 2진수 값을 지닌다. 예를 들어, 문자는 UTF-8(유니코드 8), 동영상은 MPEG-4(아날로그 영상을 디지털 영상으로 저장하는 형식(Format)으로, 인코더(Encoder) 또는 코덱(Codec)이라고 부른다), 숫자는 그에 대응하는 2진수가 있다.
일반적으로는 2진수로 된 자료는 이해를 위해 10진수로 변환하여, 메커니즘을 수학적으로 표현하며, 여기에서도 이러한 방식을 적용할 것이다.
이러한 입력값에 대하여, 퍼셉트론은 값을 가중치(Weight)라는 개념을 도입하여 처리한다.
선형대수학에서의 정의에 따르면, 가중치는 각각의 벡터 또는 변수에 곱해지는 값을 의미한다. 즉, [ax + by + cz = 2]에서 a, b, c가 가중치이다.
그리고 이러한 구조를 선형적(Linear)이라고 표현한다. 이 모든 개념이 동일하게 퍼셉트론에 적용된다.
퍼셉트론에서는 다음과 같은 선형적인 식을 메커니즘으로 지니고 있다.
[c(1)x(1) + c(2)x(2) + c(3)x(3) + c(4)x(4) + ... --> 0 or 1]
(()는 아래첨자를 의미한다)
여기서 c가 가중치이며, x가 입력값이다. 실제로 입력된 값들이 가중치에 의해 계산되면, 0과 1이 아니라 일반적인 수가 나오게 될 것이다.
이러한 경우, 출력된 수를 두 수(0과 1)로 대응시키는 함수가 필요한데, 이러한 것을 활성화 함수(Activation Function)라고 한다. 활성화 함수의 출력은 0과 1이며, 대표적인 것으로 헤비사이드 계단 함수(Heaviside Step Function)가 있다. 이는 0보다 작을 때는 0을, 0보다 클 때는 1을 출력하는 단순한 함수이다.
또한 헤비사이드 함수를 연속화한 함수도 존재하는데, 바로 시그모이드 함수(Sigmoid Function)이다. 이 함수의 특징은 함수가 전 구간에서 연속적이며 미분가능이라는 것이다. 시그모이드 함수의 출력값은 정확히 0이나 1을 출력하지는 않지만, 이는 1/2 초과 값은 1, 1/2 미만 값은 0으로 처리를 하면 된다. 사실 시그모이드 함수는 미분 가능한 함수이기때문에, 이로부터 유용한 정보를 얻을 수 있다. 바로 시그모이드 1계 도함수에 값을 입력하여, 값의 편향도를 구하는 것이다. 이는 0 또는 1로 주어진 값에 대한 추가적인 정보로 활용될 수 있다.

이제 입력된 값으로부터 출력값이 도출되었다. 사실상 가중치가 임의로 설정되었기 때문에, 원하는 출력값이 나오지는 않을 것이다. 이제는 가중치를 보완하는 과정을 거쳐야 한다. 가중치는 경사하강법(Gradient Descent Method)을 이용하여 보완 또는 갱신될 수 있다. 이러한 과정이 반복적(Iterative)으로 발생하면, 입력값에 대하여 원하는 출력값에 근접하게 될 것이다. 실제로 이러한 수학적 개념이 결합된 과정은 퍼셉트론이 학습을 하는 것처럼 보인다.

이제는 퍼셉트론 자체를 생각해보자. 하나의 퍼셉트론은 가장 단순한 정보(0과 1)만을 출력한다고 하였다.
이러한 0 또는 1이라는 Bool 대수만으로 정보를 표현하기에는 무리가 있다. 그렇기에, 여러 Bool 대수가 묶여서, 복합적인 정보를 표현할 필요가 있으며, 이는 여러 개의 퍼셉트론이 군(群)을 이루는 과정으로 생각해 볼 수 있다.
이러한 체(體)는 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)으로 구분되며, 은닉층은 여러 퍼셉트론의 조합으로 인해 발생한 것이다.
하나의 퍼셉트론은 입력과 출력이 있다면, 이들의 조합은 은닉층이라는 새로운 구간을 만들어 낸 것이라 할 수 있다.
입력층의 퍼셉트론이 값을 입력받고, 정해진 가중치에 대하여 처리된 값이 출력층이 아닌 은닉층으로 전달이 되는 것이다. 그리고 은닉층에서 일어나는 복합적인 산출물이 출력층으로 전달되어 최종적인 값이 출력된다.
<사진 자료>
[1] https://commons.wikimedia.org/wiki/File:Blausen_0657_MultipolarNeuron.png
[2] https://commons.wikimedia.org/wiki/File:Asymptote_Heaviside_function.png
[3] https://commons.wikimedia.org/wiki/File:Logistic-curve.svg
[4] https://commons.wikimedia.org/wiki/File:Perceptron_example.svg
황인성(2019****19)6월 12일 오후 1:07
퍼셉트론에 대해 이해할 때 매우 도움이 되는 내용들이었습니다!
김용훈(2019****23)6월 12일 오후 1:40
교수님의 추가설명이 있으면 더 좋겠네요! 이런 좋은자료가 저에게는 많이 어렵네요 ㅠㅠ...
이상구(LEE SANGGU)6월 13일 오전 6:44
김용훈 군, 교양과목 에서는 적당한 호기심이 제일 좋습니다. ... 학습하면서 부담 갖지 마세요.
지금은 우리 교재 내용 인 Mathfor AI 을 . . . 읽으면서... 모르는 줄 물어보시면서 이해 하시면 충분합니다.
그 후 내가 해보라고 한 Math & Coding ...
내가 개발해 준 코드를 ... 김군 주위의 데이터 를 찾아서, 그것을 가지고 분석한 결과를 공유하고 토론 하는 것을
우선 하시기를 권한 것입니다. 퍼셉트론 에 대해서는 다른 강좌에서 또 배웁니다.
조완제(2016****76)6월 13일 오전 10:25
좋은 내용 감사합니다!
김용훈(2019****23)6월 14일 오전 8:43
교수님 말씀 감사합니다! 너무 부담 갖지않겠습니다!
민재필(2015****15)6월 14일 오전 11:12
좋은 자료 인것 같네요 많은 것을 배웠습니다
18. PCA를 바이오 데이터 분석에 사용하는 예 – 민재필(2015****15)
https://blog.bioturing.com/2018/06/14/principal-component-analysis-explained-simply/
바이오 업계에서 PCA를 사용하는 예를 들어서 PCA의 개념을 쉽게 설명해줍니다. PCA의 개념이 어렵게 다가온다면 이 설명을 들으면 빨리 이해할 수 있을 것 같습니다.
<내용 축소됨>
Principal component analysis explained simply
by Linh Ngo
•
June 14, 2018
pca, PCA biplot, pca explained simply, pca screeplot
As we are entering the era of Big Data, everyone and their moms seem to be talking about PCA. All the papers you read mention PCA (with lots of jargon, of course). Half of the seminars you’ve been to this month touch on PCA. Your boss/collaborators suggest trying PCA on your data.
“What is this PCA thing that keeps running into me?” You ask.
Short for principal component analysis, PCA is a way to bring out strong patterns from large and complex datasets. For example, if you measure the expression of 15 genes from 60 mice, and the data come back as a 15×60 table, how do you make sense of all that? How do you even know which mice are similar to one another, and which ones are different? How do you know which genes are responsible for such similarities or differences?
PCA might be what you need to untangle that data mess. What it does is to take the expression data of 15 genes from each mouse and smoosh them down to one single dot that represents the expression profile of that mouse. One dot for one mouse. Sixty mice, sixty dots. The result will look like this:
This plot makes it much easier to compare mice. Those with similar expression profiles will cluster together. In this plot, there are 3 clusters of mice. From here, you can trace back to find out which genes make the clusters different from one another (more on that later).
Neat! How do we go from that 15×60 table to this pretty plot?
1. Principal components capture the most variation in a dataset
Let’s not forget that what we are trying to do here, from the moment that the 15×60 table arrives and we stare at it in bewilderment, is to compare the mice. When there are too much information about them, it’s hard to do that. Let’s start with 2 genes to make things easier. Using those 2 genes as axes, we can plot their expression in 60 mice on a 2D plot, like this:
Here, each dot carries read counts of 2 genes from one mouse, and together they form a flat “cloud.” Principal component 1 (PC1) is a line that goes through the center of that cloud and describes it best. It is a line that, if you project the original dots on it, two things happen:
The total distance among the projected points is maximum. This means they can be distinguished from one another as clearly as possible. We want to compare stuff, remember? If a line blurs data points together, it won’t help.
The total distance from the original points to their corresponding projected points is minimum. This means we have a representation that is as close to the original data as possible.
In other words, the best line — our PC1 — must convey the maximum variationamong data points and contain minimum error. These two things are actually achieved at the same time, because Pythagoras said so.
2. PCA deals with the curse of dimensionality by capturing the essence of data into a few principal components.
But we have 15 genes, not just 2. The more genes you’ve got, the more axes (dimensions) there are when you plot their expression. When it gets to about the fourth gene, you probably don’t want to plot this anymore, let alone 15 genes. 15 genes equal 15 axes! The cloud of dots is no longer flat, it is 15-D now. There is no way to look at it and make any sense out of it.
This is when the magic of PCA comes in. To create PC1, a line is anchored at the center of the 15-D cloud of dots and rotate in 15 directions, all the while acting as a “mirror,” on which the original 60 dots are projected. This rotation continues until the total distance among projected points is maximum. The rotating line now describes the most variation among 60 mice, and is fit to be PC1.
Source: stats.stackexchange.com
PC2 is the second line that meets PC1, perpendicularly, at the center of the cloud, and describes the second most variation in the data. (Computers can handle all this rotation and setting up PCs in a breeze, lucky us!)
If PCA is suitable for your data, just the first 2 or 3 principal components should convey most of the information of the data already (more on this later). This is nice in several ways:
Principal components help reduce the number of dimensions down to 2 or 3, making it possible to see strong patterns.
Yet you didn’t have to throw away any genes in doing so. Principal components take all dimensions and data points into account.
Since PC1 and PC2 are perpendicular to each other, we can rotate them and make them straight. These are the axes of our pretty PCA plot.
3. Dimensions vary in the weights they have on each principal component.
Now that we have the axes, how about dots? How do we smoosh 15 genes together to create a single dot for each mouse?
The original dots (mouse gene expression) are pinned in place by their values on all axes (genes). These dots are projected on PC lines, which are trying to stay as close as possible to all the dots — that’s how they achieve the best fit. For the PC lines, this is like trying to stand still while being pulled in 15 directions at once. Some pulling forces are stronger than others; in other words, dimensions have different weights in defining each PC.
In our example, all 15 genes participate in placing mice on PCs, but they weigh in differently. After their weights are determined, finding out where they put Mouse #1 on PC1 is simple math:
(gene1 read count * gene1 weight on PC1)
+ (gene2 read count * gene2 weight on PC1)
+ …
+ (gene15 read count * gene15 weight on PC1)
= PC1 value of Mouse #1
Mouse #1 has a spot on PC2, too. To calculate it, use the same formula with weights of genes on PC2 instead of PC1.
With a value of PC1 and a value of PC2, Mouse #1 now can be graphed as a dot on the PCA plot.
This simple math can be written in a fancy formula that’s more appropriate for papers and seminars:
Let,
Mouse #i :
Eigenvector #j:
Principal component j-th of sample i:
Do this math again on all the mice, and they will each become a dot on the PCA plot.
Pretty! How do we read this?
4. How to read a PCA plot
Mice that have similar expression profiles are now clustered together. Just glancing at this plot, we can see that there are 3 clusters of mice.
If 2 clusters of mice are different based on PC1, like the blue and orange clusters in this plot, such differences are likely to be due to the genes that have heavy influences on PC1.
If 2 clusters are different based on PC2, like the red and blue clusters, then the genes that heavily influence PC2 are likely to be responsible.
Keep in mind that PCs are ranked by how much they describe the data. PC1 reveals the most variation, while PC2 reveals the second most variation. Therefore, differences among clusters along PC1 axis are actually larger than the similar-looking distances along PC2 axis.
Is this plot meaningful? Check the proportion of variance, or the diagnostic scree plot. PCA is worthy if the top 2 or 3 PCs cover most of the variation in your data. Otherwise, you should consider other dimension reduction techniques, such as t-SNE and MDS.
Proportion of variance graphs, good and bad
To sum up, principal component analysis (PCA) is a way to bring out strong patterns from large and complex datasets. The essence of the data is captured in a few principal components, which themselves convey the most variation in the dataset. PCA reduces the number of dimensions without selecting or discarding them. Instead, it constructs principal components that focus on variation and account for the varied influences of dimensions. Such influences can be traced back from the PCA plot to find out what produces the differences among clusters.
To run a PCA effortlessly, try BioVinci. This drag-and-drop software can perform any statistical analyses in just a few clicks. Check it out here: https://vinci.bioturing.com
이상구(LEE SANGGU)6월 11일 오후 3:15
우리 책에 쓰여있는 내용은 이해 하셨지요? 위의 PCA 에서 말하려는 Key Idea 는 무엇인가요? 본인의 Comment 를 한 줄 달아 주세요^^
이상구(LEE SANGGU)6월 11일 오후 6:39
https://www.nature.com/articles/nbt0308-303 에 보면 Published: March 2008
What is principal component analysis? 가 네이처 저널에서 Markus Ringnér 가 쓴
Biotechnology 에 사용되는 PCA 를 잘 설명하고 있답니다^^
volume 26, pages303–304(2008)Cite this article
8473 Accesses
615 Citations
Principal component analysis (PCA) is a mathematical algorithm that reduces the dimensionality of the data while retaining most of the variation in the data set1. It accomplishes this reduction by identifying directions, called principal components, along which the variation in the data is maximal. By using a few components, each sample can be represented by relatively few numbers instead of by values for thousands of variables. Samples can then be plotted, making it possible to visually assess similarities and differences between samples and determine whether samples can be grouped.
이상구(LEE SANGGU)6월 11일 오후 6:41
키 아이디어는
Principal component analysis (PCA) is a mathematical algorithm that reduces the dimensionality of the data while retaining most of the variation in the data set.
It accomplishes this reduction by identifying directions, called principal components, along which the variation in the data is maximal.
By using a few components, each sample can be represented by relatively few numbers instead of by values for thousands of variables.
Samples can then be plotted, making it possible to visually assess similarities and differences between samples and determine whether samples can be grouped.
입니다.
민재필(2015****15)6월 12일 오전 7:29
아직 이해가 많이 부족하지만 저 저널을 읽은 후 느낀 점은 PCA가 거의 모든 분야에서 대용량의 데이터를 정리할 떄 유용하다는 것입니다. 저널에서 사용한 쥐의 예로 보자면 쥐가 60마리가 있는데 각 쥐마다 15개의 gene에 대해서 분석한다 하면 일반적인 분석 방법으로는 이 쥐들을 분류하는 것이 불가능할 것입니다. 하지만 PCA를 이용해서 각 쥐마다 PC score를 매기고 PC score 에 따라 그 쥐들을 분류한다면 그 쥐들에 대해서 연구하는데 훨씬 수월할 것입니다.
황인성(2019****19)6월 12일 오후 3:18
PCA(주성분 분석를 이해하는 데 있어 큰 도움이 되는 글이네요.
특히 그래프와 도표 및 그림과 같은 시각자료가 많아서 더 직관적으로 이해할 수 있었습니다.
김예훈(2020****54)6월 13일 오전 1:42
완전하지는 못하지만, 주성분 분석의 원리를 이해하는 데 많은 도움이 되었습니다.
좋은 자료 감사합니다!
19. 이번 레포트에 대한 간단한 질문들 – 황인성(2019****19)
이번 6월 레포트는 3~5월 레포트에 비해 알려주신 정보가 좀 부족한 것 같아서 질문드립니다.
공지에 따르면, 이번 6월 레포트 제출 기한은 15일까지이며 선택사항인 발표 영상 제출은 18일까지 하면 되는 건가요?
이번에는 6월 레포트 양식 파일이 존재하지 않는데, 6월에 활동한 사항들을 이전에 작성했던 May 레포트에 추가한 후 그 레포트를 제출하면 되는 건가요?
레포트를 다 작성한 후에는 어디에 제출해야 되나요?
언제나 좋은 수업 감사합니다. 답변해주시면 정말 감사드립니다!
이상구(LEE SANGGU)6월 12일 오후 1:41
내가알려 준 공지는 다음과 같습니다.
1. 이번 6월 레포트 제출 기한은 18일까지이며 선택사항인 발표 영상 제출도 18일까지 하면 됩니다^^
단, A+ , B+ 를 원하는 학생은 둘 다를 15일 까지 하시기를 권합니다. (또는 12일~15일 사이에 제출하고 나에게 이대로 발표해도 되나요? 조언을 바랍니다 하고 물어 보면 내가 바로 조언을 줄것입니다. 그 후 고쳐서 그것을 발표한 동영상이 물론 완성도가 높을 것이고, 이것을 18일 까지 제출해도 됩니다)
2. 6월 레포트 양식은 여러분이 제출한 May PBL 보고서 를 업데이트하셔서 제출하시면 됩니다.
(맞습니다. 6월에 활동한 사항들을 May 레포트에 추가한 후 그 레포트를 제출하면 됩니다)
3. 레포트를 다 작성한 후에는 Final PBL -EXAM 과제함 에 제출하시면 됩니다. (아마 목록 제일 아래에 있을 것입니다.)
김승한(2012****19)6월 12일 오후 7:50
궁금했던 사항이 정리되었습니다. 감사합니다
나우주(2020****91)6월 12일 오후 7:52
좋은 정보 감사합니다.
김용훈(2019****23)6월 13일 오전 10:50
이 글 덕분에 궁금한 점들이 정확히 해결되었습니다!
김예훈(2020****54)6월 13일 오후 11:46
상세하게 설명해주셔서 감사합니다.
20. Sage 코드에서 – 신재열(2013****84)
방정식을 세우고 그 해를 구하는 Solve 명령어를 주어서 그걸 어떤 변수(A라고 하겠습니다)에 저장하면
[x==4]
와 같은 형태가 나오고 대괄호까지 A에 저장이 되더군요.
저는 해로 나온 4만 취해서 그다음 논리에 활용하고 싶은데,
이래저래 찾아보면서 A.rhs()로도 써봤는데 x==4가 아니라 대괄호까지 포함된 채 A에 저장이 되었기에 4만 추출되지 않고 오류가 납니다..
저기서 4만 추출하고 싶으면 어떻게 하면 될까요?
이상구(LEE SANGGU)5월 30일 오후 8:20
Python 아는 소프트웨어 대학 학생이 답을 주어보세요^^
김예훈(2020****54)5월 31일 오전 10:22
Solve에서 출력되는 값이 리스트라는 점을 감안하면, Index를 이용하여 아래와 같이 개별적인 값을 추출해 낼 수 있습니다.
https://sagecell.sagemath.org/ 에서
@ 코드
var('x, y')
a = solve([x + y == 4, x - y == 2], x, y)
print("해:", a, end="\n\n")
print(a[0][0].rhs())
print(a[0][1].rhs())
@ 결과
해: [
[x == 3, y == 1]
]
3
1
만약 해가 하나의 묶음이 아니라면(e.g. [[x == 1, y == 2], [x == 1, y == -2]]), len()으로 리스트의 길이를 추출하고, for문을 이용하여 연속적인 해를 추출하는 방법으로 코드를 작성하는 것이 유용합니다.
이상구(LEE SANGGU)5월 31일 오후 1:21
김예훈군, Bonus 2점 입니다. ^^




황인성(2019****19)5월 26일 오전 1:32
포아송 분포와 확률밀도함수를 잘 이용한 문제와 좋은 풀이였습니다!
Finalize해도 될 정도네요
이상구(LEE SANGGU)5월 26일 오후 5:05
그럼 Finalize 조윤근 군이 제목에 두명 이름 달아 Finalize 하면 돕니다.


이상구(LEE SANGGU)5월 26일 오전 00:33
Python range() example (0,6) 의미는
Get numbers from range 0 to 6 을 뜻합니다.
0, 1, 2, 3, 4, 5, 을 의미합니다.
Python 에서 range (0,2)은 즉 영 부터 2개수, 즉 영 부터 2 -1까지의 수 0 , 1 , 이 두 수를 range 로 의미하는 명령어 입니다.
그보다 신 군은 본인의 문제 풀이와 질문 과 함께 < 그간 밀린 ... 다른 학생들 문제풀이 및 질문과 내 글 에 ... 답을 주시는 부분을 보강하셔야 될 듯합니다^^
황인성(2019****19)5월 26일 오전 1:17
sage는 python 프로그래밍 언어를 기반으로 만든 수학전용 소프트웨어라서 그런 듯 합니다.
python 내의 range() 함수에서 range(A, B)라고 적으면 "A부터 B - 1까지" 라고 이해하면 됩니다.
아래의 링크에 더 자세한 설명이 있습니다.
https://withcoding.com/79
이상구(LEE SANGGU)5월 26일 오전 9:06
신재열 군, 다른 학생 답 확인하시고 코멘트 주어 Finalize 해 주시고, 본인 것도 Finalize with Comment 하세요^
[Final] 4월 3일 WebEx 미팅 요약 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 3일 오후 12:10
조회수 : 11
이 수업의 운영방식, 흐름에 대해 다시금 짚어주시고 공지 등을 확인시켜 주셨습니다.
무엇보다 PBL보고서 평가방법에 대해 많은 얘기 해주셨는데,
이미지 파일 캡처보다는 수정될 수 있는 텍스트로 정리해서 올리는 것을 권장한다고 하셨고,
논의된 토의 내용을 Finalize 시킬 때는 논의된 내용들을 일목요연하게 정리해서 보고서에 올리기 좋게 한번 다시 올려서 Finalize 시키면 된다는 것으로 이해했습니다.
3월 PBL에 대해 Finalize를 정확하게 못시킨 것들이 많았고 조교님과 교수님께서 그 부분을 도와주신 것이 있는데 이번에 어느정도 시행착오를 겪었기 때문에 4월에는 좀 더 완성도 있게 Finalize를 해보려 합니다.
***
2020년 4월 3일 금요일 오전 10:39 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 10:39 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 10:39 김민수 님이 모두에게:네 들립니다
2020년 4월 3일 금요일 오전 10:44 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 10:46 자연과학대학장이상구 님이 모두에게:Is there any international students in here now?
2020년 4월 3일 금요일 오전 10:50 2013313484 신@@ 님이 모두에게:그냥 hwp밖에 안열려있습니다
2020년 4월 3일 금요일 오전 10:50 김민수 님이 모두에게:스크린 안나오고있어요!
2020년 4월 3일 금요일 오전 10:51 2013313484 신@@ 님이 모두에게:교수님 아래한글 파일밖에 안보입니다
2020년 4월 3일 금요일 오전 10:51 2013313484 신@@ 님이 모두에게:네네
2020년 4월 3일 금요일 오전 10:51 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 10:53 김민수 님이 모두에게:네 됩니다
2020년 4월 3일 금요일 오전 10:53 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 10:56 2013313484 신@@ 님이 모두에게:새 창 보입니다
2020년 4월 3일 금요일 오전 10:56 2019312019 황인성 님이 모두에게:새 창이 보입니다
2020년 4월 3일 금요일 오전 10:56 2013313484 신@@ 님이 모두에게:고급미적분학2
2020년 4월 3일 금요일 오전 10:56 2013313484 신@@ 님이 모두에게:나옵니다
2020년 4월 3일 금요일 오전 10:56 김민수 님이 모두에게:따라가고있어요
2020년 4월 3일 금요일 오전 10:57 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 10:57 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:00 김민수 님이 모두에게:맞습니다
2020년 4월 3일 금요일 오전 11:06 2013313484 신@@ 님이 모두에게:교수님 Points Possible은 무엇인가요?
2020년 4월 3일 금요일 오전 11:07 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 11:07 김민수 님이 모두에게:네 됩니다
2020년 4월 3일 금요일 오전 11:07 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:07 김도현_2019311004 님이 모두에게:네 이해됩니다!
2020년 4월 3일 금요일 오전 11:08 2013313484 신@@ 님이 모두에게:밑에 Tentative Score에서
2020년 4월 3일 금요일 오전 11:08 2013313484 신@@ 님이 모두에게:Points Possible
2020년 4월 3일 금요일 오전 11:08 2013313484 신@@ 님이 모두에게:아뇨 밑에
2020년 4월 3일 금요일 오전 11:08 2013313484 신@@ 님이 모두에게:학생ID 밑에
2020년 4월 3일 금요일 오전 11:09 김민수 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:10 2013313484 신@@ 님이 모두에게:Ax=b
2020년 4월 3일 금요일 오전 11:10 김민수 님이 모두에게:네 됩니다!
2020년 4월 3일 금요일 오전 11:15 2013313484 신@@ 님이 모두에게:넵 좋습니다
2020년 4월 3일 금요일 오전 11:16 2013313484 신@@ 님이 모두에게:PBL에서 Gram-Schmidt에 대해 조교님이 Finalize 시킨거 제가 재정리한것처럼 하는 그런 식으로 Finalize 할 수 있다는 말씀이시죠?
2020년 4월 3일 금요일 오전 11:17 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 11:17 김민수 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:18 김민수 님이 모두에게:네 할수있습니다ㅎㅎ
2020년 4월 3일 금요일 오전 11:26 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 11:26 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:26 김민수 님이 모두에게:네 보입니다
2020년 4월 3일 금요일 오전 11:26 2019312019 황인성 님이 모두에게:잘 보입니다
2020년 4월 3일 금요일 오전 11:26 김도현_2019311004 님이 모두에게:네 보입니다!
2020년 4월 3일 금요일 오전 11:39 2019312019 황인성 님이 모두에게:네
2020년 4월 3일 금요일 오전 11:39 2013313484 신@@ 님이 모두에게:네 수식은 안보입니다
2020년 4월 3일 금요일 오전 11:39 2013313484 신@@ 님이 모두에게:수식편집기 안보입니다
2020년 4월 3일 금요일 오전 11:44 2013313484 신@@ 님이 모두에게:본인이 개념을 잘 이해했는지 본인 나름대로 올리고 정리하면서 확인받는 과정도 의미있는 것 같아요
2020년 4월 3일 금요일 오전 11:45 김도현_2019311004 님이 모두에게:넵 오늘 PBL보고서 쓰는 방법을 알게 되어서 잘 쓸 수 있을 것 같습니다!
2020년 4월 3일 금요일 오전 11:46 김도현_2019311004 님이 모두에게:지금 마이크가 잘 안됩니다
2020년 4월 3일 금요일 오전 11:47 김민수 님이 모두에게:잘 안되는거같아요
2020년 4월 3일 금요일 오전 11:47 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 11:51 2013313484 신@@ 님이 모두에게:네넵
2020년 4월 3일 금요일 오전 11:51 2013313484 신@@ 님이 모두에게:수고하셨습니다
2020년 4월 3일 금요일 오전 11:51 김민수 님이 모두에게:네 수고하셨습니다ㅎㅎ
2020년 4월 3일 금요일 오전 11:51 김도현_2019311004 님이 모두에게:감사합니다!
2020년 4월 3일 금요일 오전 11:51 자연과학대학장이상구 님이 모두에게:수고 많앗습니.다. 오늘 설명이 조금이라도 도움이 되었길,ㅡㄹ 바래요^^
2020년 4월 3일 금요일 오전 11:51 2019312019 황인성 님이 모두에게:감사합니다!
2020년 4월 3일 금요일 오전 11:51 2013313484 신@@ 님이 모두에게:PBL 빠르게 한다고 했는데 담에 더 다듬어서 내야겠네요..
미팅에서 제가 먼저 올린 PBL에 대해 보여주셨는데, 미처 다듬지 못한 템플릿들을 다듬어주서 공유해주셨음이 보이더라고요.. 너무 성급하게 낸 것이 스스로 느껴지기도 해서 좀 민망했는데, 더 의미있는 자료가 되기 위해서는 템플릿 정리에도 더 신경써야 할 것 같습니다.
QnA에 문의하고 하는 과정에서 올려주신 pdf 교재를 적극 활용하라고 해주셨습니다. 여러가지 면에서 일일이 타이핑하는 것보다 교재를 활용하는 것이 시간적으로나 여러 정확성 면에서 효율적이니 그 방법을 권장한다고 하셨습니다. 저로서는 아래한글에서 수식편집기를 활용하는 방법이 익숙해서 그런 방법을 자꾸만 고수해왔는데, Notation에서 틀린 방법을 쓴 것도 미팅을 통해서 알게 되었고요.. 다음 QnA부터는 교재를 적극활용하면서 수학, 과학적으로 검증된 문서란 무엇인지, 검증된 문서를 인용할 때는 어떻게 해야 하는지에 대해서도 스스로 생각하고 배워가야 할 것 같습니다. 논문 등을 쓸 때 인용출처를 분명히 밝히지 않으면 표절문제에 걸릴 수도 잇고, 나의 생각을 펼칠 때 인용한 자료가 검증된 자료라는 것을 입증함으로써 나의 생각에 대한 힘이 더 실린다고 인용이 왜 중요한지에 대해서도 강조하셨습니다.
3월 한달간 배운 것도 많이 있고, 아직 부족한 부분에 대해 발견한 것도 많이 있는데, 보완해서 4월 MidTerm PBL 에 대해서는 좀 더 Professional하게 준비해서 평가에 임해야겠다 싶네요.
앞으로도 잘 부탁드립니다. 감사합니다.
Final Comment
3월 PBL 보고서를 마무리할 즈음의 WebEx였는데, 그 때에 비해 PBL보고서를 작성하는 요령, 평소 학습에 대한 요령들이 많이 생겼다.
[Final OK by SGLee and 신@@, ] 벡터 x에 대한 Notation, {rmbold x}
작성자 : 신@@(2013****84)작성일 : 4월 3일 오후 12:25
조회수 : 18
[Final OK by 신@@, SGLee] 벡터 x에 대한 Notation
Q. 교수님 아까 WebEx에서 벡터 x에 대한 Notation 지적해주셨는데,
이탤릭체가 아닌, 벡터에 맞는 x를 아래한글에서 쓰는게 로마자 모드로 쓰신 것 맞나요??
A. q( {rmboldx})= {bold{{rmboldx}}}^T A {rmboldx} 로 쓴 것입니다^^(선형대수학에서) 벡터는 모두 {rmbold x} 와 같이 rmbold 로 쓰는 것입니다.
Final Comment : 아하 네넵! 전에 문자 위에 화살표로 썼다가 지적해주셔서 그거 안하고 볼드체만 적용해서 써왔는데 볼드체 로마자로 써야 한다는 것은 오늘 처음 알았습니다..^^
[Final OK by SGLee] 행사다리꼴 관련 질문(Questioned by 김민수 and Finalized by 신@@, 이상구 교수님)
작성자 : 신@@(2013****84)작성일 : 4월 9일 오전 10:49
조회수 : 21
[Final OK by SGLee] 행사다리꼴 관련 질문(Questioned by 김민수 and Finalized by 신@@, 이상구 교수님)
Q(김민수).
행렬 A가 존재할 때 [A:B]의 해는 RREF [A:B]로 바꾸면 쉽게 구할 수 있다고 하셨는데
행렬 A와 RREF(A)는 수학적으로 무슨 상관관계를 갖는 것인가요?
A(이상구 교수님).
김민수군 표현이 틀려서 다시 고쳐줍니다. :1. 행렬 A 와 벡터 b 에 대하여 Ax = b 의 해는 첨가행렬 [A:b]의 RREF [A:b] 를 구하여 쉽게 구할 수 있습니다.2. Ax = b 의 해집합 와 RREF 를 이용하여 얻은 상삼각행렬에 대한 연립방정식의 해집합이 같으므로, 해집합이 같다는 아주 밀접한 상관관계를 갖습니다.
A(신@@)
행렬 A와 RREF(A)는 다음의 증명에서 밀접한 상관관계를 갖는 것이 증명된다.
증명 1)






증명 2)


증명 3 by 이상구 교수님)
[증명] 두 해 집합이 같다는 것만 보이면 됩니다. 방법은 RHS (우측) 집합의 임의의 벡터가 LHS,(좌측) 집합의 벡터들의 일차결합으로 표시된다는 것만 보이면, RHS (우측) 집합은 LHS,(좌측) 집합의 부분집합이 되고, (이것은 RREF 성질에서 바로 나옵니다) .반대편 포함관계도 같은 방법으로 쉽게 보여집니다^^
1. When you do elementary operations ݑ1,…,ݑݑ
O1,…,On on the rows of ݐ´A to get rref (ݐ´) rref(A)
2. you form an invertible matrix ݑ=ݑ1⋯ݑݑO1⋯On such that ݑݐ´=rref(ݐ´)
OA=rref(A)
3. and let us show that Null(ݑݐ´)=Null(ݐ´)=Null(rref(ݐ´))
Null(OA)=Null(A)=Null(rref(A))
(⊃)4. (⊃) Let ݑ∈Null(ݐ´)
X∈Null(A). We have ݐ´ݑ=0
AX=0. Thus ݑݐ´ݑ=0
OAX=0. Therefore ݑ∈Null(ݑݐ´)
X∈Null(OA).
5.
55(⊂)(⊂) Let ݑ∈Null(ݑݐ´)
X∈Null(OA). We have ݑݐ´ݑ=0
OAX=0
by multiplying on both sides by ݑ−1
O−1, we get ݐ´ݑ=0
AX=0
6. Thus ݑ∈Null(ݐ´)
X∈Null(A).
7. We showed that rref(ݐ´)
rref(A) and ݐ´ A have the same solution set.
그래서 두개의 해 집합이 같은 집합임이 보여집니다^^ (증명 끝)
(Ax = b 의 해집합을 좌변 LHS 이라고 하고 ... 그것의 첨가행렬의 RREF 를 구하여 만든 간단한 연립방정식 T x = c 의 해집합을 우변 RHS (Right Hand Side) 이라고 한 의미입니다.)
Final Comment
RREF를 취한 것과 그러지 않은 선형연립일차방정식의 해집합이 같다는 것은 그동안 배웠던 지식으로 충분히 직관적인 이해가 가능했다. 그런데 김민수 학우의 질문에 더 엄밀한 증명을 고민하게 되었고 결과적으로 교수님과 함께 세가지 증명을 얻게 되었다. 덕분에 RREF에 대한 이해도 상당히 높아질 수 있었다.
[Final] 5주차 강의 안열림(캡처 첨부하여 수정함) <-- 주차는 3월 28일 공개로 되어 있는데 ... 차시는 ... <- Now Fixed^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 7일 오후 5:44
조회수 : 15
교수님, 주차 시작일 보면 열어두시려고 한 것 같은데 강의 각각 들어가보면 4월 13일부터 열린다고 나옵니다..

여기 시작일은 3월 28일이라고 나옵니다. 하지만, 세부 강의를 들어가보면,

이렇게 나와서 학습 진행이 불가합니다..
이상구(LEE SANGGU)4월 7일 오후 6:04
나는 3월 말 부터 보도록 고쳐 두었는데 ...
05 | 5주차 시작일: 3월 28일 오전 00:01 공개
[출석 필수]
1차시 인공지능을 위한 기초수학 10강 (미적분 1 극한과 도함수)공개 MEDIA|25:54|마감일:4월 19일 오후 11:59
2차시 인공지능을 위한 기초수학 11강 (미적분 2 미분의 응용)공개 MEDIA|13:58|마감일:4월 19일 오후 11:59
3차시 인공지능을 위한 기초수학 12강 (미적분 3 적분)공개 MEDIA|08:41|마감일:4월 19일 오후 11:59
[아래 출석은 선택, 참고]
4차시 1st Month 과제 (Sample) : PBL 보고서 Sample [1학년-엄지민-Final-PBL]공개
MEDIA|13:38|마감일:4월 19일 오후 11:59출결 대상 아님
5차시 1st Month 과제 (Sample) : PBL 보고서 Sample [5-송소영-Final-PBL]공개
MEDIA|14 :08|마감일:4월 19일 오후 11:59출결 대상 아님
6차시 4월 3일 금요일 10시반 WebEx OH (75분 중 57분만 녹화되었음) 페이지 추가
Math4AI WebEx OH 2020년 금요일 4월 3일 https://youtu.be/mUj2PZdNKzk 공개
MEDIA|47:41|마감일:4월 19일 오후 11:59출결 대상 아님
7차시- Math4AI-Part2-Preview 공개
MEDIA|39:37|마감일:4월 19일 오후 11:59출결 대상 아님
<--- 한번 더 확인 하고 알려주세요^^ 그래도 이상이 있으면 ... 시스템 담당자에게 ... 연락 할께요^^
이상구(LEE SANGGU)4월 7일 오후 6:05
임 조교 선생님 도 한번 확인해 주시기 바랍니다^^
이상구(LEE SANGGU)4월 7일 오후 6:25
3월 28일 오전 00:01 공개로 되어 있는데 ... 다른 분도 확인해 보시고 의견 주세요^^
신@@(2013****84)4월 7일 오후 6:31
캡처를 첨부했습니다.
신@@(2013****84)4월 7일 오후 6:39
아 지금 다시 들어가보니 해결되었습니다! 4월 1일부터 열람이라고 나옵니다.
이상구(LEE SANGGU)4월 7일 오후 6:40
고마워요^^ 자 찾았습니다^^
이제 5주차 강의 모두 열립니다,
확인해 보니, <-- 주차는 3월 28일 공개로 되어 있는데 ... 차시는 4월13일로 안 바뀐 현상이었네요^^ 고쳤습니다^^^
이상구(LEE SANGGU)4월 7일 오후 6:46
01|1주차시작일:3월 2일 오전 00:01공개 차시 추가
02|2주차시작일:3월 16일 오전 00:01공개 차시 추가
03|3주차시작일:3월 18일 오전 00:01공개 차시 추가
04|4주차시작일:3월 18일 오전 00:01공개 차시 추가
05|5주차시작일:3월 28일 오전 00:01공개 차시 추가
06|6주차시작일:3월 30일 오전 00:01공개 차시 추가
07|7주차시작일:4월 1일 오전 00:01공개 차시 추가
<-- 1-7 주차 : Part1 and Part 2 (미적분학 ) < --- 모두 출석 가능합니다^^
Final Comment
미리부터 차근차근 다변수 미적분학과 최적화를 학습하기 위해 들어갔는데, 강의가 아직 열려있지 않았다. 이번 학기부터 전면적으로 차세대 아이캠퍼스로 넘어오면서 나타난 현상이었는데 이 건의로써 반복적인 문제 발생을 방지할 수 있게 되었다.
[Final] 극한의 엄밀한 정의에 대한 이해 질문 <--- fixed ^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 7일 오후 7:16
조회수 : 9

극한의 엄밀한 정의는 볼 때마다 언뜻 와닿지 않는 측면이 있습니다.
그래도 여기서 생물학의 현미경에 빗댄 게 뭔가 더 와닿는 느낌인데,
* https://atoandme.blogspot.com/2018/10/2017-1-1-1.html 의 설명을 참고하면 ...
By 아토 at October 19, 2018 No comments
입실론 텔타 증명법을 아래 예제들을 기준으로 간단하게 설명하자면
x가 a에 무한이 가까워질 경우 : x와 a의 거리 차이가 델타 보다 작음을 가정
함수값이 L에 무한히 가까워 질 경우 : 함수값과 L값의 거리차가 입실론보다 작음을 가정
위 조건을 만족하는 델타값에 대해
함수값과 L값의 거리차가 입실론보다 작음을 보이면
극한 값이 존재한다.
입실론은 임의의 실수 임으로 델타값이 존재함을 보이면 극한 값이 존재함을 보이는 것이다.
예제 1
![]()
임의의 양의 입실론에 대해서
앞의 델타 등호를 만족할 때 입실론 등호를 만족하는 임의의 델타가 존재함을 확인한다.
델타가 존재할 경우 위 극한은 존재한다.
입실론 앞의 등호는 항상 입실론보다 크다. 입실론 앞의 등호를 델타와 관련된 식으로 표현 한 후에 그 식이 입실론보다 작으면 기존 입실론 식을 포괄하기 때문에 모든 입실론에 대해 성립하는 델타식으로 성립할 수 있다. 따라서 새로운 델타 등호가 만들어지고 그 델타 등호 범위 내에 있는 델타가 존재하기 때문에 위 극한값은 존재한다고 할 수 있다.

a가 아니라 roota로 나누어야 부등호가 더욱 정확하다고 생각된다.
모범답안에는 a로 나눈 등호로 표현했기 때문에 모범답안대로 풀었다.
예제 2 , 예제3
[2017-2]_미적1___1차_

예제 4

(0<x<2)에서 x/x^2+1의 최댓값이 2는 절대 아니다. 미분해서 최댓값 구한 후에 입실론 델타 범위를 잡아야 한다
예제 5
![]()
의 극한값이 존재하는지 찾고 존재할 경우, 이를 입실론 델타 논법으로 증명해보시오
![]()
극한값은 2이다.

임의의 양의 입실론에 대해
x와 0의 사이의 거리 y와 0의 사이의 거리 즉 (x,y)와 (0,0) 사이의 거리가 델타보다 작을 때 함수식의 값과 2의 값의 차이가 입실론 보다 작음을 증명하면 이 식의 극한값은 2이다.

델타식 양변을 제곱하면 위와 같은 식이 나온다. 가장 마지막 식을 만족하는 델타값이 존재함으로 이 문제의 극한값은 2로 극한값이 존재한다.
******* 결론 ***
한마디로 함수 f(x)가 함수값 f(a)=L 근방에서 어떠한 거동을 취하는지 현미경으로 들여다 봤더니,
함수값 L에 접근하면 접근할 수록 x값이 a에 무조건 접근한다는 쪽으로 이해하면 충분하려나요?
"(1) If x값이 a에 접근하면, then 함수값 f(x) 는 L에 접근 한다 " 는 쪽으로 이해하면 충분하려나요? (맞습니다)
(2) 델타가 엡실론에 대한 함수로서 (맞습니다) ,
엡실론을 한없이 작은 양수로 하면 할수록 델타가 한없이 작은 양수로 따라온다는 개념으로요~
"(3) 엡실론을 아무리 작은 양수로 잡아도, 그에 대응하는 (주어진 식을 만족하는) positive 델타가 항상 존재한다"
가 바로 (1) 과 (3) 이 동치인 문장, 개념 이라고 이해 하면 됩니다. (맞습니다)
Final Comment
극한의 엄밀한 정의가 늘 알쏭달쏭하지만 부등식의 풀이로 논리를 이어나가서 극한의 정의의 필요조건에 도달하면 극한값이 존재하는 것이라는 정리가 되었다.
[Final] 극한의 엄밀한 정의에 대한 실습과 추가적으로 얻은 직관 <--- 맞습니다 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 7일 오후 7:50
조회수 : 14
의 우리 대학 1학년 학생들 미적분학 1 에서의 문제와 풀이 ... 공유하면서 ... 대략 이해 하려고 해보았습니다.
Solved by 이송섭 Revised by 우시명 Revesed by 배성준 Finalized by 이송섭 Refinalized by 이송섭 Final OK by SGLee
p.50 Chapter2.1 Exercise No.19(old)
19. Use the argument to prove that ![]()
Proof)
Let
. [Find
> 0]
Take ![]()
If
,
Then
.
whenever ![]()
We haver proved
. ■
[side cal]
![]()
![]()
Solved by 배성준 Finalized by 이송섭 Final OK by SGLee
Page 50 Exercise 2.1 (New) No.19
Use the
argument to prove that
.
Proof)
Let
. [Find
> 0]
Take ![]()
If
,
Then
.
whenever ![]()
We haver proved
. ■
[side cal]
![]()
![]()
Epsilon Delta Proof
Solved by 배성준 Revised by 이송섭 Finalized by 문지호 Refinalized by 배성준 Final OK by SGLee
Page 50 Exercise 2.1 (New) No.20
17. Use the
argument to prove that ![]()
if
and
.
Proof)
Let
, [Find
> 0]
Take ![]()
If
,
then 

whenever
. █
(side cal)

Epsilon Delta Proof
Solved by 이송섭 Revised by 이송섭 Finalized by 이송섭 Final OK by SGLee
[1] 연속함수인 경우(아주 간단한 예)
Calculus with Sage P.51 Chapter 2.1-24 (Old).
Using the
argument prove ![]()
Proof)
Let
, [Find
> 0]
Take
.
If
,
then
.
whenever
. ■
(side cal)
.
[2] 연속함수인 경우(예)
Show
.
Proof. ∀
>0 [Find
]
Let
= ![]()
If |
-
| <
,
then ![]()
( =
)
= ![]()
■
<side cal.>
![]()
![]()
![]()
□
[3] 연속함수인 경우(예)
Show
.
Proof. ∀
>0 [Find
]
Let
= ![]()
If
,
then ![]()
( =
)
=![]()
=![]()
=![]()
=
■
<side cal.>
![]()
![]()
![]()
□
Epsilon Delta Proof
[4] 연속함수인 경우 (min 기법 예)
Show
.
Proof. ∀
>0 [Find
]
Let
{
}
If
,
then
=![]()
■
<side cal.>
![]()
□
[5] 연속함수인 경우 (min 기법 예)
Show ![]()
Proof. ∀ε>0, Find δ
Let
=min{
}

ReFinalized and Final OK by SGLee
[6] 연속함수인 경우 (min 기법 예)
Show
.
Proof. ∀
>0 [Find
]
Let ![]()
![]()
If ![]()
then
=![]()
![]()
![]()
![]()
■
<side cal.>
![]()
Take
.
If
, then
.
=![]()
□
ReFinalized and Final OK by SGLee
[7] 불연속인 점에서의 경우 limit (예)
Show
.
Proof. ∀
>0 [Find
]
Let
![]()
.
If
,
then ![]()
=![]()
![]()
![]()
■
<side cal.>
by (*)
and
![]()

![]()
□
http://math1.skku.ac.kr/home/pub/991 (*)

[8] 발산의 경우 limit (예)
Show
.
Proof. ∀ Large number
,[Find
]
Let
(
)
If
,
then
■
![]()
<side cal.>
Since
,
![]()
![]()

http://math1.skku.ac.kr/home/pub/992


(1) 함수 f(x)가 x=a에서 극한값이 L로 존재한다는 것은,
(2) 좌표평면 상에서, (a, L)을 대각선의 교점으로 하는 직사각형을 생각할 때,
(3) 이 직사각형의 높이를 2*엡실론으로 잡을 때, 항상 그에 대응하는 직사각형의 밑변을 항상 2*델타로 잡아서, 그 상자 안에 f(a) 가 들어오게 할 수 있다.
즉, f(x)값이 L 근방을 지나면 x값은 무조건 a 근방을 지난다.
이 실습에서 의도하는 이해의 폭이 이러한 것 맞나요? <--- 맞습니다
Final Comment
고등학교에서 직관적으로 "충분히 가까이"라는 애매한 말로 배웠던 극한을 대학에서 엡실론-델타 논법으로 엄밀하게 배운다는 것이 쉽지 않았다. 하지만 부등식의 기본 변형 아이디어만 잘 가져가고 엡실론과 델타를 잘 연결시키면 극한의 존재성을 엄밀하게 보장할 수 있다.
[Final] Python 기초 강의 링크, The Python Math Module by 신@@, 민재필, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 9일 오후 5:35
조회수 : 28
Python 기초 강의 링크, The Python Math Module
Python에 대한 기초 강의가 6시간짜리 유튜브 영상으로 올라와 있는것이 있는데 공유하면 좋을듯 하여 공유합니다~
And
The Python math Module
https://realpython.com/python-math-module/
https://andamiro25.tistory.com/12
https://docs.python.org/3/library/math.html
11.1 수학과 통계학 | 파이썬 프로그래밍 입문서
https://python.bakyeono.net/chapter-11-1.html
math 모듈은 다양한 수학 도구를 담은 도구 상자다. 제곱근, 로그, 계승, 삼각함수 등 수학 하면 쉽게 떠올릴 수 있는 다양한 함수와 원주율과 자연상수 같은 중요한 상수가 정의되어 있다.
다음 표는 math 모듈에서 자주 사용되는 함수를 몇 가지만 꼽아 정리한 것이다.
|
함수 |
값 또는 기능 |
|
math.factorial(x) |
x의 계승(팩토리얼) |
|
math.gcd(a, b) |
a와 b의 최대공약수 |
|
math.floor(x) |
x의 소수점 아래를 버린다 |
|
math.ceil(x) |
x의 소수점 아래를 올린다 |
|
math.pow(x, y) |
x의 y 승 |
|
math.sqrt(x) |
x의 제곱근 |
|
math.log(x, base) |
base를 밑으로 하는 x의 로그 |
|
math.sin(x) |
x 라디안의 사인 |
|
math.cos(x) |
x 라디안의 코사인 |
|
math.tan(x) |
x 라디안의 탄젠트 |
|
math.degrees(x) |
x 라디안을 도(°) 단위로 변환한다 |
|
math.radians(x) |
x 도(°)를 라디안 단위로 변환한다 |
표 11-1 math 모듈에서 자주 사용되는 함수
원주율, 자연상수처럼 직접 구하기가 까다로운 무한소수, 그리고 무한대를 표현하는 상수도 미리 정의되어 있다.
|
상수 |
값 |
|
math.pi |
원주율 (3.141592653589793...) |
|
math.e |
자연상수 (2.718281828459045...) |
|
math.inf |
양의 무한대 |
표 11-2 math 모듈에 정의된 대표적인 상수
다음은 math 모듈을 임포트하고 몇몇 함수를 사용해 본 예다.
코드 11-1 math 모듈 사용하기
>>> import math # math 모듈 임포트
>>> math.factorial(8) # 8의 계승 (8!)
40320
>>> math.gcd(21, 28) # 21과 28의 최대공약수
7
>>> math.floor(math.e) # 자연상수의 소수점 아래를 버림
2
>>> math.ceil(math.e) # 자연상수의 소수점 아래를 올림
3
>>> math.pow(3, 4) # 3의 4승
81.0
>>> math.log(81, 3) # 3을 밑으로 하는 81의 로그
4.0
>>> math.radians(180) == math.pi # 라디안과 원주율의 비교
True
>>> math.degrees(math.radians(90)) # 90 도 -> 라디안 -> 도
90.0
math 모듈은 수학 지식을 얼마나 갖췄는지에 따라 쉽거나 어렵게 느낄 수 있다. 제곱근이나 원주율은 별 문제 없곘지만, 삼각함수·로그·라디안에 대해서는 잘 모를 수도 있다. 학교에서 수학을 학습하다 보면 차차 알게될 내용이고, 설령 수학을 포기했더라도 필요할 때 충분히 찾아 배울 수 있으니 너무 걱정하지 말자.
연습문제 11-1 몫 구하기
몫을 구하는 연산자(//)는 파이썬 3.5 이상에서만 사용할 수 있다. 그보다 파이썬 버전이 낮다면 이 연산자를 사용할 수 없다. 몫 연산자 없이 몫을 구하려면 어떻게 해야 할까?
10을 6으로 나눈 몫을 구하는 프로그램을 몫 연산자를 사용하지 않고 작성해 보아라.
파이썬에서 실수는 기본적으로 부동소수점 수 형식의 소수로 표현된다. 따라서 실수를 계산할 때 오차가 발생할 수밖에 없다. 분수를 나타내는 fractions 모듈은 이런 오차를 피하고 싶거나 분수 연산을 활용하고 싶을 때 유용하다.
fractions 모듈에는 분수를 나타내는 fractions.Fraction 클래스가 정의되어 있다. fractions 모듈을 사용할 때는 변수에 모듈 전체 대신 Fraction 클래스만 임포트하는 편이 편리하다.
코드 11-2 fractions 모듈에서 Fraction 클래스 임포트
>>> from fractions import Fraction # Fraction 클래스 임포트
모듈을 임포트한 후에는 Fraction 클래스를 인스턴스화하여 분수 객체를 표현할 수 있다. 분수 객체를 만들 때는 다음과 같이 분모와 분자를 초기값으로 지정해야 한다. 이 때 인수를 전달받을 numerator(분자)와 denominator(분모) 매개변수를 직접 지정할 수도 있고 생략해도 된다.
코드 11-3 분수 객체 생성하기
>>> Fraction(1, 3) # 3분의 1
Fraction(1, 3)
>>> Fraction(numerator=2, denominator=5) # 2분의 5
Fraction(2, 5)
분수를 서로 계산하거나, 정수·실수 등과 계산할 수도 있다. 필요에 따라 통분과 약분이 자동으로 수행되어 편리하다.
코드 11-4 분수 객체의 연산
>>> Fraction(1, 3) + Fraction(2, 3)
Fraction(1, 1)
>>> Fraction(1, 6) + Fraction(2, 3)
Fraction(5, 6)
>>> Fraction(2, 3) * 5
Fraction(10, 3)
분수의 분자를 구하려면 numerator 속성을, 분모를 구하려면 denominator 속성을 읽으면 된다. 그러나 이 속성을 직접 수정하는 것은 허용되지 않는다.
코드 11-5 분수 객체의 분자·분모 구하기
>>> one_third = Fraction(1, 3)
>>> one_third.numerator # 분자 구하기
1
>>> one_third.denominator # 분모 구하기
3
>>> one_third.numerator = 10 # 분자·분모 속성을 직접 수정할 수 없다
AttributeError: can't set attribute
난수란 정해지지 않은 임의의 수로, 프로그래밍에서는 코드를 평가할 때마다 임의의 값으로 평가되는 데이터를 가리킨다. 난수는 게임에서 매번 다른 상황을 연출할 때, 통계 시뮬레이션에서 무작위로 표본을 추출할 때, 설거지 당번을 뽑을 때 등 여러가지 용도로 활용된다. 파이썬의 난수와 관련된 기능은 random 모듈에 모여 있다.
다음 표는 random 모듈에서 자주 사용되는 함수를 몇 가지만 꼽아 정리한 것이다.
|
함수 |
값 또는 기능 |
|
random.randint(a, b) |
a 이상 b 이하의 임의의 정수 |
|
random.random() |
0 이상 1 미만의 임의의 실수 |
|
random.choice(seq) |
시퀀스에서 요소 하나를 무작위로 선택한다 |
|
random.sample(seq, k) |
시퀀스에서 요소 k 개를 무작위로 선택한다 |
|
random.shuffle(seq) |
시퀀스를 무작위로 섞는다 |
|
random.seed(a) |
난수의 씨앗 값을 a로 설정한다 |
표 11-3 random 모듈에서 자주 사용되는 함수
...
이상구(LEE SANGGU)4월 9일 오후 7:15
우선 우리 책의 문제 들을 ... 제공한 파이썬 기반의 SageMath 언어로 ... 여러분 전공이나 AI 와 관련한 문제 ... 아니면 좀 더 큰 사이즈나, 좀 더 복잡하거나, 좀 더 흥미있는 문제 ... 또는 여러분 전공 사적에 나오는 문제 에 대하여 ... 풀어서 ... 여러분들의 문제와 답을 공유 하면서 ... 일단 기초 실력을 키워 두세요^^part 3 와 part 4 AI 하려면 ... 지금 그것을 해 두는 것이 ... 꼭 필요합니다. ^^
신@@ 학우님께서 올려주신 파이썬 동영상
작성자 : 민재필(2015****15)작성일 : 4월 14일 오후 10:36
조회수 : 18
예전부터 코딩을 배우고 싶었는데 초보자들이 따라하기 쉽도록 잘 만든 동영상인거 같습니다. 올려주셔서 감사합니다.
이상구(LEE SANGGU)4월 16일 오전 4:22
잘했습니다. 다른 학생이 푼 조언/문제/정보에 ... 검색 ... 둘러보고 ... 자신의 코멘트 5~10개 정도 다시고, 이해되었으면, 질문과답을 정리해 새글로 Finalize 를 ... 제목에 Final 과 자신이름 그리고 key word 달아 하신 후 ...중간고사에 자신 이름으로 이나 Final 로 검색해서 ... 자신 이름 들어간 ... 그런것 모두 포함시켜서 제출 하시면, ...It will help you a lot. 그럼 A 에 좀 더 가까워 지는 방법임을 알려주고 조군에게 일 주일 이 있다는 조언을 remind 해 줍니다.
Final Comment
인공지능이 트렌드가 되어가는 요즘 가장 각광받는 프로그래밍 언어가 Python이다. 계절수업에서 아주 간단한 Python 코드를 다룬 적이 있었는데, 이 Python은 다루기가 쉽고 응용범위가 넓어 많이 쓰인다고 한다. 우리 수업에서 쓰는 Sage 또한 Python 기반의 언어로 만들어졌다고 하기에, 함께 Python을 익혀두면 더욱 더 활용하는 데에 좋다고 여겨서 공유하게 되었다.
[Final] 2020년 금요일 4월 10일 WebEx 미팅, 복습과 QnA 대한 설명 https://youtu.be/qxea3Z_mG1g 에서도 볼 수 있습니다^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 10일 오후 12:07
조회수 : 16
오늘 진행한 WebEx 미팅은 교수님께서 WebEx 본사로부터 영상을 받으시면 그 영상을 6주차에 저장하실 것이라고 합니다. 중간고사 과제와 Part 2에 대한 전반적인 안내를 해주셨습니다.
Math4AI WebEx OH 4월 10일 10시반 OH - 복습과 TakeHome 중간고사에 대한 설명 https://youtu.be/qxea3Z_mG1g
Math4AI WebEx OH 2020년 금요일 4월 3일 복습과 QnA 대한 설명 https://youtu.be/mUj2PZdNKzk 에서도 볼 수 있습니다^^
중간고사 평가방법으로는, 대면하여 지필시험을 치르는 것이 불가능한 만큼, 3,4월 활동내용을 종합한 PBL 보고서와 Take Home Exam에 대한 양과 질로써 평가할 계획이라고 하셨습니다. 기한은 4월 23일 오전 11시입니다.
늦게 신청한 학생들은 3월 Part 1 활동에 대한 내용이 다소 비어있을텐데 Part 1 보충하고 채워서 함께 제출하면 된다고 이해하였습니다. TakeHome Exam에 대해서도 1에 대해서 제출이 안되었던 경우에도 Second Chance를 주신다고 하였습니다. 반영비율은 PBL 30점, TakeHome Exam 30점입니다. TakeHome Exam은 1이 10점 2가 20점입니다. 3월 PBL의 내용이 이미 있는 학생들도 다듬고 수정하여서 더 개선된 PBL 제출을 권장하셨습니다. 3,4,5,6 PBL이 모여서 나중에 본인의 발전하는 모습도 보일거라고요.
PBL 제출을 위한 QnA 게시판 활용 방법을 다시 설명해주셨는데, 학생들과 교수님간에 소통을 하면서 논의 내용이 발전되고 결론이 지어지면, Finalize 시키는 사람이 그동안 논의 내용을 정리하여서 새 글쓰기를 하여 Finalize하라고 하셨습니다. 기존 글에 대해 답글 등으로 정리하는 것은 링크도 안되고 이미지도 안되고 여러가지 한계가 있기 때문에 새로 Finalize 하는 글쓰기를 하면 보고서 쓰기에도 좋고 채점하기에도 용이하다고 하셨습니다. 그리하여서 교수님과 조교님의 첨삭 이후 Final OK를 받으면 그 논의 내용에 대해서는 감점이 따르진 않을 것이라고 하셨구요. 그런데 PBL에 Final OK를 받지 않은 내용을 첨부하였을 경우 불완전한 논의 내용일 수 있기에 상황에 따라서 감점이 이루어질 수 있다고 하셨습니다. 되도록 이미지보다는 텍스트로 첨부하는 것이 향후 활용하기에도 좋기에 텍스트로 정리하는 것을 권장하셨습니다.
PBL 보고서에서 참여 내용에 첨부할 것들은 질문하는 과정, Finalize하는 과정, 논의하는 과정에서 자기가 참여한 부분이 있으면 모두 올리면 된다고 이해하였고요.
팀 프로젝트 제안서에 관한 내용도 있었습니다. 자기 전공과 관련한 부분, 그 외에도 AI에 대해서 이 수업에서 배운 내용과 접목시킬 수 있는 부분을 제안하는 제안서를 PBL에 기술하면 되고, 이 제안서 부분은 기술하면 점수 다 준다고 하셨습니다.
팀 프로젝트는 임시로 정해준 팀장들이 있는데, 그 팀장을 중심으로 마음 맞는 사람들끼리 팀을 꾸려서 과제를 진행하면 된다고 하셨고, 학생들끼리 팀장을 바꾸는 것도 얼마든지 자율적으로 가능하고, 인원 구성도 2~4명 정도, 원하면 혼자서 진행하는 것도 가능하다고 하셨습니다.
팀 프로젝트를 하지 않으셔도 됩니다. 제안서만 쓰시면 중간고사 10점 입니다.
그러나 개인 또는 팀 프로젝트의 모든 과정을 수행한 경우 발표/참여점수에서 가점이 다소 있을 것이라고 하셨습니다.
요약한 내용 중에 미진한 내용도 다소 있을지 모르니, 교수님께서 올려주신 공지, 주말에 WebEx 미팅 녹화내용을 다시 보는 게 좋을 것 같습니다. 감사합니다.
이상구(LEE SANGGU)4월 13일 오전 10:44
OH 동영상 6주차 강의실에 업로드 되었고,[Matrixtopia] Math4AI WebEx OH 4월 10일 10시반 OH - 복습과 TakeHome 중간고사에 대한 설명
https://youtu.be/qxea3Z_mG1g아래는 5주차에
Math4AI WebEx OH 2020년 금요일 4월 3일 복습과 QnA 대한 설명
https://youtu.be/mUj2PZdNKzk 에서도 볼 수 있습니다^^
Final Comment
이수업은 온라인 수업으로 제작되었고, 현 상황 상 강의실에서 대면이 어렵기 때문에 WebEx 시간에서 교수님의 피드백을 받아가는 것이 매우 중요하다. 하지만 여러가지 사정으로 WebEx에 참여하지 못하는 학생들이 많은데 함께 배워가는 입장으로서 이 WebEx 정보를 공유하는 것에 큰 보람을 느꼈다.
[Refinalized] [Final OK by TA] 3차원 그래프 코딩 이해 by 신@@,김예훈,이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 3:44
조회수 : 4
[Final OK by TA] 3차원 그래프 코딩 이해 by 신@@,김예훈,이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 21일 오전 11:01
조회수 : 9
var('t') # https://sagecell.sagemath.org/
r = vector([cos(2*t), sin(3*t), t]) # Define r(t)
C = parametric_plot3d(r, (t, 0, 2*pi), color = 'green', thickness = 2) #Sketch curve
t1 = pi/10 # location of arrows
t2 = 2*pi/3
t3 = 5*pi/3
Ar1 = arrow3d(r(t = t1), r(t = t1+0.1), color = 'green') # Draw arrows
Ar2 = arrow3d(r(t = t2), r(t = t2+0.1), color = 'green')
Ar3 = arrow3d(r(t = t3), r(t = t3+0.1), color = 'green')
show(C + Ar1 + Ar2 + Ar3)
마지막 줄이 의미하는 바가 무엇인지 잘 모르겠습니다. 한 좌표공간 안에 t의 자취에 따라 그려지는 곡선과 세개의 화살표를 그리라는 것인가요?
곡선이 그려진 그림 자체를 변수 C에 대응하였고
t가 0.1만큼 변할 때 지나가는 자취로써 그려지는 화살표 세개를 Ar1, Ar2, Ar3 변수에 저장한 것이라고 이해하였는지 맞는지 궁금합니다..
이상구(LEE SANGGU)4월 14일 오후 10:27
마지막 줄이 의미하는 바는 한 좌표공간 안에 t의 자취에 따라 그려지는 곡선과 세개의 화살표 모두를 즉 C , Ar1 , Ar2 , Ar3 을 하나의 그림으로 그리라는 것이 맞습니다
이상구(LEE SANGGU)4월 16일 오전 4:23
다른 학생이 .... 이해되었으면 ... 자신의 코멘트 다시고, ... 이해되었으면, 질문과 답을 정리해 새글로 Finalize를 ... 제목에 Final과 자신이름 그리고 key word 달아 하신 후 ... 중간고사에 자신 이름으로이나 Final로 검색해서 ... 자신 이름 들어간 ... 그런것 모두 포함시켜서 제출하시면, ... It will help you a lot. 그럼 A에 좀 더 가까워 지는 방법임을 알려주고 조군에게 일주일 이 있다는 조언을 remind 해줍니다.
이상구(LEE SANGGU)4월 17일 오전 10:58
마지막줄 에 빠진 명령어 채우세요^^
김예훈(2020****54)4월 17일 오전 11:00
Sketch curve앞에 있어야할 #가 없어서 문제가 발생하는 것 같습니다.
이상구(LEE SANGGU)4월 17일 오전 11:31
var('t') # https://sagecell.sagemath.org/ r = vector([cos(2*t), sin(3*t), t]) # Define r(t) C = parametric_plot3d(r, (t, 0, 2*pi), color = 'green', thickness = 2) #Sketch curve t1 = pi/10 # location of arrows t2 = 2*pi/3 t3 = 5*pi/3 Ar1 = arrow3d(r(t = t1), r(t = t1+0.1), color = 'green') # Draw arrows Ar2 = arrow3d(r(t = t2), r(t = t2+0.1), color = 'green') Ar3 = arrow3d(r(t = t3), r(t = t3+0.1), color = 'green') show(C + Ar1 + Ar2 + Ar3)
이상구(LEE SANGGU)4월 17일 오전 11:32
김예훈씨 , 맞습니다. 잘 봤어요^^ 복사해 오면서 줄이 바꾸이었네요^^
Final Comment
Sage 명령어에서 Show는 여러 그림을 동시에 나타낼 수 있는 기능을 제공하는데, 방법은 그림에 해당하는 변수끼리 +로 묶어주고 그것을 Show의 인수로 넣으면 된다는 것을 깨달을 수 있었다.
[Final] 프로그램 알고리즘 질문과 답 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 18일 오후 7:19
조회수 : 15
![]()
var('u, v, s, t')
x = u^2 + v^2
y = 2*u*v
z = s^2*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()) # simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
답:
dz/du = 10*u^4*v + 12*u^2*v^3 + 2*v^5
dz/dv = 2*u^5 + 12*u^3*v^2 + 10*u*v^4
z를 정의하실 때 왜 바로 x, y로 안하고 s, t를 거치신건가요??
이상구(LEE SANGGU)4월 18일 오후 7:31
var('u, v')
x = u^2 + v^2
y = 2*u*v
z = x^2*y
print("dz/du =", diff(z(x, y), u).simplify_full())
print("dz/dv =", diff(z(x, y), v).simplify_full()) # simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
로 하면 답이 아래와 같이 나오는데 ... 이유가 무엇일까요?
dz/du = 44*u^10*v + 468*u^8*v^3 + 1400*u^6*v^5 + 1000*u^4*v^7 + 156*u^2*v^9 + 4*v^11
dz/dv = 4*u^11 + 156*u^9*v^2 + 1000*u^7*v^4 + 1400*u^5*v^6 + 468*u^3*v^8 + 44*u*v^10
***
var('u, v')
x = u^2 + v^2
y = 2*u*v
z = x^2*y
print("dz/du =", diff(z, u).simplify_full())
print("dz/dv =", diff(z, v).simplify_full()) # simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
하면 바로 나옵니다.
dz/du = 10*u^4*v + 12*u^2*v^3 + 2*v^5
dz/dv = 2*u^5 + 12*u^3*v^2 + 10*u*v^4
z(x, y)
는 4*(4*u^2*v^2 + (u^2 + v^2)^2)^2*(u^2 + v^2)*u*v 로 인식하는 것이 이유 인 듯합니다.
신@@(2013****84)4월 18일 오후 7:59
첫 변수선언에 u와 v만 있냐, s와 t까지 있냐는 문제인데 x와 y가 z에 대한 독립변수의 위치를 갖지 못한다는 것 쯤이 아닐까 싶은데 잘은 모르겠습니다..
s와 t를 동등한 독립변수로 놓고, 그 독립변수에 x와 y에 저장된 식을 대입한다는 게 모범답안의 의도 같은데
근데 제가 교수님이 첫 답글에서 올려주신 코드를 조금 수정해서 아래와 같이 써보았는데,
var('u, v')
x = u^2 + v^2
y = 2*u*v
z = x^2*y
print("dz/du =", diff(z, u).simplify_full())
print("dz/dv =", diff(z, v).simplify_full()) # simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
차라리 z(x,y) 안하고 그냥 z로 놔두면 답이 정상적으로 나오거든요..
이상구(LEE SANGGU)4월 19일 오후 7:34
이 부분은 Sage가 버전업 되면서 바뀐 부분이네요.
최근에 이렇게 바뀌었다고 합니다.
예를 들어,
1. 예전에는
f(x, y) = x^2 + y 라고 정의해야
f(1, 2)와 같이 사용할 수 있었고,
2. f = x^2 + y 라고 하면
f(1, 2)와 같이 쓸 경우 오류가 발생하는 경우가 있었습니다.
그래서 이 경우는 x = 1, y = 2를 대입한다는 것을 명확하게 해주기 위해서
f.subs(x = 1, y = 2) 또는 f(x = 1, y = 2)와 같이 사용했습니다.
3. 최근에는 개선되어 f = x^2 + y라고 해도 f(1, 2) 명령어가 작동하는데
확실치는 않지만 몇 개 테스트를 해보았을 때 Sage가 default로 알파벳
순서대로 대입하는 것 같습니다.
4. 그래서 신@@군이 시도한
var('u, v')
x = u^2 + v^2
y = 2*u*v
z = x^2*y
print("dz/du =", diff(z, u).simplify_full())
print("dz/dv =", diff(z, v).simplify_full()) # simplify_full()
도 잘 작동합니다.
5. Sage Notebook 이나 Cocalc 사용시 x = u^2 + v^2 으로 정의하면
다른 계산에 x에 대한 정의가 영향을 미칠 수 있을 것 같습니다.
그래서 x, y 사용을 피하여 아래와 같이 사용해도 되고
var('u, v')
s = u^2 + v^2
t = 2*u*v
z = s^2*t
print("dz/du =", diff(z, u).simplify_full())
print("dz/dv =", diff(z, v).simplify_full())
아니면 x = u^2 + v^2 를 사용후에 reset('x') 명령어로 clear 할 수 있습니다.
Hope this help^^
이상구(LEE SANGGU)4월 19일 오후 7:40
(위의 계산을 끝내고 이후 새로운 cell에서 다른 계산을 진행할 때) reset('x') 명령어로 이전에 x에 assign 된 것을 clear 할 수 있습니다.
이상구(LEE SANGGU)4월 20일 오후 4:56
1.
f(x, y) = x^2 + y 라고 정의하고, f(1, 2) 를 구하는 방식이 더 수학적으로 명확합니다.
이상구(LEE SANGGU)4월 20일 오후 4:58
var('u, v, s, t')
x = u^2 + v^2
y = 2*u*v
z = s^2*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()) # simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
로 s 와 t 를 중간에 쓴 이유는 ... reset('x') 명령어로 이전에 x에 assign 된 것을 clear 하는 수고를 덜려고 한 것이라고 쉽게 이해 하시면 됩니다^^
Final Comment
프로그래밍에 있어 변수를 선언하면 컴퓨터의 메모리를 할당하는 것이다. 변수를 여러개 쓰고, 그 변수에 대한 관계식을 설정하다 보면, 기존의 변수에 대한 정의가 영향을 받는 상황이 생길 수 있는데, 그로 인해 벌어졌던 문제라고 생각이 된다. Sage 개발자 입장에서도 이러한 문제를 인식하고 더욱 더 수학적인 직관으로 작성할 수 있는 알고리즘이 개발된 것 같다.
Final by 신@@ & SGLee Q. PDF 교재 어떻게 복사하나요..?
작성자 : 신@@(2013****84)작성일 : 4월 18일 오후 7:31
조회수 : 13
Final by 신재영 & SGLee Q. PDF 교재 어떻게 복사하나요..?
Q. 제가 그동안 수식편집기애서 쓴거 캡쳐해서 질문 올리곤 했는데, PDF 교재에서 텍스트 복사해오면 아래와 같이 깨집니다..
(1) u 를 단위벡터(크기가 1인 벡터)라 하자. 그러면 점 에서 u
방향으로의 의 방향도함수(directional derivative)는 다음과 같이 정의된다.
안깨지게 어떻게 복사하나요..?
Answer.
pdf 파일에서 ... 수식은 이미지이고, 마우스로 PDF 파일에서 수식을 복사해 올 때 는 ... text 만 copy 하므로 ... 이미지는 안 따라 옵니다.그래서 웹에 이미지까지 올려 준것입니다.인공지능을 위한 기초수학 Basic Mathematics for Artificial Intelligence http://matrix.skku.ac.kr/math4ai/웹에서 복사하여 게시판에 사용하시면 됩니다.
신@@(2013****84)4월 18일 오후 8:05
아아 따로 올려주신 의미가 그 의미였군요...
Final Comment
늘 교재에서 복사해서 갖고오라고 하셨는데, PDF는 복사에 한계가 있어서 잘 이해가 안됐고 늘 수식편집기를 써왔었다. 이제 교재를 활용하여 질높은 질의응답을 많이 할 수 있을 것 같다.
[Refinalized] Final 다변수 함수의 Taylor정리에 대한 질문 <--- [신@@ 군의 질문에 대한 답] by SGLee (파일 첨부) by 신@@ and 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 25일 오전 3:11
조회수 : 0
Final 다변수 함수의 Taylor정리에 대한 질문 <--- [신@@ 군의 질문에 대한 답] by SGLee (파일 첨부)
작성자 : 신@@(2013****84)작성일 : 4월 18일 오후 8:36
조회수 : 18
▪ 다변수 함수
에 대한 Taylor 정리는 다음과 같다. 이는 한 점
근방에서
의 선형근사(linear approximation) 및 이차근사식(quadratic approximation)을 구성하는데 사용된다.
|
정리. |
Taylor 정리 |
다변수 함수
가 연속인 편도함수를 가지면, 적당한
가 존재하여 다음이 성립한다.
![]()
여기서
는 x와 x+d 구간에 대한 평균값의 정리로부터 t가 항상 존재한다는 의미로 이해가 되는데 맞나요??
만일 연속인 2계 편도함수를 가지면, 적당한
가 존재하여 다음이 성립한다.
![]()
여기서는
![]()
인데 이것이 나타내는 수학적 의미는 어떤것인가요?
***
https://mathinsight.org/taylors_theorem_multivariable_introduction
Introduction to Taylor's theorem for multivariable functions
f(x)≈f(a)+f ′(a)(x−a). ...
f(x)≈f(a)+f′(a)(x−a)+ 1/2 f″(a)(x−a)2
...
We could add third-order or even higher-order terms: ... f(x)≈f(a)+Df(a)(x−a)+1/2(x−a)T H f(a) (x−a).
You can read some examples here.
이상구(LEE SANGGU)4월 19일 오후 11:48
https://mathinsight.org/taylors_theorem_multivariable_introduction
보세요.
http://www.math.ucdenver.edu/~esulliva/Calculus3/Taylor.pdf
https://sites.math.washington.edu/~folland/Math425/taylor2.pdf
이변수 함수 테일러 전개 를 ... 인공지능 에 필요한 ... n변수 함수 테일러 전개 로 벡터와 행렬 이용 하여 ... 표현 한것입니다,
이상구(LEE SANGGU)4월 20일 오후 3:10
[신@@ 군의 질문에 대한 답] 위 본문에 첨부로 질문에 대한 자세한 답을 타이핑하여 줍니다^^


Final Comment
식을 유심히 살펴보았는데, x_0 근방의 점의 함수값의 근사값을 구하는 데에 있어서 1계 전미분, 2계 전미분, ... 을 덧붙여감으로써 오차를 줄이고 테일러 정리를 완성시켜나가는 것을 볼 수 있었다. 그 과정에서 Hessian 행렬이 나타나게 되고 2차 근사식의 경우에는 이차형식 항이 나타나기 때문에 이차형식과 관련된 많은 분석도 가능하다.
[Refinalized] [Final OK by TA] 임계점 구하는 코드에 대한 질문 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 3:41
조회수 : 3
[Final OK by TA] 임계점 구하는 코드에 대한 질문 by 신@@, 이상구 교수님
작성자 : 임동선(2017****79)작성일 : 4월 21일 오전 11:18
조회수 : 9
|
정의. |
임계점(critical point) |
을 만족하는 점
를
의 임계점(critical point)이라 한다.
함수
의 임계점을 모두 구하여라.
풀이.
and
이므로
을 만족하는 점은
이다.
https://sagecell.sagemath.org/
1
var('x, y') # https://sagecell.sagemath.org/
2
f(x, y) =3*x^2 +2*y^2 -6*x +8*y
3
gradf =f.gradient() # 함수 f의 그래디언트
4
solve([gradf[0] ==0, gradf[1] ==0], x, y)
여기서 gradf[0], gradf[1]이 의미하는 것이 무엇인가요?
그리고 결과를 분석해본 바로는 solve에 print 기능까지 내장이 되어있는 것 같습니다.
신@@(2013****84)4월 18일 오후 9:02
gradf의 순서쌍의 첫번째 항, 두번째 항을 의미하는 것이 아닐까 하는 생각이 들긴 합니다.. 각각이 0이 될 때의 x와 y의 값을 찾으라는 것이 알고리즘의 의도인 것 같구요~
이상구(LEE SANGGU)4월 19일 오후 7:42
solve명령어가 벡터방정식을 풀수가 없어서 성분별로 방정식을 따로 써줘야 합니다. gradf가 벡터이기 때문에 성분별로 첫번째 (즉 컴퓨터에서 수로는 0 번째) 변수 x 에 대해 gradf[0], 두번째 (즉 컴퓨터에서 수로는 1 번째) y에 대한 gradf[1] 로 분리해줬습니다.
Final Comment
Solve라는 Sage 명령어는 벡터방정식을 풀 수가 없어서 성분별로 따로 써주어야 한다는 것을 인지하는 계기가 되었다.
[Final] 경사하강법의 Wolfe condition과 Armijo condition 질문 <--- 답 보태 주었습니다^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 21일 오후 6:35
조회수 : 23
경사하강법의 Wolfe condition과 Armijo condition이 나타내는 수학적인 의미가 무엇인지 잘 모르겠습니다. 나름대로 분석한 바를 빨간색 글씨로 나타냈는데 쉽지 않네요... 추가적인 설명해주시면 감사하겠습니다.
2.5 Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)
16강 동영상, Gradient Descent Algorithm https://youtu.be/XWDPAdKhq-Q (16:29)
Gradient Descent Algorithm은 어떤 모델에 대한 비용(Cost)를 최소화 시키는 알고리즘으로써, 머신러닝 및 딥러닝 모델에서 사용되는 가중치의 최적해를 구할 때 널리 쓰이는 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하여 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 것이다. [Key Idea 2]
▪ 이제 제약조건이 없는 최적화(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 라 한다. 즉, 다음 조건을 만족하는
를 찾는다.
![]()
여기서
이다 (). 이를 그림으로 표현하면 다음과 같다.

이해가 좀처럼 되지 않아서 위의 그래프를 면밀히 살펴봤는데, 가로축이 α이고 세로축이
로써
와 (감소하는 방향)
가 정해진 상태에서 α값의 변화에 따라 f 값의 (줄어드는) 변화를 살피는 1변수함수의 그래프라는 특징이 있었습니다. <--- 맞는 말입니다.
위 그래프 상에서 접선의 기울기에 대한 정보를 얻으려면
를 α에 대해 미분해야 합니다.
:
의 α에 대한 도함수
위 그림상에서 보면
α=a일 때의 도함수값
를 α=0일 떄의 도함수값이자 f의
방향으로의 방향도함수값에 대한 비율로 나타내고 그 비례상수를
라고 제시한 것입니다. (약간 애매한 표현입니다... 표현을 좀 더 다듬어야 합니다. )
α=b일 떄의 함수값은
인데 이것을
으로부터
의 기울기를 갖는 직선을 그었을 때 α=b에서 교점의 세로축 값이
가 되도록
값을 정하는 것입니다. <-- 이해는 맞게 하였습니다.
따라서 위의 두 부등식을 만족하는
는 폐구간
에서 택하면 된다.
[참고]
가 만족해야 하는 조건은 여러 가지가 있으나, 위의 두 부등식이 주로 쓰인다. 이를 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]로 이동한다.
이상구(LEE SANGGU)4월 21일 오후 6:54
수학적 의미는 ... (나중에 Optimization 과목에서 배울) 학부 수준에서는 ... 조금 어려울 수도 있는데... 질문에 대한 답을 우선 아래에 줍니다.
(1) 첫번째 조건(Armijo condition)은 x_k에서 x_{k+1}로 이동할 때 함수값이 충분히 감소(sufficient decrease)해야 한다는 뜻이고,
(2) 두번째 조건(curvature condition)으로 alpha_k가 너무 작아서 진행이 안되는 것을 방지하고자 하는 것입니다.
(3) 두 조건을 합쳐서 우리는 보통 Wolfe condition 이라고 부릅니다.
신@@(2013****84)4월 21일 오후 6:55
어쩐지 너무 어렵더라고요...몇시간을 붙잡고 고민했습니다...빨간색 글씨의 논리는 타당한가요?
이상구(LEE SANGGU)4월 21일 오후 7:04
(위에 코멘트를 파란색으로 달았습니다)원래는 step-size (learning rate)라는 부분에서 inexact line search 개념을 간단히 소개하기 위해서 설명한 것인데...사실 위의 조건은 alpha_k가 만족되어야 하는 조건일 뿐이지 실제로 alpha_k를 구하는 알고리즘은 아닙니다.실제로는 다양한 방법(bisection method, interpolation method, backtracking line search 등)이 있습니다.
Final Comment
최적화문제는, 직접적으로 극솟값을 구하기 어려운 다변수 함수의 경우, 극솟값이 존재할 가능성이 있는, 기울기가 음인 방향으로 탐색방향을 정해서 나아가는 것이다. 기울기가 가장 가파른 음의 방향은 gradient의 반대방향이므로 이 방향으로 찾으면 극솟값을 효과적으로 찾을 수 있다.
[Final]PBL Sample 등의 강의 마감일 연장 가능할까요.. <-- OK^^ 연장해 주었습니다^^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 21일 오후 6:57
조회수 : 18
목요일이 중간고사 과제 마감인데 미적분을 어느정도 끝내놓아야 풍부한 보고서가 될 것 같아서 미적분 열심히 듣고 있습니다.
이전 주차에 PBL Sample에 대한 여러 예시 강의 올려주셨던데 마감된 것들이 있더라고요.
아직 목요일까지 시간이 조금 있는데 연장해주실 수 있으실까요?
이상구(LEE SANGGU)4월 21일 오후 7:25
OK^^ 연장해 주었습니다^^^
Final Comment
PBL로 한창 바쁜 시기에 추가적으로 올려주신 참고, 심화 동영상 강의가 마감이 되어 연장 요청을 드렸고 연장해주셨다. 출석이 필수가 아닌 영상이더라도 모두 확인하며 지식을 쌓아가야겠다.
[Final] March PBL <--- new [Midterm Exam, 중간고사 - 문제지 ] TakeHome Exam, Due: April 25th 11AM 여기에 제출하세요^^ by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 23일 오전 8:49
조회수 : 11
중간고사 제출 토요일까지로 연장해주셨는데 March PBL은 4월 23일 자정까지로 되어있더라구요~ 맞나요? 교수님? 저번에 낸거 그대로내면 되나요?

<--- new [Midterm Exam, 중간고사 - 문제지 ] TakeHome Exam, Due: April 25th 11AM 여기에 제출하세요^^
이상구(LEE SANGGU)4월 23일 오전 9:10
공지사항 보세요^^ 중간고사 과제함에 제출하시면 됩니다.
이상구(LEE SANGGU)4월 23일 오전 9:16
PBL보고서 제출 은 중간고사 과제함에 <- 홈에 우측상단에 보이는 Mid term에 제출해야 합니다. 착오 없으시길 바래요^^
작성자 : 나우주(2020****91)
작성일 : 4월 23일 오전 9:09
조회수 : 2
강의콘텐츠 3주차에 March PBL에 제출하는게 아니라 홈에 우측상단에 보이는 Mid term에 제출해야 합니다. 착오 없으시길 바래요^^
Final Comment
잘못 개설되어있는 과제함을 보고 잠시 착각을 하였는데, 이제 정확한 정보를 습득하여 PBL 보고서를 작성하고 있다.
[Final] WebEx 출석인증과 핵심 내용 공유 by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오전 10:40
조회수 : 20
WebEx 지난주에 이어 이번 주에도 출석중입니다.
늦게 수업에 참여한 학생들도 많이 있는데, 지금의 포커스는 선형대수학이 아니라 미적분학이기 때문에 선형대수학 학습이 부실해도 미적분학을 채우는 것이 먼저라고 하셨습니다.
PBL보고서는 어렵고 복잡한 것이 아니라 두고두고 볼 수 있는 본인의 학습일기와도 같은 것으로 이해하면 될 것 같습니다.
내가 몇월 몇일 몇시에 어떤 토론을 나누었다는 기록이 남아있으면 뒤에도 두고두고 보며 추억도 하고 잊어가는 학습 내용도 다시 떠올릴 수 있는 나만의 문집으로 보면 좋을 것 같습니다.
기존에 있는 QnA의 내용에 대해 "감사합니다 이해하였습니다."와 같은 내용도 이번 PBL 보고서에서는 수용 가능하다고 하셨는데,
(이후의 5월 PBL 과제에서는 조금 더 엄격하게 기준을 두실 것 같습니다.)
이번 중간 PBL양식에 Self-Evaluation하고 QnA 참여에 대한 양식이 빠져있는데, 3월 것을 갖고와서 3월 내용에 대해 누적하여 4월 내용을 덧붙이면 된다고 이해하였습니다.
이상구(LEE SANGGU)4월 24일 오전 11:12
2019314523 김용훈 님이 모두에게:미팅 시작된 건가요?
자연과학대학장이상구 님이 모두에게:환영합니다^^ 시작했습니다^^
2019314523 김용훈 님이 모두에게:교수님 소리가 들리지 않습니다!
자연과학대학장이상구 님이 모두에게:들어온 학생은 인사하세요^^
2019314523 김용훈 님이 모두에게:안녕하십니까! 김용훈입니다.
2013313484 신@@ 님이 모두에게:저 방금 일어나서 비디오 켜기가 좀 그렇습니다....ㅎㅎ...
2019314523 김용훈 님이 모두에게:들립니다!
자연과학대학장이상구 님이 모두에게:오늘 오전에는 아이캠에서 여러분 밀린 QnA Final 을 모두 채우세요 ^^ Final 시키고
2013313484 신@@ 님이 모두에게:교수님 녹화안되고 있는 것 같습니다
2013313484 신@@ 님이 모두에게:574-862-067
2013313484 신@@ 님이 모두에게:입니다
2019314523 김용훈 님이 모두에게:문제를 바꾼다는 것이 단순 숫자만 바꿔도 되는 건지 궁금합니다.
2019314523 김용훈 님이 모두에게:아직 1학년이라서 많이 생소합니다 ;;
2019314523 김용훈 님이 모두에게:시작이 늦어서 그런데 만약 행렬부분만 학습하고 보고서 제출해도 되는 건지 알고싶습니다.
2019314523 김용훈 님이 모두에게:Finalize 된 QnA를 모으면 되는 건가요?!
2019314523 김용훈 님이 모두에게:제가 한 질문에 대한 Finalize 말씀인가요?!
2019314523 김용훈 님이 모두에게:알겠습니다!
2019314523 김용훈 님이 모두에게:이런 엉뚱한(?)질문도 Finalize 해도 되겠습니까?
자연과학대학장이상구 님이 모두에게:질문에 답이 잇는 것은 이해되엇으면 Finalize 하시고 포함하여 제출하시면 됩니다.
2019312019 황인성 님이 모두에게:자기 질문을 자기가 Finalize해도 되나요?
자연과학대학장이상구 님이 모두에게:물론입니다
자연과학대학장이상구 님이 모두에게:사실은 질문 한 사람이 Finalize 하는 것을 기말에는 원칙으로 합시다.
2019312019 황인성 님이 모두에게:죄송합니다만 잠시만 화장실 좀 갔다와도 되나요
2019314523 김용훈 님이 모두에게:어제 이 부분에 대한 이해를 하려고 인터넷검색했더니 선형대수학 과정이라고하여서 ... 그냥 실습만 하면 된다는 말씀입니까?
2019314523 김용훈 님이 모두에게:네 이해됐습니다!
2013313484 신@@ 님이 모두에게:선형대수학 앞부분쪽이라서 차근차근 이해하면 어렵지 않아요~
2019314523 김용훈 님이 모두에게:감사합니다!
2019314523 김용훈 님이 모두에게:학습은 굳이 강의가 아니라 교재만 보고 학습해도 될까요?
2019314523 김용훈 님이 모두에게:바로 제출 전날이라 ..아직 역행렬 부분을..
2019314523 김용훈 님이 모두에게:넵!
2019314523 김용훈 님이 모두에게:네!제가 조건을 하나 빠트렸었습니다!
2019314523 김용훈 님이 모두에게:청강생은 어떤 분들을 가리키는 건가요?
2019314523 김용훈 님이 모두에게:글을 복사해서 붙여넣으면서 모으면 되는 건지요?
2019314523 김용훈 님이 모두에게:PBL보고서를 훑어 봤는데 어디까지 채워야하는지는 찬찬히 보면 알 수 있을까요?
2019314523 김용훈 님이 모두에게:네넵!
2019314523 김용훈 님이 모두에게:3-4월 글자색 구별하면 됩니까?
2019314523 김용훈 님이 모두에게:넵!
2019312019 황인성 님에게(비공개):자신이 쓴 글 만 하나의 새깔로 해 주세요^^
2019314523 김용훈 님이 모두에게:뒤늦게 기초적인 질문만 드려서 죄송합니다.
2013313484 신@@ 님이 모두에게:저같은 경우는 이번에 좀 정리해보니까 학습 일지처럼 파일이 완성되어가더라구요
자연과학대학장이상구 님이 모두에게:1학년 학생은 앞으로 발전 가능성이 더 큽니다^^ 김군이 A 를 받고록 내가 도와 줄께 열심히 질문하면서 배워 보세요
2019314523 김용훈 님이 모두에게:신@@ 학우님이 참여 인증글 올리셨는데 인증글 필수입니까?
자연과학대학장이상구 님이 모두에게:지금은 필수는 아니지만 권장입니다.
2019314523 김용훈 님이 모두에게:넵!
2019312019 황인성 님이 모두에게:네
2019312019 황인성 님이 모두에게:이미 갔다오고 듣고 있었습니다
2019314523 김용훈 님이 모두에게:네!
2019312019 황인성 님이 모두에게:다른 데에서는 저렇게 해야 해서 그냥 저렇게 둔 겁니다
2019314523 김용훈 님이 모두에게:학번으로 그냥해도 되겠습니까?
2019314523 김용훈 님이 모두에게:큐엔에이 다 모으고 그 외엔 본인이 아는 개념 설명하는 식으로 하는 거 맞습니까?
2019314523 김용훈 님이 모두에게:주차별로 큐엔에이 참여횟수는 어떻게 알 수 있습니까?
2013313484 신@@ 님이 모두에게:큐엔에이 토의 진행과정에 본인 이름이 포함만 되어있으면 돼요~
2019314523 김용훈 님이 모두에게:알겠습니다!
2013313484 신@@ 님이 모두에게:교수님 매주 몇회 참여했다 올릴 때
2013313484 신@@ 님이 모두에게:답글 개수만큼 올리면 되나요?
2013313484 신@@ 님이 모두에게:네넵
2019314523 김용훈 님이 모두에게:감사합니다!
2013313484 신@@ 님이 모두에게:수고하셨습니다!
2019312019 황인성 님이 모두에게:감사합니다!
김도현_2019311004 님이 모두에게:감사합니다!수고하셨습니다^^
Final Comment
그동안 PBL 보고서를 항상 엉성하게 만들었었는데 PBL 요령에 대해 정리하면서 이번에야말로 교수님께서 의도하셨던 PBL 보고서를 낼 수가 있을 것 같은 느낌이 들었다.
[Final] Comment 채우고 있는 중에 질문입니다. by 신@@, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 2:33
조회수 : 7
결론 Comment를 빠뜨린게 많아서 채우고 있는 중입니다...ㅎㅎ
그런데 실수의 집합 R^n을 수식편집기로 표기할 때 단순한 R이 아닌 것 같은데 이 R은 어떻게 입력해야 하나요?
이상구(LEE SANGGU)4월 24일 오후 2:37
VecR 또는 rmbold R 시고 또는 내가 준 시험 파일 에서 더블클릭하여 수식에 들어가서 보시면 됩니다.
Final Comment
수학을 20여년간 배워오면서 우리가 접한 Notation에 잘못된 것이 제법 있는데, 올바른 Notation 작성법에 대해 배울 수 있는 좋은 기회여서 매우 기쁘다.
[Final] TakeHome Exam 2 9번 변형 실습 by 신@@
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 5:40
조회수 : 3

# (a) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
var('x, y, z')
a=implicit_plot3d(z == -2*x^2 + 7*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5, color='green')
b=implicit_plot3d(z == 2*x^2 + y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity=0.5, color='red')
show(a+b)

Final Comment
식을 약간 변형하고 두 그래프를 한 좌표공간 안에 그리는 실습을 하였다. 공간좌표의 특성상 그리기가 어렵고 상상하기 어려울 때는 이렇게 컴퓨터의 도움을 받아서 언제든 활용할 수 있음을 깨달았다.
[Final] TakeHome Exam 2 10번 변형 실습 by 신@@
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 6:02
조회수 : 7
var('x,y,z')
a = vector([6, -3, 4]) # https://sagecell.sagemath.org/
b = vector([2, 0, -3])
c = b.cross_product(a) # find the cross product of a and b
pl=implicit_plot3d(c.dot_product(vector([x,y,z]))==0, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity=0.5) # c에 수직이고 원점을 지나는 평면의 방정식
a_pic=line([(0,0,0),a],color='red', thickness=2) #a벡터
b_pic=line([(0,0,0),b],color='blue',thickness=2) #b벡터
c_pic=line([(0,0,0),c],color='green',thickness=2) #c벡터
show(a_pic+b_pic+c_pic+pl) #그려진 평면이 a벡터와 b벡터에 평행하고 c벡터에 수직임을 확인

Final Comment
그동안 접한 명령어들을 다양한 방법으로 복합적으로 결합하여 의미있는 정보를 만들어 내었다. 한 문제이지만, 여러 문제를 푼 효과를 얻었기에 가장 보람된 실습이었다.
[Final] TakeHome Exam 2 13번 변형 실습 by 신@@, 김승한, 이상구 교수님
작성자 : 신@@(2013****84)작성일 : 4월 24일 오후 6:18
조회수 : 17
var('x, y') # https://sagecell.sagemath.org/
f = sin(x - y) + exp(-x*y)
fxn = diff(f, x, 100) #f를 x에 대해 100회 편미분 한 것을 fxn에 저장
fyn = diff(f, y, 100) #f를 y에 대해 100회 편미분 한 것을 fxn에 저장
print("∂^100f/∂x^100 =", fxn)
print("∂^100f/∂y^100 =", fyn)
결과값:
∂^100f/∂x^100 = y^100*e^(-x*y) + sin(x - y)
∂^100f/∂y^100 = x^100*e^(-x*y) + sin(x - y)
신@@(2013****84)4월 24일 오후 6:25
저는 처음에 n번 편미분한 결과 찾으려했는데 해보니까 0이라고 잘못나오더라고요.. n계 편도함수는 어떻게하면 코드를 짤 수 있을까요?
이상구(LEE SANGGU)4월 24일 오후 7:53
diff ( diff (diff(f, y), y) ,y ) 하면 y 에 대한 3계 편도함수 줍니다.
y 에 대한 100 계 편도함수는 이것을 응용해 보세요^^
신@@(2013****84)4월 24일 오후 8:12
아뇨 미지수 n에 대해 주어지는 결과가 궁금해서요..ㅎㅎ
김승한(2012****19)4월 24일 오후 8:39
var('x, y') # https://sagecell.sagemath.org/
f = sin(x - y) + exp(-x*y)
import random
list= []
N=random.randint(0,1000)
print("N =",N)
fxn = diff(f, x, N) #f를 x에 대해 100회 편미분 한 것을 fxn에 저장
fyn = diff(f, y, N) #f를 y에 대해 100회 편미분 한 것을 fxn에 저장
print("∂^N*f/∂x^N =", fxn)
print("∂^N*f/∂y^N =", fyn)
김승한(2012****19)4월 24일 오후 8:40
N = 701
∂^N*f/∂x^N = -y^701*e^(-x*y) + cos(x - y)
∂^N*f/∂y^N = -x^701*e^(-x*y) - cos(x - y)
김승한(2012****19)4월 24일 오후 9:07
n을 특정하지 않고 미지수로 두었을때는 저도 잘모르겠네요
신@@(2013****84)4월 24일 오후 10:09
음 근데 삼각함수 자체가 미분하면 사인 코사인 교대로 나오기 때문에 일반항을 정하기 조금 무리인 측면도 있네요~
Final Comment
TakeHome Exam 2의 13번을 변형함으로써 어떠한 n계도함수라도 시간들여 손으로 풀지 않고 컴퓨터로 바로 풀 수 있는 방법을 깨달았다

□ 4월 설명(소감)
이번 미분적분학을 배우면서 사실 모르는 개념은 거의 후반부에나 있었지만, 다시 배우는 개념들도 헷갈리기는 매한가지였다.
QnA 덕분에 애매했던 개념들은 확실하게 할 수 있었고, 몰랐던 개념들은 제대로 이해할 수 있었다.
8주차부터 12주차 동안 다음 15개의 글을 작성 및 참여했습니다. 날짜는 제가 작성 혹은 참여했을 때의 날짜를 기준으로 작성하였습니다.
* 10주차에서 배운 개념들로 3문제 풀이 (9주차 5월 8일)
* TakeHomeExam3 Part2 5문제 변형해서 풀어보았습니다. (11주차 5월 20일)
* 중심극한정리(Central Limit Theorem) 에 대하여 토론하세요^^ by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글참여)
* 베이즈 정리(Bayes’ theorem) 에 대해 토론 하시오. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* 대수의 법칙(Law of large number)에 대해 토론하세요. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* [매경시평]... 혁신의 역사, 누군가가 시킨 것을 단순 이행하는 업무란 ... by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Deepo 란? Deepo is a Docker image with a full reproducible deep learning research environment. by 이상구(LEE SANGGU) (11주차 5월 22일 - 댓글 참여)
* Chapter 3. Part 2. 확률변수 문제 풀이 by 조윤근(2016****14)(12주차 5월 26일 - 댓글 참여)
* for t in range (0,2)? by 신재열(2013****84) (12주차 5월 26일 - 댓글 참여)
* TakeHomeExam3 Part6 3문제 변형해서 풀어보았습니다. (12주차 5월 28일)
* A 받으려는 학생과 F 면하려는 학생들은 이번 주 정말 열심히 Makeup 하셔야 합니다^^ 어제 STRONG KOREA 2020 동영상 (4시간) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 최소제곱문제(least squares problem) : 최소제곱해, 선형회귀, 최소제곱직선 by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 경사하강법(Gradient Descent Algorithm) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] 주성분 분석(Principal Component Analysis) by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)
* [New] Math4AI 인공지능 (고등학교) 수학 - Tools by 이상구(LEE SANGGU) (12주차 5월 29일 - 댓글 참여)



이상구(LEE SANGGU)5월 9일 오후 10:33
Very good
이상구(LEE SANGGU)5월 11일 오후 12:06
지금부터 14주차까지 (1) 질문 제일 많이 하는 학생, (2) 답변 제일 많이 하는 학생 중 일부는 (질문과 답변의 질을 일부 고려하여) 모두 A 주려고 합니다. Try^^

민재필(2015****15)5월 22일 오전 11:27
law of large number 와 비슷한 개념입니다. 어떤 무작위 변수가 있을 떄 그 변수의 수가 많아지면 정규분포를 따릅니다. 이는 정규분포를 따르지 않는 변수의 null hypothesis 를 test 할때 유용하게 쓸 수 있습니다. sample size 가 크면 t table 의 값이 없을 때 대신 z test 를 사용할 수 있습니다. 계산도 간편해지는 측면이 있습니다. 보통 n=30이면 central limit theorem을 쓸 수 있다고 알고 있습니다.
황인성(2019****19)5월 22일 오후 5:53
실제로 이 중심극한정리를 사용하는 예시들은 정규분포를 사용하는 모든 통계들이지만, 그중에서도 대표적인 것은 방송사에서 하는 여론조사라고 생각합니다. 모집단의 분포가 정규분포에 가까울수록 방송사들의 여론조사에 대한 분석의 신뢰도가 상승할 것이기에 중심극한정리가 중요하게 여겨질 것입니다.
조완제(2016****76)5월 25일 오후 11:35
중심극한정리는 여러가지 장점이 있습니다. 우선 샘플수가 적어도 모집단의 평균을 거의 정확하게 알 수 있습니다. 또 마찬가지로 분산도 거의 정확하게 알 수 있습니다. 그리고 모든 데이터를 정규분포로 만들 수 있습니다. 그래서 정규분포를 가정하는 통계적 기법을 적용시킬 수 있습니다.



김승한(2012****19)5월 17일 오후 10:22
ai(i=1,2,,,n)가 s의 분할로 이루어진 집합이라는 점이 ai(i=1,2,,,n) 끼리 서로 배반사건의 의미로 받아집니다. 그것을 이용해 조건부확률의 공식을 사용하여 확장한 정리가 베이즈 정리라 생각듭니다.
예제와 같이 확률의 합이 100%가 나올때만 사용이 가능한 정리인 것으로 보입니다.
이상구(LEE SANGGU)5월 18일 오후 1:15
그래서 제일 먼저 수학적으로 ... partition (분할) 이 존재하는 집합인지 아닌지 확인하는 것 ... 이 중요하답니다.
민재필(2015****15)5월 22일 오전 11:36
인공지능의 설계에 있어서 베이즈 정리는 유용하게 사용됩니다. 인공지능에서 휴리스틱을 사용할 때 그 전에 학습했던 것을 기반으로 decision tree를 생성하는데 이는 베이즈 정리와 매우 유사하다고 생각됩니다.
황인성(2019****19)5월 22일 오후 5:59
인공지능이 베이즈 정리를 사용하는 것은 사전 확률 체계의 업데이트를 위한 것입니다. 새로운 정보를 계속해서 학습하면서, 여려 경우의 확률들을 조합해 판단을 위한 전체적인 기준을 확립하는 데 이용되는 원리라고 생각합니다.
조완제(2016****76)5월 25일 오후 11:24
베이즈정리는 머신러닝에 있어서 매우 중요합니다. 특히 나이브베이즈라는 머신러닝 기법은 베이즈정리를 중점적으로 이용한 기법입니다. 나이브베이즈를 이용해 스팸메일을 구별하는 용도로 사용합니다.
신재열(2013****84)5월 26일 오후 5:07
"B에 대한 확률 분의 A_i와 B의 교집합의 확률이 B가 일어났을 때 A가 일어날 조건부 확률이다." 이게 베이즈 정리라고 보면 되는거죠?

김승한(2012****19)5월 17일 오후 10:29
당연하다고 생각드는 부분이지만 반대로 생각해 보았을 땐 n이 한없이 커질때 통계적 확률 P(A)가 수학적 확률 a에 가까워 지지 않는다면 수학적 확률이 의미를 잃는다고 생각합니다.
이상구(LEE SANGGU)5월 18일 오후 1:14
그래서 정확한 수학적 확률을 아는 것이 제일 중요하답니다^^
민재필(2015****15)5월 18일 오후 6:01
어떤 사건에 대해서 정확한 확률을 알고 있다면 그 사건에 대해 입장을 취할 때 여러번 반복하면 특정 값에 도달한다는 개념을 알고 있다면 학문적 분야 뿐만 아니라 일상 생활에서도 많은 도움이 되는 것 같습니다. 특히 카지노가 대수의 법칙의 예라고 할 수 있습니다. 카지노 입장에서는 고객의 play가 오랜기간 지속되면 무조건 카지노가 돈을 따게 되어있는데,
이는 카지노에서 하는 게임이 승률에서 약간이나마 카지노에게 유리하게 설정되어 있기 때문입니다.
예를 들어 룰렛이라는 게임이 카지노에게 게임 당 2% 더 유리하게 되어있다 한다면, 이 게임을 사람들이 많이 할 수록 카지노는 ... 궁극적으로는 total game money 판돈의 2% 정도의 돈을 벌게 되어있습니다. 또한 도박을 하는 사람들은 이 게임을 많이 하면 할 수록 ... 적어도 total game money 판돈의 2% 정도는 돈을 잃게 되어있습니다. (이것이 원래 가지고 간 돈의 2% 가 아니라. total game money 판돈의 2% 이라 매우 큰 액수 일 수 있습니다.)
조완제(2016****76)5월 20일 오후 9:34
찾아보니까 보험사도 대수의 법칙을 적용해서 돈을 번다고 되어있습니다. 간단하게 사망에 관해서만 본다면 사람의 성별, 나이대별 사망율을 계산해서 보험금의 총액을 계산할 수 있고 보험가입자로 부터 받게되는 보험료의 총액과 비교해 그것을 이용해서 돈을 벌어들입니다.
황인성(2019****19)5월 22일 오후 5:35
하지만 대수의 법칙을 실제 실생활에 이용하는 것은 조심해야 한다고 생각합니다. 앞서 예시로 나온 보험사와 카지노 같은 경우에는 실제로 무수히 많은 고객들이 오기에 그만큼 시행횟수가 기하급수적으로 증가해 대수의 법칙을 이용할 수 있겠지만, 가위바위보같이 그리 많은 시행 횟수를 거칠 일이 없는 일의 경우에는 함부로 대수의 법칙을 적용할 수 없다고 생각합니다.
'초심자의 행운'이라는 말이 있듯이, 시행 횟수가 크지 않을 때는 실제 확률과 통계적 확률이 크게 다를 수 있다는 것을 명심해야 할 것입니다.
신재열(2013****84)5월 26일 오후 5:10
흥미로운 점은, 각각 n개의 시행이 독립이라면, n이 무수히 커졌을 때 전체 시행의 결과가 수학적 확률 분포에 근사하지만 다음 시행을 전혀 예측해줄 수 없다는 점이라고 봅니다.
이상구(LEE SANGGU)5월 29일 오후 3:15
http://www.polymath.co.kr/contents/view/18134
황인성(2019****19)5월 29일 오후 3:36
인공지능 개발에 필요한 지식들을 종합적으로 모아 놓아 일반 사람들도 볼 수 있게 한 것들도 있네요.
전공자가 아니여도 학습하는데 유용하게 사용할 수 있을 것 같습니다!
□ 5월 설명(소감)
이번 5월 동안은 댓글로 참여한 횟수가 부쩍 증가했습니다. 긍정적으로 보면 QnA에 더욱 많이 참여하게 되었으니 좋지만, 실제로는 제가 직접 쓴 글이 조금 줄었기 때문에 어찌 보면 스스로 질문하는 습관이 줄어들게 된 것이라고 생각합니다. 다음 달이 마지막 달이기 때문에 지금처럼 QnA의 다른 사람들의 글에 댓글로 제 의견을 보여주는 것을 유지하는 동시에, 궁금한 점에 대해 더욱 적극적으로 질문할 수 있도록 될 것입니다.
[Final]표본점 개념 질문! 표본 공간 (sample space)에 하나의 사건(event)만 존재한다면, 이 사건은 '근원사건 (fundamental event)' 이고, 표본점(sample)은 하나 뿐이라고 알면 될까요?
작성자:김용훈(2019****23)작성일:6월 6일 오후 10:47
조회수:19
0. 표본공간(영어:Sample Space)은 실험의 결과 하나하나를 모두 모은 것을 뜻하며S로 표기된다.[1]어떤 시행에서 일어날 수 있는 모든 결과들의 모임을 전사상이라고 하는데이를 통계학에서는 표본 공간이라 칭한다.표본 공간은
로, 조사대상이 된 집단의 총합을 모집단 Ω로 표현한다.[2] 실험또는 임의시도의 모든 가능한 산출들의 모음이다. 표본공간은확률의 기본적인 접근에서 나타난다.https://ko.wikipedia.org/wiki/%ED%91%9C%EB%B3%B8_%EA%B3%B5%EA%B0%84
예를 들어, 동전을 던지는 실험에서 표본 공간은 {앞면, 뒷면}이다.
6면 주사위를 던지는 실험에서 표본 공간은 {1, 2, 3, 4, 5, 6}이다. 표본공간에서 임의의 부분 집합을사건이라고 부르며,
단 하나의 요소(element)를 갖는 표본 공간의 부분 집합을근원사건 (fundamental event)이라고 부른다.
1. 확률통계에서“사건(event)”이란표본공간의부분집합으로어떤조건을만족하는특정한표본점(sample)들의집합입니다.
2.표본공간(sample space)의 한 원소만으로 이루어진 사건을근원사건 (fundamental event)이다.
3.표본(Sample) 또는 표본점(Sample Point) 은ㅇ표본공간상의 개별 원소이다.ㅇ 일반적으로,조사대상이 되는 전체모집단에 대하여,샘플링(Sampling)을 통해 얻어지는확률 실험결과 값들 (즉,모집단의부분집합) 을표본점(Sample Point) 이라 한다.
Q 질문.
이 때 하나의 사건이표본공간(sample space)을 이루므로 '근원사건 (fundamental event)은 하나의표본점(sample)을 가진다' 라고 알면 될까요?
질문을 다시 정리하면 :
A.표본공간(sample space)의 한 원소만으로 이루어진 사건을근원사건 (fundamental event)이라한다.
B.예를 들어한 번 시행마다 주사위 하나와 동전 하나를 던진다고 생각해보자.이때 각각의 시행은 ‘주사위는 x, 동전은 y(앞이면 1, 뒷면이면 0)’로 표현할 수 있을 것이다. 근데이 시행은 또한 ‘주사위는 x이다’와 ‘동전은 y이다’의 두 사건의 조합으로 쪼개서 볼 수 있다.
C. .이때 각각의 ‘주사위는 x이다’와 ‘동전은 y이다’가 이 시행의근원사건 (fundamental event)이 된다.
https://www.scienceall.com/근원사건-fundamental-event/
Q 다시 정리한 질문: 따라서표본공간(sample space)에하나의 사건(event)만 존재한다면,이 사건은 '근원사건 (fundamental event)' 이고,표본점(sample)은하나 뿐이라고알면 될까요?
****
참고:https://drhongdatanote.tistory.com/45
표본공간, 사건 그리고확률의 정의에대해서이야기해보겠습니다.초반부터말씀드리겠습니다.
우리는어떠한대상의특성을파악하기위해서관찰하거나또는측정을합니다.이를통해서우리는관찰값또는측정값을얻을수있습니다.이를표본(sample)이라고합니다. 이건 이전 포스팅에서 다루었던 것이라 간단하게 넘어가겠습니다.
이제"표본공간(sample space)"이란개념에대해서이야기해봅시다.표본공간은“어떤특정실험또는무작위실험을했을때,측정가능한모든결과들의집합(the set of all possible outcomes or results of that experiment)”으로정의합니다.그렇다면표본공간(sample space)은표본과무엇이다를까요?표본공간은정의그대로“측정가능한모든결과의집합”을말합니다.따라서표본공간을이루는개개의관찰결과를우리는표본점(sample)이라고합니다.즉,우리가수집한표본은표본공간의부분집합이라고할수있습니다.
예들들어봅시다.만약동전을반복해서두번던지는실험을한다고하면표본공간(S)은아래그림과같습니다.

만약주사위를가지고동일한실험을한다고하면표본공간(S)은아래그림과같습니다.

자,이제그러면“사건(event)”이라는개념으로넘어가봅시다.확률통계에서“사건”이란표본공간의부분집합으로어떤조건을만족하는특정한표본점들의집합을말합니다.설명이조금딱딱하지요?조금더쉬운말로바꿔봅시다.예컨대주사위를두번던져서나온각각의수를더했을때그값이“2”가나올때를기다린다고(조건)한다면,여기서“사건”이란바로첫번째도"1"이 그리고두번째도"1"이나왔을때가 바로 사건이 발생한 때입니다.굉장한 사건이지요.
자이제이러한개념을가지고"확률(probability)"을정의해봅시다.확률이란“동일한조건하에서동일한실험을무수히많이반복하여실시할때,어떤특정한사건이발생하는비율”을말합니다.수식으로설명하면다음과같습니다.

지금까지이야기한표본,표본공간,사건의개념을가지고확률을설명하면아래와같습니다.

즉,확률이란[어떤실험을했을때,나올수있는모든경우의수(표본공간)중어떤특정한조건을만족하는사건이발생하는비율]을말합니다. 확률이란 간단한 개념 이다.
이전
다음
6개의 댓글
이상구(LEE SANGGU)6월 7일 오전 6:43
[요약] 주사위의 1의 눈, 2의 눈, …, 6의 눈을 각기 1, 2, …, 6이 라 표시하면 주사위를 던질 때 결과적으로 관측되는 것은 1, 2, …, 6 중의 하나이다. 이때 1, 2, … , 6을 각기 주사위를 던질 때의 근원사상이라 한다.주사위의 1의 눈, 2의 눈, …, 6의 눈을 각기 1, 2, …, 6이 라 표시하면 주사위를 던질 때 결과적으로 관측되는 것은 1, 2, …, 6 중의 하나이다. 이때 1, 2, … , 6을 각기 주사위를 던질 때의 근원사상이라 한다.일반적으로 어떤 시행(試行)의 결과로 관측되는 전체가 {e1, e2, …} 일 때, e1, e2, …을 각기 근원사상이라 한다. 근원사상을 표본점이라고도 한다.* 실험이나 관측을 했을 때 출현가능한 모든 결과의 집합을 표본공간(sample space)이라 하며, 표본공간의 개개의 원소를 표본점(sample point)이라 한다. 일반적으로 표본공간은 영어의 대문자 S로 나타낸다.예1) 한 개의 동전을 한번 던져서 나타나는 면을 관찰할 때 앞면을 H, 그리고 뒷면을 T로 표시하면, 표본공간 S 는 { H, T} 이 된다.그리고 표본공간의 하나 하나의 원소 H, T가 표본점이 된다.답: 표본 공간 (sample space)의 원소를 <표본점(sample point)> 또는 <근원사건(elementary event)>라고 합니다.표본점 (sample point)은 시행의 한 결과이고 근원사건 (elementary event)은 오직 하나의 표본점으로 이루어지는 사건 입니다.출처: https://ksj14.tistory.com/entry/확률-및-통계학 [:: ADVANCE ::]따라서 답은"표본 공간 (sample space)에 하나의 사건(event)만 존재한다면, 하나 뿐인 사건이 '근원사건 (fundamental event)' 이고, 이 사건이 표본점(sample point)이며, 이 둘은 같은 것이다 " 라고 말 할 수 있을 듯합니다.https://m.blog.naver.com/mykepzzang/221855518561
이상구(LEE SANGGU)6월 7일 오전 7:02
https://m.blog.naver.com/mykepzzang/221855518561 를 읽어보시면 더 쉽게 이해 할 수 있을 듯합니다.표본 공간 (sample space)의 원소를 <표본점(sample point)> 또는 <근원사건(elementary event)>라고 한다는 것을 기억하시면 될 듯합니다.
이상구(LEE SANGGU)6월 7일 오전 7:03
참고로 사건과 근원사건을 혼동하는 경우가 매우 많습니다.예를 들면 동전을 하나 던지는 시행을 생각해 보자.이때 일어날 수 있는 사건은 모두 몇 가지인가라는 질문에 앞, 뒤를 생각해서 2가지로 답하는 학생이 많다.하지만 이것은 근원사건을 사건으로 잘못 알고 있는 것이다.앞면이 나오는 경우를 H , 뒷면이 나오는 경우를 T 라고 표현한다면표본공간은 S = { H , T } 이고표본공간 S = { H , T } 의 부분집합인 { ϕ , H , T , {H , T} } 가 모두 사건이므로 4가지가 올바른 답이다. 즉, 동전을 하나 던지는 시행에서 일어날 수 있는 사건은 모두 4 가지 { ϕ , H , T , {H , T} } 입니다.출처: https://suhak.tistory.com/938 [수학 이야기]
이상구(LEE SANGGU)6월 7일 오전 7:04
* <근원사건(elementary event)> 의 애를 줍니다ㅓ.* 근원사상 (elementary event) , 복합사상1) 근원사상 (elementary event, 단순사상) : 한 개의 원소로 이루어진 사상2) 복합사상 (composite event) : 근원사상 (elementary event, 단순사상)의 집합예를 들어주사위를 던졌을 때 나올수 있는 눈의 표본공간 <홀수의 눈이 나온다> 는 사상은 <1의 눈이 나온다> <3 의 눈이 나온다> < 5의 눈이 나온다> 의세가지 사상으로 세분할수 있다.이때 복합사상은 <홀수의 눈이 나온다>근원사상 (elementary event) 은 <1의 눈이 나온다>< 3의 눈이 나온다>< 5의 눈이 나온다>이다.https://m.blog.naver.com/PostView.nhn?blogId=lucifer246&logNo=187778225&proxyReferer=https:%2F%2Fwww.google.com%2F
김용훈(2019****23)6월 8일 오전 11:55
상세한 설명과 자료 감사드립니다 교수님!
김승한(2012****19)6월 14일 오후 9:07
동전 예시를 통해서 사건과 근원사건의 차이를 확실하게 알았습니다 감사합니다
대수의 법칙(Law of large number)에 대해 토론하세요.
작성자 : 이상구(LEE SANGGU)작성일 : 5월 16일 오후 12:15
조회수 : 25
통계적 확률과 대수의 법칙(Law of large number)
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률 P(A) 는 일정한 값 즉 (수학적 확률) a 에 가까워진다. 즉 다음이 성립한다.
이전
다음
7개의 댓글
김승한(2012****19)5월 17일 오후 10:29
당연하다고 생각드는 부분이지만 반대로 생각해 보았을 땐 n이 한없이 커질때 통계적 확률 P(A)가 수학적 확률 a에 가까워 지지 않는다면 수학적 확률이 의미를 잃는다고 생각합니다.
이상구(LEE SANGGU)5월 18일 오후 1:14
그래서 정확한 수학적 확률을 아는 것이 제일 중요하답니다^^
민재필(2015****15)5월 18일 오후 6:01
어떤 사건에 대해서 정확한 확률을 알고 있다면 그 사건에 대해 입장을 취할 때 여러번 반복하면 특정 값에 도달한다는 개념을 알고 있다면 학문적 분야 뿐만 아니라 일상 생활에서도 많은 도움이 되는 것 같습니다. 특히 카지노가 대수의 법칙의 예라고 할 수 있습니다. 카지노 입장에서는 고객의 play가 오랜기간 지속되면 무조건 카지노가 돈을 따게 되어있는데,이는 카지노에서 하는 게임이 승률에서 약간이나마 카지노에게 유리하게 설정되어 있기 때문입니다.예를 들어 룰렛이라는 게임이 카지노에게 게임 당 2% 더 유리하게 되어있다 한다면, 이 게임을 사람들이 많이 할 수록 카지노는 ... 궁극적으로는 total game money 판돈의 2% 정도의 돈을 벌게 되어있습니다. 또한 도박을 하는 사람들은 이 게임을 많이 하면 할 수록 ... 적어도 total game money 판돈의 2% 정도는 돈을 잃게 되어있습니다. (이것이 원래 가지고 간 돈의 2% 가 아니라. total game money 판돈의 2% 이라 매우 큰 액수 일 수 있습니다.)
조완제(2016****76)5월 20일 오후 9:34
찾아보니까 보험사도 대수의 법칙을 적용해서 돈을 번다고 되어있습니다. 간단하게 사망에 관해서만 본다면 사람의 성별, 나이대별 사망율을 계산해서 보험금의 총액을 계산할 수 있고 보험가입자로 부터 받게되는 보험료의 총액과 비교해 그것을 이용해서 돈을 벌어들입니다.
황인성(2019****19)5월 22일 오후 5:35
하지만 대수의 법칙을 실제 실생활에 이용하는 것은 조심해야 한다고 생각합니다. 앞서 예시로 나온 보험사와 카지노 같은 경우에는 실제로 무수히 많은 고객들이 오기에 그만큼 시행횟수가 기하급수적으로 증가해 대수의 법칙을 이용할 수 있겠지만, 가위바위보같이 그리 많은 시행 횟수를 거칠 일이 없는 일의 경우에는 함부로 대수의 법칙을 적용할 수 없다고 생각합니다.'초심자의 행운'이라는 말이 있듯이, 시행 횟수가 크지 않을 때는 실제 확률과 통계적 확률이 크게 다를 수 있다는 것을 명심해야 할 것입니다.
신재열(2013****84)5월 26일 오후 5:10
흥미로운 점은, 각각 n개의 시행이 독립이라면, n이 무수히 커졌을 때 전체 시행의 결과가 수학적 확률 분포에 근사하지만 다음 시행을 전혀 예측해줄 수 없다는 점이라고 봅니다.
한병욱(2012****42)5월 30일 오전 4:09
강사로 일하고 있는 입장에서 동전을 던지거나 주사위를 던졌을 때 앞면이 나온다거나 1이라는 숫자가 나올 확률은 정확한 값으로 정해져 있습니다. 하지만 대수의 법칙이라는 걸 배우지 않고 그냥 그렇다더라 라고 아이들은 이해하고 넘어가곤 합니다. 하지만 고등학교 과정에서 대수의 법칙이라는 것을 간단하게 설명하고 넘어가면 이해가 더 잘 될 거라는 생각이 들어 대입하려 합니다. 감사합니다.
[Finalized by 신재열] for t in range (0,2)? by 이상구 교수님, 황인성
작성자 : 신재열(2013****84)작성일 : 5월 25일 오후 10:32
조회수 : 25
확률변수
를 주사위 한 개를 던져서 나온 결과라 하자. 1이 나오면
이고 그 외의 숫자가 나오면
이다.
의 확률분포
를 구하여라.
풀이.
는 베르누이 분포
를 따른다. 따라서
의 확률분포는 다음과 같다.
□
[Sage code] https://sagecell.sagemath.org/ http://sage.skku.edu/
1
# Language를 Sage로 변경후 실행하세요.
2
p = [(1/6)^t*(5/6)^(1-t) for t in range(0, 2)]
3
print(p)
Evaluate
위에서 t의 값이 0 또는 1일텐데 range가 왜 (0,2)라고 쓰는것인지요??
Final Comment
Sage 코드에서도 그랬듯 프로그래밍 할 때에 주의할 점은 1부터가 아니라 0부터 시작한다는 것이며, 무조건 시작점 끝점이 아니라 시작점, 개수를 의미할 수도 있음에 유의하여야 한다는 것을 깨달았다.
이전
다음
4개의 댓글
이상구(LEE SANGGU)5월 26일 오전 00:33
Python range() example (0,6) 의미는Get numbers from range 0 to 6 을 뜻합니다.0, 1, 2, 3, 4, 5, 을 의미합니다.Python 에서 range (0,2)은 즉 영 부터 2개수, 즉 영 부터 2 -1까지의 수 0 , 1 , 이 두 수를 range 로 의미하는 명령어 입니다.그보다 신 군은 본인의 문제 풀이와 질문 과 함께 < 그간 밀린 ... 다른 학생들 문제풀이 및 질문과 내 글 에 ... 답을 주시는 부분을 보강하셔야 될 듯합니다^^
황인성(2019****19)5월 26일 오전 1:17
sage는 python 프로그래밍 언어를 기반으로 만든 수학전용 소프트웨어라서 그런 듯 합니다.python 내의 range() 함수에서 range(A, B)라고 적으면 "A부터 B - 1까지" 라고 이해하면 됩니다.아래의 링크에 더 자세한 설명이 있습니다.https://withcoding.com/79
이상구(LEE SANGGU)5월 26일 오전 9:06
신재열 군, 다른 학생 답 확인하시고 코멘트 주어 Finalize 해 주시고, 본인 것도 Finalize with Comment 하세요^for t in range (0,2)?신재열(2013****84)5월 25일82[ 팀프로젝트] 민재필-김예훈 -신재열, 파이썬 판다스를 이용해서 투자 전략을 백테스트 하는 프로젝트 (간단한 소개)민재필(2015****15)5월 24일330중간 고사 TakeHome Exam 제출하지 않은 학생 들 김원준, 이건민, 진사우, 임형균, 김민수, 조윤근, 정승욱, 박민수, 박재영 ... 은 오늘 10시반 OH 필수적으로 참여하여 ... 사정을 직접 얘기하셔야만 2nd Chance 줍니다.이상구(LEE SANGGU)5월 15일218[Final] 조건부 확률 문제 변형 by 김예훈, 이상구 교수님, 신재열, 김용훈 and Finalized by 신재열신재열(2013****84)5월 12일333중복조합의 조합을 활용한 계산 논리신재열(2013****84)5월 12일242boxplot의 의미 질문 <--- 박스 플롯(box plot) 설명 , 박스 플롯을 사용하는 이유는 많은 데이터를 눈으로 확인하기 어려울 때 그림을 이용해 데이터 집합의 범위와 중앙값을 빠르게 확인할 수 있는 목적으로 사용한다. 또한 통계적으로 이상치(outlier)가 있는지도 확인이 가능하다.신재열(2013****84)5월 12일233표본분산의 이해 질문신재열(2013****84)5월 11일162R quantile 명령어 이해신재열(2013****84)5월 11일151R 기본 명령어 이해신재열(2013****84)5월 11일213조건부 확률 관련 문제 변형, 신재열 님 ... 답 확인 부탁합니다^^ [수정 완료]김예훈(2020****54)5월 10일316Final : 채팅에 올라왔던 질의응답 정리신재열(2013****84)5월 8일184[Refinalized] Final 다변수 함수의 Taylor정리에 대한 질문 <--- [신재열 군의 질문에 대한 답] by SGLee (파일 첨부) by 신재열 and 이상구 교수님신재열(2013****84)4월 25일81[Refinalize][Final OK by TA] Gram-Schmidt 직교화 (질문과 답^^) by 신재열 , 이상구 교수님신재열(2013****84)4월 25일31[Refinalized] [Final OK by TA] QR분해에서 (질문과 답^^) <--- Comment 달아 Finalize 하면 될 듯^^ by 신재열, 이상구 교수님신재열(2013****84)4월 25일31[Refinalized][Final OK by TA] 선형변환 T에 대한 이해 by 신재열 , 이상구 교수님신재열(2013****84)4월 24일61[Refinalized] [Final OK by TA] 서로 다른 eigenvector의 orthogonality by 신재열, 이상구 교수님신재열(2013****84)4월 24일70[Refinalized] [Final OK by TA] 행렬의 대각화에 대한 설명 정리 by 신재열, 이상구 교수님신재열(2013****84)4월 24일31[Final] TakeHome Exam 2 13번 변형 실습 by 신재열, 김승한, 이상구 교수님신재열(2013****84)4월 24일237[Final] TakeHome Exam 2 10번 변형 실습 by 신재열신재열(2013****84)4월 24일111[Final] TakeHome Exam 2 9번 변형 실습 by 신재열신재열(2013****84)4월 24일31[Refinalized] [Final OK by TA] 3차원 그래프 코딩 이해 by 신재열,김예훈,이상구 교수님신재열(2013****84)4월 24일81[Refinalized] [Final OK by TA] 임계점 구하는 코드에 대한 질문 by 신재열, 이상구 교수님신재열(2013****84)4월 24일41[Refinalized] [Final OK by TA] 벡터공간의 충족요건 (2개의 기본 성질과 8개의 연산 성질 ^^) by 신재열, 이상구 교수님신재열(2013****84)4월 24일31[Final] Comment 채우고 있는 중에 질문입니다. by 신재열, 이상구 교수님신재열(2013****84)4월 24일72[Final] A의 역행렬 (증명) Finalized by 신재열신재열(2013****84)4월 24일43[Finalized by 신재열] Final OK by SGLee, 모든 (실수) 행렬은 symmetric matrix와 skew-symmetric matrix의 합으로 나타낼 수 있다. by 신재열, 이상구 교수님신재열(2013****84)4월 24일81[Final] 거듭제곱법에 대한 생각 by 신재열, 이상구 교수님신재열(2013****84)4월 24일42[Final] WebEx 출석인증과 핵심 내용 공유 by 신재열, 이상구 교수님신재열(2013****84)4월 24일201[Final OK by TA and SGLee] 경사하강법의 Wolfe condition과 Armijo condition 질문 <--- 답 보태 주었습니다^^ by 신재열, 이상구 교수님임동선(2017****79)4월 23일80[Final] March PBL <--- new [Midterm Exam, 중간고사 - 문제지 ] TakeHome Exam, Due: April 25th 11AM 여기에 제출하세요^^ by 신재열, 이상구 교수님신재열(2013****84)4월 23일122123
이상구(LEE SANGGU)5월 29일 오전 11:15
2019314523 김용훈 님이 모두에게:교수님 안녕하십니까!마이크켜기가 곤란한 장소임을 미리 말씀드립니다!자연과학대학장이상구 님이 모두에게:WebEx OH 에 참석한 학생들은 이번 PBL 보고서에 참여 횟수를 같이 적어내시면 출석점수에 가산점을 줄테니 자세히 적어내세요^^그리고 오늘도 채팅창이나 아이캠 QnA 에 본인이 출석했다고 노트를 남겨두세요^^자연과학대학장이상구 님이 모두에게:김용훈 님^^ 이래합니다자연과학대학장이상구 님이 모두에게:이번에 학생들의 사정을 다양하게 접하네요^^자연과학대학장이상구 님이 모두에게:내 말은 들립니다.자연과학대학장이상구 님이 모두에게:들립니까?2019314523 김용훈 님이 모두에게:교수님 넵자연과학대학장이상구 님이 모두에게:내일 5월 시험 제출준비는 잘 되고 잇나요?자연과학대학장이상구 님이 모두에게:어려운 점은?2019312019 황인성 님이 모두에게:안녕하세요2019314523 김용훈 님이 모두에게:오늘 서둘러야 할 거 같습니다 ㅎㅎ오늘 많이 나올 듯 합니다 ㅎㅎ이건민 님이 모두에게:노이즈가 심하여 마이크 참여가 어렵습니다. 채팅으로 참여하겠습니다.2019314523 김용훈 님이 모두에게:황인성 학우님! 저의 부족한 역량으로 아직 팀 프로젝트에 대한 시작이 전혀되지않았습니다. 팀장을 다른 분으로 하셨으면 좋겠네요..2019314523 김용훈 님이 모두에게:교수님 팀 프로젝트가 낼까지 완료되어야하나요?2019314523 김용훈 님이 모두에게:교수님 저 화장실 좀 다녀오겠습니다;;;;;2019314523 김용훈 님이 모두에게:죄송합니다;;;;2019314523 김용훈 님이 모두에게:교수님 핸드폰에 잠시 문제가 생겨서 다시 들어왔습니다..;이건민 님이 모두에게:화장실 좀 다녀오겠습니다..2019314523 김용훈 님이 모두에게:교수님! 다른 분의 글에 제가 답글을 남겼는데 그것을 제 보고서에 적어도 되나요?! 이 부분이 저의 Q&A 활동점수에 반영되나요?2019314523 김용훈 님이 모두에게:교수님 제가 이번학기에 미분적분학2를 수강중인데 혹시 이에대한 질문글을 이 과목의 문의게시판에 올려도 되는지 궁금합니다.


황인성(2019****19)5월 22일 오후 6:28
좋은 시평 소개해주셔서 감사합니다!
덕분에 인턴 경험이 얼마나 중요한 것인지 알 수 있었습니다.
김용훈(2019****23)5월 22일 오후 7:48
대한민국에서는 형식상으로만 충족하려는 그러한 문화(?)가 팽배해있다고 평소에 생각하고 있었는데 인턴 또한 그런 것 중의 하나라는 생각이 듭니다. 진정 의미있는 활동이 되어야 할텐데 말입니다.
[Finalized by 신재열] 표본분산의 이해 질문 by 이상구 교수님, 김용훈, 신재열
작성자 : 신재열(2013****84)작성일 : 5월 26일 오후 4:43
조회수 : 11
표본분산의 이해 질문
작성자 : 신재열(2013****84)작성일 : 5월 11일 오후 11:57
조회수 : 16
![]()
여기서 왜 n으로 나누지 않고 n-1로 나누는 것인가요??
이전
다음
2개의 댓글
이상구(LEE SANGGU)5월 12일 오전 8:59
분모를 n-1로 나누는 이유는 분산을 계산할 때 모평균이 아닌 표본 평균을 사용했기 때문에 모집단의 편의된 추정값(biased estimator)이 되므로, 분산이 불편 추정량(unbiased estimator)이 되도록 하기 위해서이다.[3] n-1을 자유도(degree of freedom)이라고 한다.[4]출처: https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%ED%8E%B8%EC%B0%A8
김용훈(2019****23)5월 12일 오후 2:20
수능수학준비하면서도 궁금했던 부분이었는데 이제 알겠습니다. 교수님!
Final Comment
위키백과 용어가 어려워 더 찾아보니 아래와 같이 두산백과의 설명을 얻을 수 있었습니다.
모집단에서 크기가 n인 표본을 추출하여 표본집단을 조사하고자 할 때 표본집단에 있는 자료의 값들끼리 얼마만큼 떨어져 있는지를 나타내는 값이 표본분산이다. 표본집단 내의 분산을 나타낸다고 할 수 있다. 일반적으로 표본표준편차를 s로 나타내기에 표본분산은 기호로 s2이다.
일반적으로 분산 또는 모분산을 계산하는 방법은 자료의 값에서 평균을 뺀 편차를 제곱한 다음 그 값들의 평균을 구하는 것이다. 그런데 표본분산의 계산은 약간의 다른 점이 있다.
먼저, 편차의 제곱을 구하는 것은 분산의 계산과 동일하다. 크기가 n인 표본을 추출한 표본집단에 있는 자료의 값들을 각각 x1, x2, x3, ···, xn이라 하자. 그리고 이 표본집단의 평균인 표본평균을 x̄라 하자. 편차는 자료값 xk에서 평균을 뺀 값인 xk-x̄이므로 편차의 제곱은 (xk-x̄)2이다.
원래 분산을 구하는 방법으로 이를 구하자면 ‘편차 제곱의 평균’을 구해야하므로 총 n개인 자료의 개수로 편차 제곱의 합을 나누어야 한다. 즉,
1/n{(x1-x̄)2+(x2-x̄)2+(x3-x̄)2+ ··· +(xn-x̄)2}
이와 같이 분산의 값을 구한다. 그러나, 표본분산에서 유의해야 할 점은 편차 제곱의 합을 표본의 개수인 n으로 나누지않고 n-1로 나누어 계산한다는 점이다. 크기가 n인 표본의 표본분산 s2은 편차 제곱의 합을 n-1로 나눈
s2=1/(n-1){(x1-x̄)2+(x2-x̄)2+(x3-x̄)2+ ··· +(xn-x̄)2} 이다.
왜 n-1로 나누는 것일까? 우선 표본의 크기 n이 충분이 크지 않은 경우 편차 제곱의 합을 n으로 나누어 표본분산을 구하면 모분산보다 작은 값이 나오게 된다. 표본분산을 약간 크게 나오도록 계산하여 모분산에 가까워질 수 있게 하면 표본분산과 모분산의 차이가 줄어들어 표본분산을 더 유용하게 사용할 수 있다. 편차제곱의 합을 n으로 나누는 것보다 n-1로 나누면 표본분산이 약간 커진다.
또한 표본분산의 기댓값 E(s2)을 계산했을 때도 편차제곱을 n으로 나눈 값은 기댓값이 모분산보다 작지만, n-1로 나눈 값은 그 기댓값이 정확히 모분산과 일치한다. 모분산이 σ2이고 s2=1/(n-1){(x1-x̄)2+(x2-x̄)2+(x3-x̄)2+ ··· +(xn-x̄)2}일 때, E(s2)=σ2이다. 표본평균의 기댓값도 모평균과 일치하듯 표본분산의 기댓값도 모분산과 일치시키기 위해 표본분산을 n-1로 나눈 값을 사용하는 것이 타당하다.
[네이버 지식백과] 표본분산 [Sample Variance, 標本分散] (두산백과)
표본분산의 값을 모분산의 값과 더 가깝게 하기 위해서, 표본분산의 기대값을 모분산과 같게 하기 위해서 n-1로 나눈 것이 타당하고 통계적으로 더 유용합니다.
[Refinalized and OK by SGLee] [Final] 조건부 확률 문제 변형 by 김예훈, 이상구 교수님, 신재열, 김용훈 and Finalized by 신재열 (코드 설명 보충)
작성자 : 신재열(2013****84)작성일 : 5월 26일 오후 5:00
조회수 : 17
[Final] 조건부 확률 문제 변형 by 김예훈, 이상구 교수님, 신재열, 김용훈 and Finalized by 신재열
작성자 : 신재열(2013****84)작성일 : 5월 12일 오후 9:05
조회수 : 33
조건부 확률 관련 문제 변형
작성자 : 김예훈(2020****54)작성일 : 5월 10일 오후 8:51
조회수 : 23
*1000명의 사람이 한 장소에 모인다고 가정하자. 이중에서 30%는 걸어서, 50%는 대중교통을 이용하여, 20%는 자가용을 이용하여 왔다고 한다. 또한 자가용을 이용한 사람의 70%, 대중교통을 이용한 사람의 40%, 도보를 이용한 사람의 0%는 타 지역 거주자이다. 타 지역 거주자의 수는 몇 명인가? 그리고 타 지역 거주자라는 전제에서, 그 사람이 대중교통을 이용하였을 확률은 몇인가?
------------------------------
#확률
A = 0.3 # 도보
B = 0.5 # 대중교통
C = 0.2 # 자가용
# 조건부 확률
EX_A = 0.7
EX_B = 0.4
EX_C = 0.0
# 첫 번째 문제
print("%d" %int(1000*(A*EX_A + B*EX_B + C*EX_C)))
# 두 번째 문제
EX = (A*EX_A + B*EX_B + C*EX_C)
B_EX = EX_B*B/EX
print(B_EX)
------------------------------

------------------------------
타 지역 거주자의 수는 410명이며, 타 지역 거주자 중, 그 사람이 대중교통을 이용할 확률은 약 0.4878, 즉 48.7%이다
김용훈(2019****23)5월 11일 오후 10:20
암산으로 풀어보았는데 자꾸 틀린 답이 나와서 이유를 알아봤더니 도'걸어서 온 사람'의 0%가 타 지역 주민이었다는 부분에 대한 해석이 다른 것 같습니다. 단순히 생각해보았을 때 대중교통을 이용한 사람이 500명인데 그 중 40%면 200명이 타 지역주민이고 자가용을 이용한 200명 중 70%가 타 지역주민이므로 140명이 됩니다. 그리고 걸어서 온 사람 중에서는 타 지역주민이 없으므로 타 지역주민은 340명이 아닌가요? 제가 무엇을 누락하고 생각하는 건지 잘 모르겠습니다.
신재열(2013****84)5월 12일 오후 8:43
제가 지금 봤는데 조건부 확률 변수 설정에서 헷갈리셨어요..
기본 확률에 대한 변수에서는 A, B, C를 각각 도보, 대중교통, 자가용 데이터를 갖고오셨는데,
조건부 확률에 대한 변수를 선언하실 때는 EX_A, EX_B, EX_C를 각각 자가용, 대중교통, 도보 데이터에서 갖고 오셨어요~
전혀 관련없는 데서 곱사건의 확률을 계산하였기에 오류가 나왔네요~
계산해보면 1번 문제는 340명, 2번 문제는 10/17 나옵니다.
Final Comment(신재열)
코드 정정
#확률
A = 0.3 # 도보
B = 0.5 # 대중교통
C = 0.2 # 자가용
(이상 변수 A, B, C에 걸어서 왔을 확률, 대중교통을 이용했을 확률, 자가용을 이용하여 왔을 확률을 저장)
# 조건부 확률
EX_A = 0.0 #도보
EX_B = 0.4 #대중교통
EX_C = 0.7 #자가용
(이상 변수 EX_A, EX_B, EX_C에 걸어서 온 사람 중 타 지역 거주자일 확률, 대중교통 이용자 중 타 지역 거주자일 확률, 자가용 이용자 중 타 지역 거주자일 확률 저장)
# 첫 번째 문제
print("%d" %int(1000*(A*EX_A + B*EX_B + C*EX_C)))
(print 명령어는 항상 인수를 큰 따옴표하여 써야 하며 일반적으로 큰 따옴표 안의 내용은 문자로 인식한다. 그런데 여기에 %d, %s, %4.2f 등과 같이 형식을 지정하여 계산된 숫자가 들어갈 자리를 표기할 수 있다. 여기서는 %d에 계산된 숫자가 들어가며, 뒤의 %int(1000*(A*EX_A + B*EX_B + C*EX_C)의 내용이 들어간다. 타 지역 거주자일 확률을 먼저 구하고 그 확률에 한 장소에 모인 인원 수 1000을 곱하여 타 지역 거주자의 수를 구하였다. 거주자의 수는 자연수여야 하므로 int 명령어로 정수를 취한 것이다.)
# 두 번째 문제
EX = (A*EX_A + B*EX_B + C*EX_C)
B_EX = EX_B*B/EX
print(B_EX)
(타 지역 거주자일 확률을 구하여 EX변수에 저장하였다. 그 다음 타 지역 거주자 중 대중교통을 이용하였을 조건부 확률을 구하여 B_EX 변수에 저장하였으며 이 조건부확률을 출력하여 답을 얻었다.)
이 상황을 표로 정리하면 다음과 같습니다.

1번 문제는 1000에 대해 표에서 0.34의 확률에 해당하므로 340명이고,
2번 문제는 표에서 타지역 전체 34%중에 대중교통 20%에 해당합니다. 그래서 20/34=10/17 입니다.
[Final OK by TA] 공분산, 상관계수, 공분산행렬 이해하기
작성자 : 신재열(2013****84)작성일 : 5월 28일 오후 10:03
조회수 : 19
(1) 확률변수
와
의 공분산은 다음과 같이 정의된다.
![]()
(2) 확률변수
와
사이의 상관계수는 다음과 같이 정의된다.
단위의 크기에 영향을 받는다는 문제점이 있다고 기술되어 있는데, 단위를 아예 없애서(차원을 없애서 무차원화) X와 Y간에 실질적인 비교가 가능하게 보완한 것이라고 이해하였습니다 맞을까요??
▶ 공분산 행렬(Covariance Matrix)
행렬을 이용하면 두 변수가 서로 어떤 관계를 가지는지를 쉽게 표현할 수 있다. 특히, 각 데이터의 분산과 공분산을 이용해 만드는 공분산 행렬이 이에 해당한다.
개의 확률변수
,
,
를 하나의 벡터로 나타낸 것을
라 하자. 벡터
의 공분산 행렬(covariance matrix)은
성분이
일 때는
의
번째와
번째 확률변수의 공분산이고,
일 때는
번째 확률변수의 분산인
행렬을 말하는 것으로
를 사용하여 나타낸다. 쉽게 말하면, 정사각행렬의 값을 각 변수의 분산(주대각선)과 공분산으로 채운 것이 바로 공분산 행렬이다.


공분산행렬에서 고유벡터와 고윳값을 찾는 것은 데이터의 주성분(principal component)을 찾는 것과 동일하다. 왜냐하면 고유 벡터는 행렬이 어떤 방향으로 힘을 가하는지를 표현하는데, 이것은 데이터가 어떤 방향으로의 분산이 가장 큰지를 구하는 것과 같기 때문이다. 고윳값(Eigenvalues)은 각 고유벡터에 해당하는 상관계수이다. 우리가 다루는 행렬이 공분산 행렬일 경우 고윳값은 각 축에 대한 공분산 값이 된다. 그리고 고윳값이 큰 순서대로 고유벡터를 정렬하면, 결과적으로 중요한 순서대로 주성분을 구하는 것이 된다.
xyz공간 상에 z=p(x,y)의 그래프를 그리고 (E(X), E(Y), p(x,y))점을 중심으로 하여 z=p(x,y)의 그래프를 xy평면에 수직으로 분할하는 모든 케이스를 살펴봤을 때 데이터가 가장 넓게 퍼져있는 방향이 존재하고 그 때의 상관계수 값이 공분산행렬의 주성분이 된다는 내용으로 이해하였습니다. 이 내용은 고체역학 혹은 재료역학을 공부할 때 주응력을 구하는 방법과도 통하는 내용이네요~
이상구(LEE SANGGU)5월 29일 오전 5:33
이것이 key 입니다.공분산행렬에서 고유벡터와 고윳값을 찾는 것은 데이터의 주성분(principal component)을 찾는 것과 동일하다.PCA 하려면 공분산 행렬 과 SVD 꼭 알아야 합니다
Sage 코드에서
작성자 : 신재열(2013****84)작성일 : 5월 30일 오후 7:16
조회수 : 18
방정식을 세우고 그 해를 구하는 Solve 명령어를 주어서 그걸 어떤 변수(A라고 하겠습니다)에 저장하면
[x==4]
와 같은 형태가 나오고 대괄호까지 A에 저장이 되더군요.
저는 해로 나온 4만 취해서 그다음 논리에 활용하고 싶은데,
이래저래 찾아보면서 A.rhs()로도 써봤는데 x==4가 아니라 대괄호까지 포함된 채 A에 저장이 되었기에 4만 추출되지 않고 오류가 납니다..
저기서 4만 추출하고 싶으면 어떻게 하면 될까요?
이전
다음
3개의 댓글
이상구(LEE SANGGU)5월 30일 오후 8:20
Python 아는 소프트웨어 대학 학생이 답을 주어보세요^^
김예훈(2020****54)5월 31일 오전 10:22
Solve에서 출력되는 값이 리스트라는 점을 감안하면, Index를 이용하여 아래와 같이 개별적인 값을 추출해 낼 수 있습니다.https://sagecell.sagemath.org/ 에서@ 코드var('x, y')a = solve([x + y == 4, x - y == 2], x, y)print("해:", a, end="\n\n")print(a[0][0].rhs())print(a[0][1].rhs())@ 결과해: [[x == 3, y == 1]]31만약 해가 하나의 묶음이 아니라면(e.g. [[x == 1, y == 2], [x == 1, y == -2]]), len()으로 리스트의 길이를 추출하고, for문을 이용하여 연속적인 해를 추출하는 방법으로 코드를 작성하는 것이 유용합니다.
이상구(LEE SANGGU)5월 31일 오후 1:21
김예훈군, Bonus 2점 입니다. ^^
Part Ⅳ. 빅데이터와 인공지능
http://matrix.skku.ac.kr/math4ai/part4/
(학생들의 질문/답변/활동 기록: http://matrix.skku.ac.kr/math4ai/PBL-Record/ )
1.1 주성분 분석(Principal Component Analysis, PCA)
1.2 Principal Component의 유도
1.3 PC score
▪
를 센터링(mean-centered)된
의 데이터 행렬이라 하자. 여기서
은 표본(sample)의 개수이고,
는 확률변수(variable, feature)의 개수이다. 공분산 행렬
는
대칭행렬이므로, 다음과 같이 직교대각화가 가능하다.
여기서
는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한 대각선행렬이고,
는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는 직교행렬이다. 또한
이므로
는 양의 준정부호(positive semidefinite) 행렬이고, 고윳값은
이다. 그리고 고유벡터는 주축(principal axes) 또는 주방향(principal directions)이라고도 부른다.
▪ 주성분(PC)
,
, ... ,
를 벡터로 나타내면 다음과 같다.
![]()
![]()
그리고 각 확률변수
에 원 데이터를 대입하면 행렬
를 얻는다.

그러면
의
번째 데이터의 좌표는
의
번째 행벡터로 주어지고,
번째 PC score (주성분점수, principal component score)는
의
번째 열벡터로 주어진다.
● 이제
의 특이값분해(SVD)가 다음과 같이 주어져 있다고 하자.
![]()

![]()
![]()
![]()
여기서
,
는 직교행렬이고,
는 크기 순서대로 배열된 특이값(singular value)
을 주대각선 성분으로 하는
대각선행렬
이다. 그러면 관계식
![]()
![]()
![]()
![]()
으로부터 다음을 얻는다.
(1)
라 하면
의 열벡터가 주축(principal axes)이 된다.
(2)
이므로,
의 열벡터들이 PC score (주성분점수, principal component score)가 된다.
(3) 특이값
는
의 고윳값
와 관계식
을 만족하며,
는 대응하는 PC의 분산이 된다.
(4) 데이터를
차원에서
(
) 차원으로 줄이기 위하여,
의 처음
개의 열벡터(
)와
의
번째 선행 주 부분행렬(leading principal submatrix)(
)을 택하면,
는 처음
개의 PC를 포함하는
행렬이 된다.
![]()
![]()
.
(5) (4)에서 얻은
에
,
, ... ,
에 대응되는 주축으로 이루어진 행렬
을 곱하면,
는 처음
개의 PC로부터 원 데이터를 복원하도록 해주는 rank가
인
행렬이 된다. [rank reduction]
![]()
![]()

![]()
.
이는
의 SVD에서 크기 순서대로
개의 큰 특이값
과 이에 대응되는
와
의 처음
개의 열벡터를 택하는 것과 같다. 이를 truncated SVD라고 한다. 실제로
는 rank
인 행렬 중에서
에 가장 가까운 행렬이 된다. 즉 다음이 성립한다.
.
1.4 PCA 예제
...
2. 신경망
26강 동영상, 빅데이터와 인공지능, 신경망 https://youtu.be/D_oCT-tEW_4 (13:06)
26강 part 2, 인공신경망(은닉망의 수학) https://youtu.be/d4WercT_OnU (18:12)

2.1 신경망(Neural Network)
...
▪ 신경망은 제대로 예측할 때 까지 많은 데이터를 필요로 하며, 또한 입력층과 출력층 사이에 많은 은닉층을 둘 수도 있다. 이와 같이 은닉층이 여러 개 있는 인공신경망을 심층신경망(deep neural network)이라고 부르며, 심층 신경망을 학습하기 위한 기계학습 기법을 딥러닝(deep learning)이라고 부른다. 은닉층이 여러 개 있는 경우에도 마찬가지로 오차 역전파법을 이용하여 그 이전 층에서 전파된 오차로부터 경사하강법을 적용하여 가중치를 갱신할 수 있다. 기타 자세한 사항은 신경망, 딥러닝과 관련된 도서를 참조하라.





https://www.hankyung.com/it/article/202005270690i


이상구(LEE SANGGU)5월 28일 오후 1:08
https://www.hankyung.com/it/article/2020052728181
“인공지능(AI) 시대에 가장 필요한 사람은 폭넓은 수학지식을 갖춘 인재입니다. 수학 논문을 읽을 줄 알아야 제대로 된 알고리즘을 개발할 수 있습니다.”
AI 스타트업 애자일소다의 최대우 대표는 27일 온라인으로 생중계된 ‘스트롱코리아 포럼 2020’의 ‘수학으로 진보하는 AI의 세계’ 세션에서 이같이 말했다. 그는 “기업 현장에서 문제를 풀다 보니 코딩 능력보다 수학 이해가 더 중요하다는 점을 뼈저리게 느꼈다”고 했다.
이 세션에서는 최 대표를 비롯해 이상구 성균관대 자연과학대학장, 황형주 포스텍 수학과 교수, 현동훈 서울대 수학과 교수가 발표와 토론을 맡았다. 참가자들은 수학을 통해 AI 기술이 한 단계 발전할 수 있고, 이를 위해선 수학계의 적극적인 참여와 학생 교육이 중요하다고 입을 모았다.
황 교수는 딥러닝 기반의 AI를 수학 모델에 접목해 신종 코로나바이러스 감염증(코로나19) 전파 양상을 예측한 연구 결과를 소개했다.
황 교수의 모델은 전체 인구를 감염 위험군과 감염군, 회복·사망군으로 분류한다. 세 집단이 차지하는 규모는 시간에 따라 변화하고, 변화 패턴도 정부의 방역정책 등으로 수시로 바뀐다고 가정했다. 변화하는 패턴이 일정하다는 가정 아래 분석을 진행한 기존 연구들과의 차이점이다.
수학적 사고력으로 모델을 개발한 뒤에는 딥러닝 기반의 AI가 계산력을 보탰다. 각 집단 비율의 변화 패턴을 정확히 분석하고, 미래 패턴을 예측하는 데 활용된다. 예측 결과를 실제 데이터와 비교한 결과 큰 오차가 발견되지 않았다.
황 교수는 “수학 모델은 사람이 설정할 수 있지만 그 안에 포함된 의미를 모두 사람의 손으로 파악하는 것은 불가능하다”며 “AI를 적용하면 이 문제를 해결할 수 있다”고 말했다.
AI 기술에는 위험 요소도 있다. 예측 결과를 무조건적으로 신뢰하다 보면 흑인의 사진을 고릴라로 인식하는 등의 윤리적 문제가 발생한다. 의사가 AI 의료기기를 무작정 신뢰하면 과잉진료나 치료 지연에 따른 질병 악화 등의 결과를 낳을 수도 있다.
이런 위험을 최소화하는 데에도 수학을 활용할 수 있다는 게 황 교수의 설명이다. 그는 AI 의료기기가 자신이 예측한 결과의 신뢰도를 의사에게 보고하는 진단 보조 모델을 제시했다. 확률 이론을 적용해 결과 예측값을 밀도함수로 보여주는 방식이다. 분산값이 큰 경우에는 진단 결과가 불확실할 수 있으니 의사의 재진단을 권고한다.
수학자들이 AI 연구에 더 적극적으로 참여해야 한다는 제언도 나왔다. 현 교수는 “수학자들이 보기에는 현재 AI에 쓰이는 수학이 기초적인 내용이라 연구에 참여하는 학자가 많지 않다”며 “아직 밝혀낼 것이 많은 딥러닝 메커니즘을 제대로 규명하고, 새로운 알고리즘을 개발하기 위해선 수학자의 역할이 필수”라고 말했다. 참가자들은 수학 인재 양성의 중요성도 강조했다. 최 대표는 “하얀 종이에 연필로만 풀어가는 이론 교육으로는 학생들의 관심을 끌기 어렵다”며 “수학이 AI와 결합해 어떻게 활용될 수 있는지 구체적으로 알려줘야 한다”고 말했다.
최한종 기자 onebell@hankyung.com










황인성(2019****19)5월 29일 오후 3:44
경사하강법처럼 가장 이상적인 근사해를 구하는 방법이네요.
다시 한번 중요한 개념 알려주셔서 감사합니다!
조완제(2016****76)5월 29일 오후 5:26
머신러닝에서 중요한 부분들을 알려주셔서 감사합니다! 선형회귀에는 정규방정식도 있는걸로 알고있습니다. 그리고 규제가 있는 선형모델로는 릿지회귀, 라쏘회귀, 엘라스틱넷, 로지스틱 회귀 등등이 있습니다









황인성(2019****19)5월 29일 오후 3:07
다시 한 번 중요한 개념을 잊지 않게 가르쳐주셔서 감사합니다!
혹시 중간중간에 수식이 빠져 있는데 수정해주실 수 있나요?
이상구(LEE SANGGU)5월 29일 오후 3:26
경사하강법(Gradient Descent Algorithm) http://matrix.skku.ac.kr/math4ai/gradient_descent/
에 모두 정상이랍니다^^^ 아이캠이 MathML 을 잘 인식 못하는 것 이랍니다.
위 주소에는 정상입니다
조완제(2016****76)5월 29일 오후 5:24
경사하강법에 대해서 다시 상기시켜주셔서 감사합니다. 경사하강법의 종류도 여러가지가 있는 것으로 알고 있습니다. 예를 들어서 배치경사하강법, 확률적 경사 하강법, 미니배치 경사 하강법 등등이 있습니다.








황인성(2019****19)5월 29일 오후 3:20
특이값 분해를 통해 자료 분석을 보다 용이하게 할 수 있을 것 같습니다
자료를 정리해주셔서 감사합니다!
조완제(2016****76)5월 29일 오후 5:28
주성분분석은 최대한 오차를 낮추고 복잡한 차원을 줄이면서 머신러닝을 용이하게 할 수 있는 방법으로 알고 있습니다. 다시 상기시켜주셔서 감사합니다!!







이상구(LEE SANGGU)5월 29일 오후 3:15
http://www.polymath.co.kr/contents/view/18134
황인성(2019****19)5월 29일 오후 3:36
인공지능 개발에 필요한 지식들을 종합적으로 모아 놓아 일반 사람들도 볼 수 있게 한 것들도 있네요.
전공자가 아니여도 학습하는데 유용하게 사용할 수 있을 것 같습니다!
□ 5월 설명(소감)
이번 5월 동안은 댓글로 참여한 횟수가 부쩍 증가했습니다. 긍정적으로 보면 QnA에 더욱 많이 참여하게 되었으니 좋지만, 실제로는 제가 직접 쓴 글이 조금 줄었기 때문에 어찌 보면 스스로 질문하는 습관이 줄어들게 된 것이라고 생각합니다. 다음 달이 마지막 달이기 때문에 지금처럼 QnA의 다른 사람들의 글에 댓글로 제 의견을 보여주는 것을 유지하는 동시에, 궁금한 점에 대해 더욱 적극적으로 질문할 수 있도록 될 것입니다.
7. 이번 여름에는 AI 관련 과목들을 주로 하여 도전학기제를 시행한다.
https://www.skku.edu/skku/edu/challenge/challenge_02.do
일부 무료이며 우수한 교수님들이 주관하시는 강의. 성실히 하면 모두 좋은 성적을 받을 수 있게 절대평가로 시행. 흔치 않은 파격적인 기회니까 활용할 것을 적극 추천.
전체프로그램 소개
여름방학에 AI·창의융합 분야 수준 높은 정규수업과 정규학기에 미처 경험해보지 못한 다양한 비교과프로그램이 무료로 제공됩니다. 학교에서 직접 섭외하여 믿을 수 있는 다양한 인턴십, 현장실습 프로그램 참여 기회가 많아집니다. 도전학기 수강시 Credit Plus+ 제도로 다음 학기 추가 3학점의 수강신청 기회가 주어집니다.

도전학기 개요

이전
다음
4개의 댓글
이상구(LEE SANGGU)6월 5일 오후 12:50
오늘 면담 동영상입니다. [Matrixtopia] Math4AI, WebEx OH, 2020-06-05 학생면담 https://youtu.be/ba7LXrCS5dw
이상구(LEE SANGGU)6월 5일 오후 1:32
학생 이름 페이지 뷰 참여 제출물수 정시지각결석/불참/누락 현재 점수김도현(2019) 35 1 49 49 0 1 87.65%김민수(2020) 7 0 21 21 0 6 100%김승한(2012) 267 2 58 58 0 2 90.4%김예훈(2020) 125 1 53 53 0 3 92.78%김용훈(2019) 293 1 41 41 0 4 91.43%김원준(2013****74) 4 0 38 38 0 4 100%김윤수(2008****22) 10 0 40 39 1 5 100%나우주(2020****91) 53 1 36 35 1 3 92.14%민재필(2015****15) 67 1 50 49 1 0 91.07%서형찬(2014****85) 8 0 40 39 1 4 83.89%신재열(2013****84) 54 1 49 49 0 1 97.78%이건민(2012****50) 173 1 53 53 0 5 100%이인창(2013****76) 59 3 35 34 1 4 86.43%임형균(2010****85) 0 0 32 32 0 6 100%정성욱(2019****19) 7 0 35 35 0 2 89.96%정승욱(2012****77) 5 0 19 19 0 6 100%조완제(2016****76) 52 0 47 47 0 1 93.85%조윤근(2016****14) 14 0 32 32 0 6 100%진가은(2013****41) 113 1 43 42 1 4 86.43%한병욱(2012****42) 205 2 41 40 1 4 57.14%홍태규(2013****54) 48 2 53 51 2 1 93.54%황인성(2019****19) 61 1 54 54 0 1 96.67%안주현(2014****40) 40 0 58 56 2 2 87.5%진사우(2019****39) 40 0 53 53 0 6 100%박민수(2011****82) 0 0 2 2 0 6 100%
이상구(LEE SANGGU)6월 5일 오후 1:36
◆ THE 2020 아시아 대학 순위 ◆ 고민서, 신혜림 기자입력 : 2020.06.03https://www.mk.co.kr/news/society/view/2020/06/569759/[단독] 성균관대 2년연속 아시아 톱10…성균관대는 지난해 처음으로 아시아 톱10에 이름을 올린 데 이어 올해 평가에서 총점 67점을 받으며 2년 연속 아시아 대학 순위 10위를 기록했다. 구체적으로 성균관대는 5개 평가 항목 중 4개가 국내 5위권에 들면서 국내 사립대 중 1위를 기록했다. 올해 세부 평가 항목에서 교육 여건 59.5점, 연구 66.5점, 논문 피인용도 70.3점, 산학협력 수익 97.3점, 국제 평판 51.1점을 받았다. 특히 교육 여건, 연구, 논문 피인용도, 산학협력 수익 부문이 국내 5위권에 들면서 균형 있는 발전을 이루고 있다는 평을 받았다. 또 성균관대는 지난해보다 연구 실적과 국제화 점수도 2.3점씩 올랐다. 2019년 성균관대의 국제논문 실적은 5655편에 달한다. 2010년 2782편에 비해 2배 이상 증가한 수치다.
이상구(LEE SANGGU)6월 5일 오후 1:38
나는 여러분들이 아시아를 대표하는 Top 10 School 에 다시면서 많이 성장하여 ...이전에 모르던 것을 우리 강좌와 또 이번 학기에 수강하는 다른 강좌에서 깨우치고, 이전에 못 하던 일들을 할 수 있게되고, 자신이 이룬-자신이 만든-자신이 해 본 것들을 정리한 자신의 보고서를 발표하면서 ...다른 젊은이들에게 비전을 제시하면서 앞으로 우리나라를 이끌어갈 인재가 되어야 한다고 또 꼭 그렇게 될 것이라고 생각합니다.적어도 우리 강좌에서 A 받는 학생은 자신의능력을, 그 노력을 그 가능성을 보여주셔야 합니다^^ 이제 2 주 남았습니다. 밀린 일 하시고 여러분의 멋진 마무리와 분발을 기대합니다.

















황인성(2019****19)6월 5일 오전 1:33
선형대수학, 미분적분학, 확률과 통계가 Data Structure과 AI에 어떤 도움이 되는지 명확히 보여주는 글이었습니다.
정말 큰 도움이 되었습니다 교수님!
이상구(LEE SANGGU)6월 8일 오후 1:20
good^^ PC score 를 찾는 방법에 대하여 읽어보고 이해 안되는 부분 질문하거나, 이해하였으면 황인성 군의 말/표현으로 요약해서 공유해 보세요^^ 큰 도움이 될 것입니다.

황인성(2019****19)6월 14일 오전 2:29
최대한 열심히 레포트 쓰도록 노력하겠습니다! 감사합니다













이상구(LEE SANGGU)6월 10일 오후 12:21
답이 여기에 있네요^^ 딥러닝 지도학습, 자율학습, 지도/자율 학습, 강화학습의 차이점은 무엇일까?
9월 3, 2018 by NVIDIA KOREA
https://blogs.nvidia.co.kr/2018/09/03/supervised-unsupervised-learning/
Share
이케아 가구를 만드는 방법은 여러 가지가 있습니다. 어떤 방법으로 하든 결국에는 완성된 소파와 의자의 모습을 갖추게 되겠지만 조립을 하는 방식도, 조립을 시작하게 되는 접근 방법도 다양할 것 입니다.
설명서와 모든 부품을 갖고 있다면 설명서에 나온 대로 따라하면 되고 설명서를 보기 전에도 어떻게 조립하는지 스스로 알고 있다면 설명서는 일단 치우고 혼자 하면 되겠죠. 그러나 기본적인 방법도 모르고 설명서에서도 답을 찾지 못한다면, 목재 부품과 나사를 어떻게 조립해야 하는지는 여러분에게 달렸습니다.
딥러닝도 마찬가지입니다. 이용할 수 있는 데이터의 종류와 가지고 있는 연구 과제에 따라, 과학자는 특정 학습 모델을 사용해 알고리즘을 학습시키도록 할 것입니다. 알고리즘을 학습을 시키는 방법은 가구 조립을 시작하는 접근 방법과 마찬가지로 다양한 방법이 있답니다.
지도 학습 모델(supervised learning model)에서 알고리즘은 분류된 데이터 세트에서 학습해, 알고리즘이 학습 데이터에서 정확성을 평가하는데 사용할 수 있는 기준을 제공합니다. 반대로, 자율 학습 모델(unsupervised learning model)에서는 분류되지 않은 데이터를 제공하고, 알고리즘이 스스로 특징과 패턴을 추출함으로써 이 데이터를 이해하려고 노력합니다.
지도/자율 학습 모델(semi-supervised learning model)은 그 중간에 해당합니다. 소량의 분류된 데이터를 사용해 분류되지 않은 더 큰 데이터 세트를 보강하지요. 그리고 강화 학습(Reinforcement Learning)은 인공지능 에이전트가 특정 상황에서 최상의 조치를 취할 때 피드백을 제공하는 보상 시스템을 통해 알고리즘을 학습시킵니다.
그럼, 각 학습 방법과 관련이 있는 데이터 세트와 문제의 종류에 대해 살펴보겠습니다.
지도 학습이란 무엇인가?
만약 여러분이 누군가의 지도 하에 일을 배우고 있다면, 여러분이 올바른 답을 찾는지는 지도하는 사람이 알려줍니다. 이와 유사하게 지도 학습에서는 알고리즘을 학습시킬 때 분류된 데이터의 완전한 한 세트가 있습니다.
여기서 ‘완전히 분류’되어 있다는 건 학습 데이터 세트의 각 예시에 알고리즘이 알아서 파악해야 하는 답이 달려 있는 것을 말합니다. 꽃 이미지의 분류된 데이터 세트는 모델에게 어떤 사진이 장미, 데이지, 혹은 수선화 사진인지를 알려줍니다. 새로운 이미지를 보여주면, 모델은 기존에 학습한 예시와 비교해 올바른 분류를 예측합니다.
지도 기계 학습(supervised machine learning)에서, 알고리즘은 분류된 데이터로부터 학습합니다.
지도 학습이 유용하게 사용되는 두 가지 주요 영역이 있습니다. 바로 분류 문제와 회귀 문제입니다.
고양이인가, 코알라인가, 아니면 거북이인가? 분류 알고리즘이 그 차이를 알려줄 수 있습니다.
분류 문제는 알고리즘에 개별 값을 예측해 입력 데이터를 특정 군이나 그룹의 구성원으로 식별하기를 요청합니다. 동물 이미지 학습 데이터 세트를 예로 들자면, 각 사진이 사전에 고양이, 코알라, 거북이로 분류되어 있다는 뜻입니다. 이 알고리즘은 다른 코알라나 거북이의 새로운 이미지를 얼마나 정확하게 분류해낼 수 있는지를 통해 평가됩니다.
한편, 회귀 문제는 지속적인 데이터를 봅니다. 하나의 사용 사례인 선형 회귀는 대수학 수업시간에서 들어 익숙할 겁니다. 특정 x값이 주어졌을 때, 변수 y의 기대값은 무엇인가?
더 현실적인 기계 학습(machine learning) 예시는 평수, 위치, 대중 교통 근접성에 따라 샌프란시스코의 아파트 가격을 예측하는 알고리즘처럼, 많은 변수를 포함하고 있는 것입니다.
따라서 지도 학습은 알고리즘을 학습시킬, 이용 가능한 참조점의 한 세트나 실측 정보(ground truth)가 있는 문제일 경우에 가장 적합합니다. 하지만 그런 것들이 항상 이용 가능한 것은 아니죠.
자율 학습이란 무엇인가?
완벽하게 분류된 깔끔한 데이터 세트는 구하기 쉽지 않습니다. 그리고 때때로 연구원들은 자기들도 답을 모르는 문제를 알고리즘에 묻고는 합니다. 여기가 바로 자율 학습이 시작된 부분입니다.
자율 학습에서는 딥러닝 모델에 뭘 할지에 대한 명확한 지시 없이 데이터 세트가 주어집니다. 이 학습 데이터 세트는 구체적인 희망결과나 올바른 답이 없는 예시들의 모음입니다. 그럼 신경망은 유용한 특징을 추출하고 구조를 분석함으로써 자동적으로 데이터 안에서 구조를 찾으려고 노력합니다.
자율 학습 모델은 데이터에서 자동적으로 특징을 추출하고 패턴을 찾아냅니다.
자율 학습 모델은 주어진 문제에 따라 각기 다른 방법으로 데이터를 조직할 수 있습니다.
•군집화(Clustering): 조류학 전문가가 아니더라도, 새 사진 모음을 보고 깃털 색깔이나 크기, 부리 모양 같은 단서를 통해 대강 종을 구분하는 것은 할 수 있습니다. 이것이 바로 자율 학습을 위한 가장 흔한 적용인 군집화가 이루어지는 방식입니다. 딥러닝 모델은 서로 비슷해 보이는 학습 데이터를 찾아 그룹으로 만듭니다.
•이상 탐지(Anomaly detection): 은행은 고객의 구매 행동에서 특이한 패턴을 발견함으로써 사기거래를 탐지합니다. 예를 들어, 한 신용카드가 각각 미국 캘리포니아와 덴마크에서 같은 날 사용됐다면, 그건 의혹의 원인이 됩니다. 이와 유사하게, 자율 학습은 데이터 세트에 특정 값을 표시하는데 쓰일 수 있습니다.
•연상(Association): 온라인 쇼핑 카트에 기저귀, 사과 소스, 빨대 컵을 넣으면 사이트가 저절로 턱받이와 베이비 모니터를 추천해줄 겁니다. 이건 연상의 예시인데요, 바로 데이터 샘플의 어떤 특성을 다른 특성과 연관 짓는 겁니다. 데이터 포인트의 핵심 속성을 두어 개 파악함으로써, 자율 학습 모델은 연관된 다른 속성들을 예측할 수 있습니다.
•오토인코더(Autoencoder): 오토인코더는 입력 데이터를 가지고 하나의 코드로 압축한 뒤 요약된 코드로부터 입력 데이터를 재생성하려고 합니다. 이건 마치 모비 딕으로 시작해 스파크노트 버전을 생성한 후, 스파크노트만을 참고해 원작을 다시 쓰려고 하는 것과 같습니다. 깔끔한 딥러닝 트릭이긴 하지만, 간단한 오토코더가 실제로 유용한 사례는 별로 없습니다. 하지만 복잡성을 한 층만 더하면 가능성은 불어납니다. 오토인코더는 학습에 한 이미지의 더러운 버전, 깔끔한 버전을 둘 다 씀으로써 이미지, 비디오, 의료용 스캔 같은 시각 데이터에서 노이즈를 제거해 이미지의 품질을 개선시킵니다.
데이터에 실측 정보 요소가 없기 때문에, 자율 학습으로부터 학습된 알고리즘의 정확성을 측정하기는 어렵습니다. 그러나 많은 연구분야에서 분류된 데이터는 찾기 힘들거나 너무 비쌉니다. 이런 경우에 딥러닝 모델에 스스로 패턴을 찾을 무제한의 자유를 주는 것은 높은 품질의 결과를 가져올 수 있습니다.
지도/자율 학습이란 무엇인가?
지도/자율 학습(semi-supervised learning)은 중용이라고 생각하시면 됩니다.
지도/자율 학습은 대부분의 경우, 분류된 데이터와 분류되지 않은 데이터가 모두 포함된 학습 데이터 세트입니다. 이 방법은 데이터로부터 관련 특성을 도출해내기 어려울 때와 분류된 데이터 예시들이 전문가들에게 시간이 많이 걸리는 작업일 때에 특히 유용합니다.
지도/자율 학습은 적은 양의 분류된 데이터로 정확성을 크게 향상시킬 수 있는 의료용 이미지에 특히 유용합니다.
CT 스캔이나 MRI 같은 의료 이미지가 지도/자율 학습의 흔한 상황이라고 할 수 있습니다. 훈련 받은 방사선 전문의는 종양이나 질병을 위한 스캔의 일부를 살펴보고 분류할 수 있습니다. 모든 스캔을 일일이 분류하는 것은 너무 시간이 많이 걸릴 뿐만 아니라 비용도 많이 들 겁니다. 그러나 딥러닝 신경망은 분류된 데이터의 작은 부분만으로도 이점을 취할 수 있으며 완전한 자율 학습 모델보다 정확성을 높일 수 있습니다.
꽤 적은 양의 분류된 데이터 세트로 시작한 유명한 학습 방법은 생산적 적대 신경망(general adversarial networks, GANs)을 이용한 것입니다.
두 가지 딥러닝 신경망이 서로 앞서기 위해 경쟁하는 모습을 상상해 보세요. 그게 바로 생산적 적대 신경망(GAN)입니다. 두 신경망중 하나는 생성자(generator)로 불리며, 학습 데이터를 모방하는 새로운 데이터 포인트를 생성하려고 노력합니다. 다른 신경망은 감별자(discriminator)로 불리는데, 이렇게 생성된 새로운 데이터를 끌어와 이들이 학습 데이터의 일부인지 가짜인지를 판별합니다. 감별자는 원본으로부터 가짜를 더욱 능숙하게 구별해내고, 생성자는 확실한 가짜를 만드는 능력을 키우면서, 두 신경망은 양성 피드백 고리(positive feedback loop)에서 개선됩니다.
생산적 적대 신경망(GAN)이 작동하는 방법은 다음과 같습니다. “D”로 분류된 감별자는 G라는 생성자와 학습 데이터 세트 모두로부터 이미지를 보게 됩니다. 감별자는 생성자로부터 어떤 이미지가 진짜이고 어떤 이미지가 가짜인지 구별해내는 작업을 맡습니다.
강화 학습이란 무엇인가?
비디오 게임은 강화의 단서로 가득합니다. 레벨을 달성하고 뱃지를 받으세요. 특정 횟수의 움직임으로 악당을 물리치고 보너스를 받으세요. 함정에 빠지면, 게임 오버입니다.
이러한 단서들은 플레이어들이 어떻게 하면 다음 게임에서 더 잘할 수 있는지 학습하게 합니다. 피드백이 없다면, 플레이어들은 그저 다음 레벨로 올라가는 희망을 가진 채로 게임 환경에서 무작위의 행동을 취할 겁니다.
강화 학습은 이와 같은 원리로 작용합니다. 그리고 실제로 비디오 게임은 이런 종류의 연구를 위한 흔한 시험 환경입니다.
이러한 기계 학습에서 인공지능 에이전트는 특정한 목표를 달성하거나 특정한 작업에서의 성능을 개선시키기 위해 최선의 방법을 찾으려고 노력합니다. 에이전트가 목표를 향한 행동을 취하면 보상을 받습니다. 전반적인 목표는 가장 큰 최종 보상을 받기 위해 밟아야 하는 최고의 다음 단계를 예측하는 겁니다.
결정을 내리기 위해, 에이전트는 과거 피드백으로부터 배운 것과 더 큰 보상을 가져올 새로운 전략의 탐색에 의존합니다. 이는 장기적인 전략을 포함하는데요, 마치 체스 게임에서 당장 최선의 수가 장기전에서 이기게 해주지는 않듯이, 에이전트는 누적 보상을 극대화하기 위해 노력합니다.
이건 반복적인 과정입니다. 피드백의 횟수를 거듭할수록, 에이전트의 전략은 점점 더 나아집니다. 이 기법은 자율주행차 조종이나 창고 재고 관리 같은 업무에서 일련의 결정을 내리는 로봇을 학습시키는데 특히 유용합니다.
학교의 학생들처럼, 모든 알고리즘은 다르게 학습합니다. 하지만 이용 가능한 접근법이 다양하게 있다면, 신경망이 요령을 터득하는 걸 돕기 위해 가장 최고의 방법만 선택하면 됩니다.
카테고리: Deep Learning
태그: #인공지능 | Artificial Intelligence | Deep Learning | Machine Learning | 강화학습 | 기계학습 | 딥러닝 | 머신러닝 | 자율학습 | 지도학습
황인성(2019****19)6월 11일 오후 11:42
감사합니다 교수님! 이대로 Finalize해도 될 것 같습니다


















이상구(LEE SANGGU)6월 11일 오후 3:15
우리 책에 쓰여있는 내용은 이해 하셨지요? 위의 PCA 에서 말하려는 Key Idea 는 무엇인가요? 본인의 Comment 를 한 줄 달아 주세요^^
이상구(LEE SANGGU)6월 11일 오후 6:39
https://www.nature.com/articles/nbt0308-303 에 보면 Published: March 2008
What is principal component analysis? 가 네이처 저널에서 Markus Ringnér 가 쓴
Biotechnology 에 사용되는 PCA 를 잘 설명하고 있답니다^^
volume 26, pages303–304(2008)Cite this article
8473 Accesses
615 Citations
Principal component analysis (PCA) is a mathematical algorithm that reduces the dimensionality of the data while retaining most of the variation in the data set1. It accomplishes this reduction by identifying directions, called principal components, along which the variation in the data is maximal. By using a few components, each sample can be represented by relatively few numbers instead of by values for thousands of variables. Samples can then be plotted, making it possible to visually assess similarities and differences between samples and determine whether samples can be grouped.
이상구(LEE SANGGU)6월 11일 오후 6:41
키 아이디어는
Principal component analysis (PCA) is a mathematical algorithm that reduces the dimensionality of the data while retaining most of the variation in the data set.
It accomplishes this reduction by identifying directions, called principal components, along which the variation in the data is maximal.
By using a few components, each sample can be represented by relatively few numbers instead of by values for thousands of variables.
Samples can then be plotted, making it possible to visually assess similarities and differences between samples and determine whether samples can be grouped.
입니다.
민재필(2015****15)6월 12일 오전 7:29
아직 이해가 많이 부족하지만 저 저널을 읽은 후 느낀 점은 PCA가 거의 모든 분야에서 대용량의 데이터를 정리할 떄 유용하다는 것입니다. 저널에서 사용한 쥐의 예로 보자면 쥐가 60마리가 있는데 각 쥐마다 15개의 gene에 대해서 분석한다 하면 일반적인 분석 방법으로는 이 쥐들을 분류하는 것이 불가능할 것입니다. 하지만 PCA를 이용해서 각 쥐마다 PC score를 매기고 PC score 에 따라 그 쥐들을 분류한다면 그 쥐들에 대해서 연구하는데 훨씬 수월할 것입니다.
황인성(2019****19)6월 12일 오후 3:18
PCA(주성분 분석를 이해하는 데 있어 큰 도움이 되는 글이네요.
특히 그래프와 도표 및 그림과 같은 시각자료가 많아서 더 직관적으로 이해할 수 있었습니다.
김예훈(2020****54)6월 13일 오전 1:42
완전하지는 못하지만, 주성분 분석의 원리를 이해하는 데 많은 도움이 되었습니다.
좋은 자료 감사합니다!

김용훈(2019****23)6월 14일 오전 00:09
교수님께서 이렇게 여러번 수강생들을 각성시키는 한마디를 남기실 때마다 학생들에 대한 교수님의 애정이 느껴집니다!
황인성(2019****19)6월 14일 오전 2:28
열심히 노력하도록 하겠습니다!

이상구(LEE SANGGU)6월 12일 오후 1:41
내가알려 준 공지는 다음과 같습니다.
1. 이번 6월 레포트 제출 기한은 18일까지이며 선택사항인 발표 영상 제출도 18일까지 하면 됩니다^^
단, A+ , B+ 를 원하는 학생은 둘 다를 15일 까지 하시기를 권합니다. (또는 12일~15일 사이에 제출하고 나에게 이대로 발표해도 되나요? 조언을 바랍니다 하고 물어 보면 내가 바로 조언을 줄것입니다. 그 후 고쳐서 그것을 발표한 동영상이 물론 완성도가 높을 것이고, 이것을 18일 까지 제출해도 됩니다)
2. 6월 레포트 양식은 여러분이 제출한 May PBL 보고서 를 업데이트하셔서 제출하시면 됩니다.
(맞습니다. 6월에 활동한 사항들을 May 레포트에 추가한 후 그 레포트를 제출하면 됩니다)
3. 레포트를 다 작성한 후에는 Final PBL -EXAM 과제함 에 제출하시면 됩니다. (아마 목록 제일 아래에 있을 것입니다.)
김승한(2012****19)6월 12일 오후 7:50
궁금했던 사항이 정리되었습니다. 감사합니다
나우주(2020****91)6월 12일 오후 7:52
좋은 정보 감사합니다.
김용훈(2019****23)6월 13일 오전 10:50
이 글 덕분에 궁금한 점들이 정확히 해결되었습니다!
김예훈(2020****54)6월 13일 오후 11:46
상세하게 설명해주셔서 감사합니다.

이상구(LEE SANGGU)6월 12일 오후 8:54
1. 여러 이유가 있지만 그래야만 등식이
성립하니까 ... 그렇고
2. 당연히 모종의 표현 이지요. 시그마 를 기억하시라는 의미 입니다
황인성(2019****19)6월 13일 오전 2:20
질문자님과 교수님 덕분에 간과했던 개념에 대해 다시 상기하는 것과 그 궁금증을 해결할 수 있었습니다. 감사합니다!

황인성(2019****19)6월 14일 오전 1:07
저번에 제가 교수님에게 물어본 적 있는데 그렇다고 하셨습니다.
보고서 작성 시에도 두 경우 모두 QnA에 1회 참여한 것으로 간주하실 겁니다.
이상구(LEE SANGGU)6월 14일 오전 3:55
횟수는 ... Q 와
A 모두 적으세요
양으로 같이 평가합니다.
그 아래 질 평가를
위하여, 매주 꾸준히를 보며 다음 ... 본인이 쓴 글 중 ... 유의미한 기여를 ... 적으시면 됩니다.
Ch 4장. (Math4AI) 인공지능을 위한 기초수학 Take-Home Exam 1
(Math4AI) 인공지능을 위한 기초수학 TakeHome-1 (Due: April 2. 11AM)
[ PBL 보고서에 붙여서 제출하세요^ ]
Major(학과): 전자전기공학부 학년: 1 학번: 2020310654 Name(이름): 김예훈
※ Sage를 활용하여 다음 물음에 답하시오.
(모든 답은 http://matrix.skku.ac.kr/math4ai/ 안에 있습니다. 모르는 것은 QnA에서 문의하면서 해결하세요)
1. random_matrix 명령어를 이용하여
행렬
를 생성하여 프린트하라.
[Python/Sage 실습] http://sage.skku.edu/ or https://sagecell.sagemath.org/
[SageMath code]
A = random_matrix(ZZ, 10, 10, x=0, y=10)
print(A)
#계산의 편의를 위해, [0, 9]로 범위를 한정
[1 5 6 3 5 3 9 0 4 3]
[4 2 7 9 7 8 9 6 0 6]
[0 0 4 3 8 0 9 1 0 9]
[9 3 1 7 3 8 4 9 0 5]
[2 2 2 6 1 0 7 7 8 0]
[3 3 9 6 6 6 6 7 1 9]
[9 0 0 0 5 2 1 2 2 9]
[7 2 2 0 9 8 2 0 9 5]
[5 2 2 5 3 4 8 4 7 1]
[0 7 8 4 1 9 7 7 9 2]
[Answer]
2. 행렬 A (
)의 RREF를 구하여라.
[SageMath code]
print(A.rref())
[1 0 0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0]
[0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 1 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0]
[0 0 0 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 1]
[Answer]
3.
을 이용하여
의 역행렬이 존재하면 계산하라.
[SageMath code]
I = identity_matrix(10)
AI = A.augment(I)
print(AI.rref().submatrix(0, 0, 10, 10)) # Identity인지 확인하기 위한 출력
print()
print(AI.rref().submatrix(0, 10, 10, 10)) # A의 역행렬
[1 0 0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0]
[0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 1 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0]
[0 0 0 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 1]
[1508311/37037177 –11295544/37037177 –2494991/37037177 2575778/37037177 –6636398/37037177 12833126/37037177 –4803199/37037177 –209883/37037177 15400086/37037177 -6897827/37037177]
[9713837/37037177 6550477/37037177 –2355226/37037177 2961455/37037177 8701760/37037177 –11216478/37037177 5705311/37037177 222630/37037177 -19845827/37037177 3139283/37037177]
[-275740/37037177 –13361727/37037177 –2798994/37037177 –659203/37037177 -8216932/37037177 20213095/37037177 –8551403/37037177 168243/37037177 18246996/37037177 -7279448/37037177]
[5442856/37037177 50001316/37037177 –10640966/37037177 –15558166/37037177 25536234/37037177 –43138874/37037177 31900910/37037177 –4572281/37037177 -48436539/37037177 14831340/37037177]
[779671/37037177 –21572038/37037177 4886496/37037177 9954115/37037177 -5281573/37037177 19854847/37037177 –19335665/37037177 7737768/37037177 13355332/37037177 -11686317/37037177]
[-3698008/37037177 5979241/37037177 1067582/37037177 –1107687/37037177 -2978994/37037177 –6313886/37037177 2123586/37037177 -179133/37037177 -641694/37037177 5199417/37037177]
[-2189673/37037177 –15980622/37037177 5929766/37037177 4982476/37037177 -11146453/37037177 12024568/37037177 –10264680/37037177 -1117578/37037177 21538849/37037177 -3808737/37037177]
[-5158576/37037177 –35049124/37037177 7901360/37037177 13661543/37037177 -12737049/37037177 31280337/37037177 –24828123/37037177 4417632/37037177 29312791/37037177 -11560180/37037177]
[-486485/37037177 14373244/37037177 –2820020/37037177 -7108664/37037177 8573625/37037177 –13476928/37037177 11109801/37037177 –470805/37037177 -13287511/37037177 6544585/37037177]
[378073/37037177 28321554/37037177 –2245019/37037177 -9869493/37037177 12396304/37037177 –27752887/37037177 23377605/37037177 -4801967/37037177 -28631495/37037177 13772569/37037177]
[Answer]
4. 행렬 A (
) 의 수반행렬을 계산하라.
[SageMath code]
print(A.adjoint())
#adjugate()과 동일함
/home/sage/sage/src/bin/sage-ipython:1: DeprecationWarning: adjoint is deprecated. Please use adjugate instead.
See http://trac.sagemath.org/10501 for details.
#!/usr/bin/env sage-python
[ 1508311 -11295544 -2494991 2575778 -6636398 12833126 -4803199 -209883 15400086 -6897827]
[ 9713837 6550477 -2355226 2961455 8701760 -11216478 5705311 222630 -19845827 3139283]
[ -275740 -13361727 -2798994 -659203 -8216932 20213095 -8551403 168243 18246996 -7279448]
[ 5442856 50001316 -10640966 -15558166 25536234 -43138874 31900910 -4572281 -48436539 14831340]
[ 779671 -21572038 4886496 9954115 -5281573 19854847 -19335665 7737768 13355332 -11686317]
[ -3698008 5979241 1067582 -1107687 -2978994 -6313886 2123586 -179133 -641694 5199417]
[ -2189673 -15980622 5929766 4982476 -11146453 12024568 -10264680 -1117578 21538849 -3808737]
[ -5158576 -35049124 7901360 13661543 -12737049 31280337 -24828123 4417632 29312791 -11560180]
[ -486485 14373244 -2820020 -7108664 8573625 -13476928 11109801 -470805 -13287511 6544585]
[ 378073 28321554 -2245019 -9869493 12396304 -27752887 23377605 -4801967 -28631495 13772569]
[Answer]
5. 행렬 A (
) 의 rank와 nullity를 구하여라.
[SageMath code]
print(A.rank())
print(A.right_nullity())
10
0
[Answer]
6. 행렬 A (
) 의 null space를 계산하라.
[SageMath code]
print(A.right_kernel())
Free module of degree 10 and rank 0 over Integer Ring
Echelon basis matrix:
[]
[Answer]
# Homogeneous Ax = 0에 대하여 x의 해가 0(Trivial)임
7. 행렬 A (
) 의 열벡터(행벡터)가
의 기저가 될 수 있는지 조사하여라.
[SageMath code]
print(A.rank())
print(A.right_nullity())
10
0
[Answer]
# 10개의 1차 독립(Linearly Independent)인 벡터의 집합이 존재하므로, 이 벡터들은 기저가 될 수 있다.
8. 행렬 A (
) 의 고유값과 고유벡터를 계산하라.
[SageMath code]
print(A.eigenvalues())
print()
print(A.eigenvectors_right())
[-10.34664879334329?, -1.346714072986566?, 3.745323731418680?, 43.17775540832886?, -5.182125567303010? - 6.538899398626154?*I, -5.182125567303010? + 6.538899398626154?*I, -1.371745900588939? - 2.483984054056398?*I, -1.371745900588939? + 2.483984054056398?*I, 4.439013331183106? - 3.101606912589896?*I, 4.439013331183106? + 3.101606912589896?*I]
[(-10.34664879334329?, [(1, -2.51089476073725?, 5.56491782261586?, -5.22654254753054?, -10.06918113591400?, -1.78729760181255?, 9.29689009396355?, 15.19640043337409?, -4.24379531802050?, -9.16369512378097?)], 1), (-1.346714072986566?, [(1, -1.376858640445535?, 0.6727480552579434?, -6.000727624487718?, 1.373867868821672?, 0.8414591240498986?, 3.084020468068808?, 4.130304248413794?, -2.288970145033076?, -3.163582225862809?)], 1), (3.745323731418680?, [(1, -2.035608484584319?, 1.833179474244769?, -3.483914217575519?, -1.466212673751827?, 0.03381093266770490?, 2.016278128415617?, 0.0821171666971117?, 0.0742934764731741?, 0.3873284902403315?)], 1), (43.17775540832886?, [(1, 1.56155499210?, 0.84898616988?, 1.40063185499?, 0.89175537727?, 1.52393612392?, 0.81524592423?, 1.17305049038?, 1.05866147877?, 1.49057445746?)], 1), (-5.182125567303010? - 6.538899398626154?*I, [(1, 0.26027443299361? - 0.74297939156571?*I, 0.57476861128018? - 0.75733344799579?*I, -1.16754772973544? - 0.27811131674954?*I, -0.237215461955055? - 0.770351678292132?*I, -0.09384816565932? + 0.09913409229143?*I, -0.69514784908307? + 0.82963492767137?*I, 0.65123759517533? + 1.26636258506459?*I, 0.00897696420202? - 0.46114377022802?*I, 0.08619279364900? + 0.16218301462728?*I)], 1), (-5.182125567303010? + 6.538899398626154?*I, [(1, 0.26027443299361? + 0.74297939156571?*I, 0.57476861128018? + 0.75733344799579?*I, -1.16754772973544? + 0.27811131674954?*I, -0.237215461955055? + 0.770351678292132?*I, -0.09384816565932? - 0.09913409229143?*I, -0.69514784908307? - 0.82963492767137?*I, 0.65123759517533? - 1.26636258506459?*I, 0.00897696420202? + 0.46114377022802?*I, 0.08619279364900? - 0.16218301462728?*I)], 1), (-1.371745900588939? - 2.483984054056398?*I, [(1, -0.8423485417056449? - 0.5326671702221328?*I, 1.364311663702618? - 0.4553116484956445?*I, -2.267668255191389? - 0.7143926625733066?*I, 0.3603354195972626? - 0.6415667729572941?*I, -0.0271036416713567? + 0.9501607653307203?*I, 0.5865649181471099? + 0.922057752971398?*I, 1.375675302407585? + 0.638791387759348?*I, -0.702732993079203? - 0.504633055614451?*I, -1.243795624227226? - 0.2894121032474712?*I)], 1), (-1.371745900588939? + 2.483984054056398?*I, [(1, -0.8423485417056449? + 0.5326671702221328?*I, 1.364311663702618? + 0.4553116484956445?*I, -2.267668255191389? + 0.7143926625733066?*I, 0.3603354195972626? + 0.6415667729572941?*I, -0.0271036416713567? - 0.9501607653307203?*I, 0.5865649181471099? - 0.922057752971398?*I, 1.375675302407585? - 0.638791387759348?*I, -0.702732993079203? + 0.504633055614451?*I, -1.243795624227226? + 0.2894121032474712?*I)], 1), (4.439013331183106? - 3.101606912589896?*I, [(1, 3.653883579811299? - 5.376088154760185?*I, -4.363347169592250? + 1.875026228725014?*I, 7.920439419750889? - 6.575343928831552?*I, -0.501155157047730? + 8.38782186205162?*I, -1.667446196927572? - 5.801207641991334?*I, -1.233911727041193? + 0.6028410067261679?*I, -4.009826558514877? + 5.532630905453383?*I, 1.611838207847837? + 4.238262692795840?*I, -0.08189090719060287? - 4.886465980215780?*I)], 1), (4.439013331183106? + 3.101606912589896?*I, [(1, 3.653883579811299? + 5.376088154760185?*I, -4.363347169592250? - 1.875026228725014?*I, 7.920439419750889? + 6.575343928831552?*I, -0.501155157047730? - 8.38782186205162?*I, -1.667446196927572? + 5.801207641991334?*I, -1.233911727041193? - 0.6028410067261679?*I, -4.009826558514877? - 5.532630905453383?*I, 1.611838207847837? - 4.238262692795840?*I, -0.08189090719060287? + 4.886465980215780?*I)], 1)]
[Answer]
□ 설명(소감)
처음에는 A라는 랜덤 행렬을 만들 때, 그 행렬의 값이 커서 행렬의 형태가 깔끔하지 않게 나오는 문제가 있었다. 그래서 값을 조정할 수 있는 기능이 있을까 해서, help(random_matrix) 옵션을 참조하였다. 다행이도, random_matrix(m, n, x=k, y=l)에서 k와 l의 값을 입력해서 출력되는 값의 범위를 조정할 수 있다는 것을 깨달았다. 그리고 Sage는 Python을 기반으로 하기 때문에, 입력된 값의 범위가 [k, l)일 것이라는 것을 예측하였다. 확인해보니 실제로 그러하였다. 0에서 9까지의 범위에서 출력하려면, k는 0으로, l은 10으로 입력하면 되는 것이다. 그리고 수반행렬을 구하는 작업에서, .adjoint()대신 .adjugate()로 리다이렉트(Redirect)되는 현상을 발견하였다. 이는 Sagemath 9.0으로 업데이트되면서, .adjoint()라는 옵션을 없애고, 대신 .adjugate()옵션을 사용하도록 하는 권고조치라는 것을 깨달았다.
9. 정사영과 최소제곱해(least square solution)에 대하여 간략하게 설명하시오.
정사영 : 대상(A)을 다른 대상(B)에 수직적으로 투영하는 것을 정사영이라고 하며, 이를 B위로의 A의 정사영(Projection of A onto B)라고 표현한다.

https://commons.wikimedia.org/wiki/File:Gram%E2%80%93Schmidt_process.svg
최소제곱해 : |Ax-b|=K에서 K의 값을 최소로 할 수 있는 벡터 x를 구하는 과정을 최소제곱문제라고 하며, 근사적으로 구한 x를 최소제곱해라고 한다. 아래의 그림처럼 데이터들이 직교좌표계에 점으로 묘사되어 있으며, 그 데이터의 점들이 직선의 양상을 보이나, 정확히 직선이 아닌 경우를 상상해보자. 이러한 경우에는 모든 데이터가 하나의 직선으로 표현될 수 없다. 그렇기 때문에, 어떤 하나의 직선을 결정하면서, 모든 데이터의 오차가 최소가 되어야만 한다. 바로 이것이 최소제곱문제이며, 그 해를 찾았을 경우 그것이 최소제곱해가 되는 것이다.
https://commons.wikimedia.org/wiki/File:Linear_regression.svg
10. Gram-Schmidt 정규직교화법에 대하여 간략하게 설명하시오.

Gram-Schmidt 정규직교화법 : 정규직교화법이란, 정규직교기저 집합(각각의 벡터들이 직교함)를 구하는 작업이다. 정사영 공식으로 각각의 벡터에 대하여 계산을 연속적으로 수행하고, 후에 벡터의 크기를 1로 만들면, 정규직교기저 집합을 구할 수 있다.
11. QR 분해에 대하여 간략하게 설명하시오.
행렬 A가 rank k인 m*k 행렬이라면, A=QR로 분해가능하다. 여기서 Q는 A의 열공간 Col(A)의 정규직교기저로 만들어진 m*k행렬이고, R은 가역인 크기 k*k의 상삼각행렬이다.
행렬 A를 A = QR로 나타내는 방법으로, 행렬 분해의 일종이다. Q는 정규직교기저로 만든 행렬이고, R은 상삼각행렬(Echelon Form과 유사하다)이며, 이는 행렬 A를 구성하는 부속이라고 볼 수 있다. 이 과정을 진행하기 위해서는 정규직교기저 집합이 필요하기에, Gram-Schmidt 정규직교화법을 사용해야 한다.
12. 선형변환이 단사일 필요충분조건에 대하여 간략하게 설명하시오.
단사(injective, 1:1 대응)란 a != b이면, f(a) != f(b)를 만족하는 함수(f(x))를 의미한다. 선형변환(Linear Transformation)이 단사라면, 표준행렬(Standard Matrix)에 대한 행렬 방정식 Ax=0(Homogeneous)에서, 일차 독립(linearly Independent)을 만족해야 한다. 또는 커널(Kernel)이 {0}이여야 한다. 전자와 후자는 모두 동일한 의미를 다르게 표현한 것이다.
13. 행렬의 직교대각화 (orthogonally diagonalizing)에 대하여 간략하게 설명하시오.
동일 크기의 N*N 행렬 A, B에 대하여, B = P^TAP를 만족하는 N*N 행렬 P가 존재하면, B는 A에 대하여 직교 닮음이며, A는 가(可)직교대각행렬 또는 직교대각화가 가능한 행렬이라고 한다. 그리고 P는 A의 직교대각화의 원인이 되는 행렬 또는 A를 직교대각화하는 행렬이다.
14. 행렬의 SVD (특이特異값 분해, 특잇값 분해, singular value decomposition)에 대하여 간략하게 설명하시오.
행렬을 분해하는 또다른 방법으로, 행렬 A가 가(可)대각행렬일 경우 적용될 수 있다. 바로 A = UΣV^T로 분해가 이루어지게 된다. Σ는 대각행렬로 출력이 되며, 만약 A가 가(可)직교대각행렬이라면, U = V가 성립한다. 즉 13번에서 설명했던 직교대각화의 내용이 적용되는 것이다.

15. 일반화된 역행렬 (pseudo-inverse, Moore-Penrose Generalized Inverse)에 대하여 간략하게 설명하시오.

A가 가역행렬이며 정사각행렬인 경우, A = UΣV^T의 역행렬을 일반화된 역행렬(Pseudo Inverse Matrix)이라고 한다. 즉, A^-1 = (V^T)^-1Σ^-1U^-1이다. 여기서 U와 V가 직교행렬이므로, 각각 U^-1=U^T, V^-1=V^T가 성립한다. 그래서 A^-1 = VΣ^-1U^T로 바꿀 수 있다. 만약 A의 역행렬이 존재하지 않을 경우, 이 식은 유효하지 않다.
16. 이차형식의 정부호, 부정부호(indefinite)에 대하여 간략하게 설명하시오.

대칭행렬 A에 대하여, 행렬 A의 고윳값(Eigenvalue) 전체가 양수일 때는 X^TAX가 양의 정(定)부호를 지니며, 음수일 때는 X^TAX가 음의 정(定)부호를 지닌다. 또한 고윳값의 전체가 양수도 음수도 아닌 경우가 있는데, 이에 대해서는 X^TAX가 부정(不定)부호를 지닌다고 말한다.
Final Comment (소감)
학습한 개념들을 정리해보면서, 개념들 간의 연결 관계가 긴밀하다는 것을 깨달았습니다. 한 개념으로부터 다른 개념을 이해하면서, 더 심화된 내용까지도 이해할 수 있었습니다. 아직 몇 가지 부분들은 학습이 제대로 이루어지지 않아서 미흡한 점이 있을 수 있지만, 나름대로의 개념을 정립하기 위해 노력하였습니다. 남은 부분들을 조속히 끝마친 후에, Part2(미적분)에서 더 열심히 하도록 하겠습니다.
Ch 5장. (Math4AI) 인공지능을 위한 기초수학 Take-Home Exam 2
Major(학과):전자전기공학부 학년:1 학번:2020310654 Name(이름):김예훈
(Due: April 23. 목 11AM) [ PBL 보고서에 붙여서 제출하세요^ ]
※ Sage를 활용하여 아래 문제를 변형하고, 코드를 바꾸고, 답을 구하여, QnA에 한 문제씩 공유하고, Comment 받아서, 수정 후 Finalized 하여 시험문제지에 채워서 제출하시면 됩니다.
(모든 답은 http://matrix.skku.ac.kr/math4ai/ 안에 있습니다. QnA에서 문의하면서 해결하세요)
[명령어 모음] http://matrix.skku.ac.kr/Lab-Book/Sage-Lab-Manual-1.htm
[강의동영상] http://matrix.skku.ac.kr/2019-album/
[참고교재] http://matrix.skku.ac.kr/Cal-Book1/
[참고 연습문제와 답안과 Code] http://matrix.skku.ac.kr/Cal-Book/
* 일변수함수와 미적분 PBL 보고서 http://matrix.skku.ac.kr/PBL/
* 다변수함수와 미적분 PBL 보고서 http://matrix.skku.ac.kr/PBL2/
1. 함수
의 그래프를 그려라.
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f1(x) = x
f2(x) = 4 - x
# graph f1 on (0, 2), and f2 on (2, 4)
plot(piecewise([((0, 2), f1), ((2, 4), f2)]), (x, 0, 4))
<문제 변형>
함수 f(x) = e^(-x)-1 (-1 < x < 0) / sin(x) (0 < x < pi) / x-pi (4 > x > pi)의 그래프를 그리시오.
#함수 정의
f(x) = e^(-x)-1 # -1 < x < 0
g(x) = sin(x) # 0 < x < pi
h(x) = x-pi # pi < x < 4
#plot 선언 후, EXP1에 할당
EXP1 = plot(piecewise([[(-1, 0), f(x)], [(0, pi), g(x)], [(pi, 4), h(x)]]), xmin=-1, xmax=4)
#EXP1 출력
show(EXP1)

2. 만일 극한
와
이 존재하면, 구하여라.
var( 'x, y' ) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = sin(x)/abs(cos(x))
g(y) = x^2/sin(y)
A = limit(f(x), x = pi/2) # x = pi/2일 때 극한
B = limit(g(y), y = pi/4) # x = pi/4일 때 극한
print(A)
print()
print(B)
+Infinity # 극한이 존재하지 않는다. 발산(diverse)한다.
sqrt(2)*x^2 # 극한이 존재한다. 수렴(converse)한다. ■
<문제 변형>
극한
가 존재하면 값을 구하시오. 만일 값이 정의되지 않는다면(Not defined), 그 이유를 설명하시오.
f(x) = tan(x)/abs(x - pi/2) #함수 정의
limit(f(x), x = pi/2, dir="-") #좌극한 확인
limit(f(x), x = pi/2, dir="+") #우극한 확인
+Infinity
-Infinity
좌극한과 우극한이 모두 무한대이기 때문에, 극한값은 존재하지 않는다.
3.
의 도함수(derivative)
와 2계도함수
와 3계도함수를 구하여라.
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^2 + 4*e^x
print(diff(f(x), x)) # dy/dx
print(diff (diff(f(x), x), x)) # 2계도함수
print(diff (diff (diff(f(x), x), x), x)) # 3계도함수
2*x + 4*e^x
2 + 4*e^x # 2계도함수
4*e^x # 3계도함수 ■
<문제 변형>
의 제 1계, 제 2계, 제 3계 도함수를 각각 구하시오.
f(x) = x^3 + 2*e^x + ln(x) #함수 정의
#for문을 이용한 연속적인 처리
for n in range(3):
f(x) = diff(f(x), x)
print("제 %d계 도함수 :" %(n+1), f(x))
제 1계 도함수 : 3*x^2 + 1/x + 2*e^x
제 2계 도함수 : 6*x - 1/x^2 + 2*e^x
제 3계 도함수 : 2/x^3 + 2*e^x + 6
4. 점
에서 곡선
에 대한 접선의 방정식을 구하여라.
var('x') #[실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^2 + sqrt(x)
df(x) = diff(f(x), x) # 도함수 구하기
y(x) = df(4)*(x - 4) + 18 # 기울기(df(4))를 구하여 접선의 방정식 구하기
print(y(x))
p1 = plot(f(x), x, 0, 10, linestyle = "--", color = 'blue') # 함수 f(x) 그리기
p2 = plot(y(x), x, 0, 10, color = 'red') # 접선 y(x) 그리기
show(p1 + p2) # 함수 f(x)와 접선 y(x)를 동시에 보여주기
33/4*x - 15 # 접선의 방정식
■
<문제 변형>
점 (0, 2)에서 함수
에 대한 접선의 방정식을 구하시오.
f(x) = cos(2*x) + e^x #함수 정의
f1(x) = diff(f(x), x) #함수 미분
y(x) = f1(0)*(x - 0) + f(0) #접선 정의
print("y =", y(x)) #출력
y = x + 2


5.
에서 연속함수
의 최댓값과 최솟값을 구하여라.
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^3 - x
p1=plot (f(x), x, -4, 4)
show (p1)
solve(diff(f(x)) == 0, x) # look for the flection points of df, -1/3*sqrt(3), 1/3*sqrt(3)
ma = max(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find maximum value
mi = min(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find minimum value
print('최댓값 =', ma)
print('최솟값 =', mi)
최댓값 = 24 #
에서 연속함수
의 최댓값, 24
최솟값 = -24 #
에서 연속함수
의 최솟값, -24 ■
<코드 변형>
#함수 선언
f(x) = x^3 - x
#1계 도함수 선언
f1(x) = diff(f(x), x)
#빈 리스트 선언
val = []
#끝 구간 값
val.extend([f(-3), f(3)])
#1계 도함수 근 찾기
critical = solve(f1(x) == 0, x)
#근 대입
for n in critical:
val.append(f1(n.rhs()))
#그래프 출력
G1 = plot(f(x))
show(G1)
#출력
print("최댓값 :", max(val))
print("최솟값 :", min(val))

6. Newton’s Method (뉴턴 방법) 에 대하여 아는대로 서술하시오,
http://matrix.skku.ac.kr/Mobile-Sage-G/sage-grapher-newton_method.html
뉴턴 방법(Newton’s Method)은 근을 근사적으로 구하는 방법으로, 함수 f(x)와 그 함수의 도함수 f’(x)를 연속적으로 이용하여 구한다. 뉴턴 방법은 일종의 점화식(Recurrence Relation)으로 표현되며, 반복 횟수가 많으면 많을수록 근의 값에 가까워진다.
![]()
7. 적분
을 구하여라.
f(x) = 5/(1 - x^2) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
P1 = plot(f(x), 0.5, sqrt(3)/2, fill = "axis") # fill the area between f(x) and x-axis
P2 = plot(f(x), 0.3, sqrt(3)/2 + 0.05, color = 'red') # graph f(x)
show(P1 + P2) # show P1 and P2
print(integral(f(x), x, 1/2, sqrt(3)/2).simplify_full()) # integrate f(x) on ![]()
print((integral(f(x), x, 1/2, sqrt(3)/2).simplify_full()).n(digits=5))
-5/2*log(-sqrt(3) + 2) + 5/2*log(sqrt(3) + 2) - 5/2*log(3)
<문제 변형>
적분
을 구하시오.
#함수 선언
f(x) = e^(x^2)+4*x
#[2, 4]에서 적분 수행
result = integral(f(x), x, 2, 4)
#출력
print(numerical_approx(result))
1.14940818196216e6
8.
상에 곡면(평면)
을 그려라. (아래 좌측 그림)
var('x, y, z')
implicit_plot3d(x + y == 5, (x, -5, 5), (y, -5, 5), (z, -5, 5)) # graph
on in ![]()
<문제 변형>
상에 그래프
을 그리시오.
#변수 선언
var('x, y, z')
#그래프 출력
implicit_plot3d(x+y+z == 1, (x, -3, 3), (y, -3, 3), (z, -3, 3))

9. 아래 2변수 함수의 그래프를
에서 Sketch 하시오,
(a) ![]()
(b) ![]()
[SageMath code]
# (a) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
var('x, y, z')
implicit_plot3d(z == -2*x^2 + 7*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
# (b)
var('x, y, z')
implicit_plot3d(z^2 == 5*x^2 + 3*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
[Answer]

□ 설명
x, y, z를 변수로 선언하고, implicit_plot3d 명령어를 이용하여 주어진 방정식들의 그래프를 그렸다. (a)는
형태로 plot3d 명령어를 사용하여도 되지만 실제 그림을 그려보니 implicit_plot3d가 곡면의 모양을 더 잘 보여준다. (a)는 Hyperbolic paraboloid이고, (b)는 Cone이다.
<문제 변형>
다음 함수의 그래프를
에서 그리시오.
(1) ![]()
(2) ![]()
#변수 선언
var('x, y, z')
#그래프 출력
fig1 = implicit_plot3d(-2*x^3 + 7*y^3 == z^2, (x, -3, 3), (y, -3, 3), (z, -3, 3), opacity = 0.4)
fig2 = implicit_plot3d(4*x + 2*y == z^2, (x, -3, 3), (y, -3, 3), (z, -3, 3), opacity = 0.4, color = "green")
show(fig1 + fig2)

10. 벡터
와
의 내적, 외적, 사잇각을 구하여라.
a = vector([6, -3, 4]) # https://sagecell.sagemath.org/
b = vector([2, 0, -3])
s = b.dot_product(a) # find the dot product of a and b
c = b.cross_product(a) # find the cross product of a and b
theta = arccos(a.dot_product(b)/(a.norm()*b.norm()))
# find the angle between a and b
print('내적(inner product, dot product)은 ', s)
print('외적(cross product)은', c)
print('벡터 a와 b 의 사잇각(angle)은', theta)
내적(inner product, dot product)은 0
외적(cross product)은 (-9, -26, -6)
벡터 a와 b 의 사잇각(angle)은 1/2*pi ■
<문제 변형>
벡터 a = (3, 5, 2) , b = (2, 7, 4)의 내적, 외적(Cross Product), 사잇각을 구하시오.
#벡터 선언
a = vector([3, 5, 2])
b = vector([2, 7, 4])
#각 처리
deg = a.dot_product(b)/(a.norm()*b.norm()).n()
#출력
print("내적 : ", a.dot_product(b))
print("외적 :", a.cross_product(b))
print("사잇각 :", acos(deg))
내적 : 49
외적 : (6, -8, 11)
사잇각 : 0.294563206194232
11. 벡터함수
에 대하여
을 구하고,
일때의 위치벡터
와 접선벡터
를 그려라.
var('t')
x(t) = cos(t)
y(t) = t
r(t) = (x(t), y(t))
dr(t) = (diff(x(t), t), diff(y(t), t))
print("r'(t) =", dr(t)) # ![]()
t0 = pi/4
p1 =
p2 =
p = parametric_plot((x(t), y(t)), (t, 0, 2*pi)) # Sketch curve
utv = line([p1, p2], color = 'red', thickness = 2) # Sketch tangent vector
show(p + utv)
r'(t) = (-sin(t), 1) # 접선벡터
■
<문제 변형>
벡터함수
에 대하여,
일때의 위치벡터와 접선벡터를 그리시오.
#변수 선언
var('t')
#함수 선언
f(t) = sin(t)
g(t) = cos(t)
h(t) = tan(t)
r(t) = [f(t), g(t), h(t)]
#함수 미분
f1(t) = diff(f(t), t)
g1(t) = diff(g(t), t)
h1(t) = diff(h(t), t)
r1(t) = [f1(t), g1(t), h1(t)]
#위치 벡터
print(r(pi/3))
#접선 벡터
print(r1(pi/3))
(1/2*sqrt(3), 1/2, sqrt(3))
(1/2, -1/2*sqrt(3), 4)
12.
에서 곡선
의 길이(length)를 구하여라.
var('t') # https://sagecell.sagemath.org/
r(t) = (4*t, 3*cos(t), 3*sin(t)) # Define r(t)
dr = diff(r(t), t)
s(t) = dr.norm()
print(integral(s(t), t, -5, 5)) # length of the curve
parametric_plot3d(r(t), (t, -5, 5)) # Sketch curve
50 # 곡선의 길이는
■
<문제 변형>
에서 곡선 r(t) = (t, sin(t), cos(t))의 길이를 구하시오.
#변수 선언
var('t')
#함수 선언
f(t) = t
g(t) = sin(t)
h(t) = cos(t)
r(t) = [f(t), g(t), h(t)]
#함수 미분
f1(t) = diff(f(t), t)
g1(t) = diff(g(t), t)
h1(t) = diff(h(t), t)
r1(t) = [f1(t), g1(t), h1(t)]
#길이 구하기
l(t) = r1(t).norm()
#적분
integral(l(t), t , 0, 2*pi)
2*sqrt(2)*pi
13. 함수
의 2계 편도함수(2nd-order partial derivative) 4개를 모두 구하여라.
var('x, y') # https://sagecell.sagemath.org/
f = sin(x - y) + exp(-x*y)
fxx = diff(f, x, 2)
fyy = diff(f, y, 2)
fxy = diff(f, x, y)
fyx = diff(f, y, x)
print("fxx =", fxx)
print("fyy =", fyy)
print("fxy =", fxy)
print("fyx =", fyx)
fxx = y^2*e^(-x*y) - sin(x - y)
fyy = x^2*e^(-x*y) - sin(x - y)
fxy = x*y*e^(-x*y) - e^(-x*y) + sin(x - y)
fyx = x*y*e^(-x*y) - e^(-x*y) + sin(x - y) ■
<코드 변형>
#변수 선언
var('x, y')
#함수 선언
f(x, y) = sin(x - y) + exp(-x*y)
#반복 처리를 위한 리스트
ls = [x, y]
#반복 처리
for n1 in range(2):
g(x, y) = diff(f(x, y), ls[n1])
for n2 in range(2):
print(str(ls[n1]) + str(ls[n2])," : " ,diff(g(x, y), ls[n2]))
xx : y^2*e^(-x*y) - sin(x - y)
xy : x*y*e^(-x*y) - e^(-x*y) + sin(x - y)
yx : x*y*e^(-x*y) - e^(-x*y) + sin(x - y)
yy : x^2*e^(-x*y) - sin(x - y)
14.
일 때
를 구하여라.
var('u, v, s, t') # https://sagecell.sagemath.org/
x = u^2 + v^2
y = 2*u*v
z = s^2*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())
# simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
dz/du = 10*u^4*v + 12*u^2*v^3 + 2*v^5
dz/dv = 2*u^5 + 12*u^3*v^2 + 10*u*v^4 ■
<문제 변형>
일 때,
를 구하시오.
#변수 할당
var('a, b, u, v')
#식 할당
z(a, b) = a^2 + 4*b
#x, y는 대표값의 기능을 수행하기에 변수에서 제외함
x = u + v
y = u - v
#미분 수행 후 출력
print(diff(z(x, y), u))
2*u + 2*v + 4
15. 점
에서
축의 양의 방향과 이루는 각(angle)이
인 단위벡터
![]()
방향으로의 함수
의 방향도함수를 구하여라.
[Find ![]()
]
https://sagecell.sagemath.org/
var('x, y') # https://sagecell.sagemath.org/
f(x, y) = x^3 - 3*x*y + 4*y^2
u = vector([cos(pi/6), sin(pi/6)])
gradf = f.gradient() # 함수 f의 그래디언트
print("Duf(1,2) =", gradf(1, 2).dot_product(u))
Duf(1,2) = -3/2*sqrt(3) + 13/2 #
where
■
<문제 변형>
방향 벡터가
일 경우,
에서 (3, 2)일 때의 방향도함수를 구하시오.
#변수 선언
var('x, y')
#함수 선언
f(x, y) = x*y + x^3 + y^2
#방향벡터 선언
direction = vector([1/2, sqrt(3)/2])
#그레디언트 계산
g = f.gradient()
#내적 후 출력
numerical_approx(g(3, 2).dot_product(direction))
20.5621778264911
16. 함수
의 임계점을 모두 구하여라.
var('x, y')
f(x, y) = 4*x*y*exp(-x^2 - y^2)
gradf = f.gradient() # 함수 f의 그래디언트
solve([gradf[0] == 0, gradf[1] == 0], x, y)
[[x = 0, y = 0], [x = -1/2*sqrt(2), y = -1/2*sqrt(2)], [x = 1/2*sqrt(2), y = -1/2*sqrt(2)], [x = -1/2*sqrt(2), y = 1/2*sqrt(2)], [x = 1/2*sqrt(2), y = 1/2*sqrt(2)]] # 5개의 임계점 ■
<문제 변형>
함수
의 임계점을 모두 구하시오.
#변수 선언
var('x, y')
#함수 선언
f(x, y) = x*y + x^2*y + y + x
#그레디언트 추출
grad = (x*y + x^2*y + y + x).gradient()
#임계점 도출 후 출력
result = solve([grad[0] == 0 ,grad[1] == 0], x, y)
for n in range(len(result)):
print(result[n])
[x == -1/2*I*sqrt(3) - 1/2, y == -1/3*I*sqrt(3)]
[x == 1/2*I*sqrt(3) - 1/2, y == 1/3*I*sqrt(3)]
17. 2변수 함수
의 극값을 구하여라.
var('x, y')
f(x, y) = x*y - x^2 - y^2 - 2*x - 2*y + 4
gradf = f.gradient() # 그래디언트 계산
print(solve([gradf[0] == 0, gradf[1] == 0], x, y)) # 임계점 계산
hessf = f.hessian() # 헤시안 계산
H = hessf(-2, -2)
print("The eigenvalues of H are ", H.eigenvalues())
m, n = H.nrows(), H.ncols() # 행렬의 크기
if m != n:
raise ValueError("The matrix must be square.") # 정사각행렬이 아니면 에러
for i in range(1, n + 1):
H_principal_minor = H.submatrix(0, 0, i, i).det() # 선행 주 소행렬식
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
[[x == -2, y == -2]]
The eigenvalues of H are [-3, -1]
The 1 번째 principal minor 는 -2
The 2 번째 principal minor 는 3
선행 주 소행렬식의 부호가 음으로 시작하여, 음과 양이 순서대로 교차되므로, (
에서의
의 헤시안 행렬의 고유값이 모두 음이라는 의미이고) 아래쪽이 열린 포물면 모양이므로 극댓값을 갖게 된다.
는
에서 극댓값
을 갖는다. ■
<코드 변형>
#변수 선언
var('x, y')
#함수 선언
f(x, y) = x*y - x^2 - y^2 - 2*x - 2*y + 4
#그레디언트 추출
g = f.gradient()
#임계점 추출
crit1 = solve([g[0] == 0, g[1] == 0], x, y)
crit2 = str(crit1[0]).split()
a = int(crit2[2][0:2])
b = int(crit2[5][0:2])
#fxy
fxy(x, y) = diff(diff(f(x, y), x), y)
#fxx
fxx(x, y) = diff(diff(f(x, y), x), x)
#fyy
fyy(x, y) = diff(diff(f(x, y), y), y)
#극값 확인
print("<극점 --> 극값 출력>")
if (fxx(a, b)*fyy(a, b) - (fxy(a, b))^2 != 0):
print("(x = %d, y= %d)" %(a, b), "-->", f(a, b))
<극점 --> 극값 출력>
(x = -2, y= -2) --> 8
18. 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다. 행렬을 바꾸어 시도해 보시오. [출처] 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으로 나온다.
# initializing # https://sagecell.sagemath.org/
A = diagonal_matrix(RR, [20, 10, 2, 1])
b = vector(RR, [1, 1, 1, 1]) # objective function
x0 = vector(RR, [0, 0, 0, 0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red')) # gradient 의 norm을 그래프로 그림
Stationary point! Algorithm terminated!
위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.
<코드 값 수정>
로 수정
Stationary point! Algorithm terminated!

로 수정
Stationary point! Algorithm terminated!
로 수정

Stationary point! Algorithm terminated!
그래프가 점차 0에 수렴한다는 정보뿐만 아니라, 그래프가 어떤 형태로 수렴한다는 사실도 알 수 있다. 왜냐하면, 오차를 줄이면서 자료의 값(점의 개수)이 많아져, 그래프의 두각이 드러났기 때문이다. print(r)을 입력하면, 점들의 좌표를 알 수 있는데, 이 정보로 그래프가 대략적으로 어떤 함수로 표현될 수 있는지 결정할 수 있다. 바로 최소제곱법을 이용하여 추세선을 그리는 것이다. 하지만 추세선은 적절한 모범형(Prototype Figure)을 선택하여 구하기에, 정확히 그 그래프를 묘사할 수는 없다. 그래도 그 그래프에 가까운 형태는 구할 수 있다는 점에서 의의가 있다.
19. Graph the solid lying under the elliptic paraboloid
and above the rectangle
. And find its volume.
[SageMath code]
var('x, y, z')
F(x, y, z) = x^2/4 + y^2/9 + z - 1
implicit_plot3d(F(x, y, z) == 0, (x, -1, 1), (y, -2, 2), (z, 0, 1), opacity = 0.4)
[Answer]

[SageMath code]
solve(F(x, y, z) == 0, z)
[Answer]
[z == -1/4*x^2 - 1/9*y^2 + 1]
[SageMath code]
integral(integral(-1/4*x^2 - 1/9*y^2 + 1, x, -1, 1), y, -2, 2)
[Answer]
166/27
□ 설명
직사각형 영역
에서 함수
를 이중적분하는 문제와 같다. 따라서 구하고자 하는 입체의 부피는 다음과 같다.
. ■
<문제 변형>
그래프
을 그리고, x – y 평면 위로의 그래프의 넓이를 –1 < x < 1, -2 < y <2의 범위에서 구하시오.
#변수 선언
var('x, y, z')
#그래프 출력
show(implicit_plot3d(x^3/4 + y^3/9 + z == 1, (x, -1, 1), (y, -2, 2), (z, 0, 2), opacity = 0.5))
#적분
print("넓이 :" ,integral(integral(1 - x^3/4 - y^3/9, x, -1, 1), y, -2, 2))

20. 통계학에서 꼭 필요한 적분값
을 확인 하시오.
var('x') # http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f=exp(-x^2)
integral(f, x, 0, infinity)
답: 1/2*sqrt(pi) #
■
<코드 변형>
#함수 선언
f(x) = e^(-x^2)
show(plot(f(x)))
#적분 후 출력
result = integral(f(x), x, 0, infinity)
print(result, "~", numerical_approx(result))

21. 연속 확률변수
,
의 결합밀도함수
가 다음과 같이 주어져 있다고 하자.
, ![]()
일 확률을 구하여라.
풀이. 구하고자 하는 확률은 다음과 같다.
, ![]()
여기서 적분영역
은 다음 그림과 같
다.
var('x, y') # http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x, y) = 1/9*exp(-(x + y)/3)
print(integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2))
print((integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2)).n(digits=5))
-7/6*e^(-1/6) + 1
답. 0.012439 ■
<문제 변형>
일 때,
의 값을 구하시오.
#함수 선언
f(x, y) = 1/9*e^(-(x + y)/3)
#그래프 출력
show(plot3d(f, (x, 0, 1/4), (y, 0, 1/4)))
#확률 계산
print("P(X + Y < 1/4) =", integral(integral(f, y, 0, 1/4 - x), x, 0, 1/4))

22. Use a computer to graph the function, and plot some contour lines of the same function.
![]()
[SageMath code]
var('x, y')
f(x, y) = x*sin(x*y)
plot3d(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), opacity = 0.4)
contour_plot(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), fill = False, cmap = 'hsv', labels = True)
[Answer]

□ 설명
함수
의 그래프를 plot3d 명령어를 이용하여 3차원 곡면으로 그려보고(왼쪽), 같은 함수의 contour lines를 contour_plot 명령어를 이용하여 그려보았다(오른쪽). 오른쪽의 contour lines에서 같은 높이(함수값)를 나타내는 숫자(label)를 통해 주어진 함수
가 왼쪽 그림과 같은 형태의 곡면을 나타냄을 쉽게 예상할 수 있다.
<문제 변형>
함수
를 plot3d와 contour_plot을 이용하여 그리시오.
#함수 선언
f(x, y) = sin(x)^2 + x*y
#그래프 1 출력
show(plot3d(f(x, y), (x, -10, 10), (y, -10, 10)))
#그래프 2 출력
show(contour_plot(f(x, y), (x, -10, 10), (y, -10, 10), labels = True))

23. Find the volume of the solid that lies above the cone
and below the sphere
.
[SageMath code]
var('r, t, p')
T1 = Spherical('inclination', ['azimuth', 'radius'])
T2 = Spherical('radius', ['azimuth', 'inclination'])
p1 = plot3d(pi/3, (t, 0, 2*pi),(r, 0, 3), transformation = T1, opacity = 0.4)
p2 = plot3d(4*cos(p), (t, 0, 2*pi), (p, 0, pi), transformation = T2, opacity = 0.4, color = 'orange')
show(p1 + p2, aspect_ratio = [1, 1, 1])

u, v, w = T1.transform(radius = r, azimuth = t, inclination = p)
integral(integral(integral(r^2*sin(p), r, 0, 4*cos(p)), p, 0, pi/3), t, 0, 2*pi)
[Answer]
10*pi
□ 설명
삼중적분을 이용하여 주어진 입체의 부피를 구하는 것이므로 피적분함수는 일단 1이다. spherical coordinate을 이용하여 적분하고자 하는 영역을 구하면 다음과 같다.
,
, ![]()
이때 피적분 함수에
가 생겨나는 것에 주의하라. 따라서
를 얻는다.
<문제 변형>
원뿔(
)의 위쪽 면과 구체(
)의 면 사이의 부피를 구하시오.
var('r, t, p')
T1 = Spherical('inclination', ['azimuth', 'radius'])
T2 = Spherical('radius', ['azimuth', 'inclination'])
p1 = plot3d(pi/4, (t, 0, 2*pi),(r, 0, 4), transformation = T1, opacity = 0.5, color = 'red')
p2 = plot3d(5*cos(p), (t, 0, 2*pi), (p, 0, pi), transformation = T2, opacity = 0.3, color = 'blue')
show(p1 + p2, aspect_ratio = [1, 1, 1])
u, v, w = T1.transform(radius = r, azimuth = t, inclination = p)

integral(integral(integral(r^2*sin(p), r, 0, 5*cos(p)), p, 0, pi/4), t, 0, 2*pi)
24. 연쇄법칙(Chain Rule)에 대하여 간략하게 설명하시오.
연쇄법칙(Chain Rule)이란, 라이프니츠식(式) 기호(d/dx 꼴)를 대수적 해석의 일부(곱하기와 나누기)를 적용하여 연산할 수 있다는 법칙이다. 마치 사슬처럼 이어지는 모양을 나타내고 있어서, Chain이라는 이름이 사용되었다.
![]()
25. 방향도함수(directional derivative), 그래디언트(gradient), 헤시안(Hessian)에 대하여 간략하게 설명하시오.
그레디언트(Gradient)란, 고차원계에서 기울기를 나타내기 위한 표기방법이다. 일반적으로 2차원 계에서는 함수에 대한 도함수를 통해 기울기를 구하였지만, 3차원 이상에서는 이러한 방법은 유효하지 않다. 그래서 모든 차원에 걸쳐서 기울기를 표현할 수 있는 방법인 그레디언트(Gradient)가 개발된 것이다.
![]()
![]()
![]()

헤시안(Hessian)은 이계도함수의 여러 경우를 규칙에 따라 행렬로 나타낸 것이다. n차원에 대하여 n*n 헤시(헤세)행렬이 형성된다.
마지막으로 방향도함수는 그레디언트와 크기가 1인 단위 벡터의 내적값이다.
![]()
26. Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)에 대하여 간략하게 설명하시오.
경사하강법(Gradient Descent Method)이란, 그레디언트가 최소가 되는 점인 지역 최소(Local Minimum)를 찾는 방법이다. 오차 또는 임계치를 줄여서 계산하면, 더 정확하나 시간이 오래 걸리기 때문에, 적당한 범위를 지정하는 것이 중요하다. 경사하강법보다는 많이 쓰이지는 않으나, 그레디언트가 최대가 되는 점인 지역 최대(Local Maximum)를 찾는 경사상승법(Gradient Ascent Method)도 존재한다.
27. Fubini의 정리 (연속 2변수함수의 2중적분 경우, 적분순서를 바꾸어도 이중적분값은 같다)에 대하여 간략하게 설명하시오.
푸비니(Fubini)의 정리는 이중 적분을 수행할 때, 적분 순서는 결과값에 영향을 미치지 않는다는 점을 설명한다. 즉, 어떤 순서로 적분을 수행하더라도 결과는 동일하다.
TakeHome Exam 3 [ 인공지능을 위한 기초수학 ] - 아래 빈칸을 채우거나, 답이 주어진 문제는 유사한 새 문제나 난이도가 더 높은 문제로 바꾸어 풀거나, 코드를 이용하여 풀어서 자신의 파일을 제출하시오. (QnA에 아래 문제들에 대하여 1인당 5문제씩 풀어서, 자신이 푼 것을 공유하고, 팀별로 팀원들이 푼 문제를 Revise 하고, Finalize 해서 Final PBL 보고서에 Final OK 된 것만 제출하시오.)
Part 1. 주요 개념 중 20개를 골라 아는 대로 서술하시오.
1. 순열 : n개의 개체 중 r개를 순서를 고려하고 중복을 배제하여 추출하는 방법의 수
2. 조합 : n개의 개체 중 r개를 순서를 고려하지 않고 중복을 배제하여 추출하는 방법의 수
3. 중복조합 : n개의 개체 중 r개를 순서를 고려하지 않고 중복을 포함하여 추출하는 방법의 수
4. 확률 : 전사건(또는 표본공간)의 크기에 대한 특정 사건의 크기의 비율
5. 조건부확률 : 사건 A가 발생했다는 전제조건 하에, 사건 B가 발생할 확률
6. 대수의 법칙 : 자료의 개수가 많으면 많을수록 상대도수는 수학적 확률에 수렴한다.
7. 베이즈 정리 : 조건부확률을 응용한 것으로, 사전확률과 사후확률의 관계를 나타내는 정리이다.
8. 기댓값 : 자료의 평균으로,
또는
로 구한다.
9. 분산 : 자료의 퍼져있는 정도를 나타내는 수치로,
로 구한다.
10. 표준편차 : 분산의 양의 제곱근으로,
으로 구한다.
11. 확률질량함수 : 이산적인 확률분포에 대한 함수 표현이며, pmf(Probability Mass Function)라고 표기한다.
12. 확률밀도함수 : 연속적인 확률분포에 대한 함수 표현이며, pdf(Probability Density Function)라고 표현한다.
13. 누적분포함수 : 확률함수에 대한 누적된 값을 표현하는 함수로, cdf(Cumulative Distribution Function)라고 표현한다.
![]()
14. 적률생성함수 : 자료를 분석하기 위한 새로운 형태의 함수로, mgf(Moment Generating Function)라고 표현한다.
![]()
15. 이산확률분포 : 값의 불연속적인 분포를 의미하며, 이에 대응하는 함수가 확률질량함수이다.
16. 연속확률분포 : 값의 연속적인 분포를 의미하며, 이에 대응하는 함수가 확률밀도함수이다.
17. 포아송분포 : 단위 시간동안 사건이 일어난 횟수를 기반으로 나타낸 분포
18. 베르누이분포 : 한 번의 시행에서 사건이 일어날 확률을 표현한 분포
19. 지수분포 : 단위 시간동안 사건이 일어난 횟수를 기반으로, 한 사건과 그 다음 사건간의 발생 시간을 확률로 나타낸 분포
20. 중심극한정리 : 모집단으로부터 추출된 자료의 수가 많으면 많을수록, 자료의 분포는 정규분포에 수렴한다.
Part 2
와 R 를 이용하여 계산하고 자신의 말로 설명하시오.
1. 점
에서 평면
에 이르는 거리
를 구하여라.

① 주어진 문제의 숫자를 바꾸어서, 비슷한 유형의 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어 또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
v = vector([5, -1, 10]) nv = vector([1, 4, 7]) d = -6
distance = abs(v.dot_product(nv) + d)/v.norm()
print(distance)
@결과 65/42*sqrt(14)
|
□ 설명
![]()
사실상 Sage에서는 점과 평면사이의 거리를 구하는 기능이 없으므로, 직접 구현해야 한다. 공식의 (aA+bB+cC)부분은 두 벡터 (a, b, c)과 (A, B, C)의 내적으로 표현될 수 있다. 그리고 d는 따로 변수를 할당한 후 내적의 값과 더해주면 된다. 또한
은 벡터 (a, b, c)의 크기를 구하는 기능인 norm을 이용하여 표현될 수 있다. 이러한 것들을 조합하여, 점과 평면사이의 거리를 구할 수 있다.
2. 다음 선형연립방정식을 Gauss-Jordan 소거법으로 풀어라.

① 주어진 문제의 변수를 늘리고 숫자를 바꾸어 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
a = matrix(5, 5, [2, 1, 1 , -2, 3, -2, 1, -6, 1, 1, -1, -1, 5, -1, 2, -8, 7, 5 ,1, 2, 9, 4, -4, 5, 1]) b = vector([1, 2, 3, 4, 5])
print(a.augment(b).rref())
@결과 [ 1 0 0 0 0 -604/3227] [ 0 1 0 0 0 –1328/3227] [ 0 0 1 0 0 1063/6454] [ 0 0 0 1 0 9623/6454] [ 0 0 0 0 1 9903/6454] |
□ 설명
A라는 5X5 행렬을 만들고, B라는 벡터를 만든 후에, 이 둘을 첨가하였다. 물론 5X6 행렬로 바로 작성하면, 이 작업을 거치기 않아도 된다. 그 후에 RREF를 이용하여 행렬을 감축시켰다. 오른쪽 끝에 있는 값이 바로 각각의 변수의 대한 해(Solution)이다.
3. 기본행 연산을 이용하여 다음 행렬의 역행렬을 구하여라.
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
a = random_matrix(ZZ, 4, 4) I = identity_matrix(4)
print(a) print(a.augment(I).rref())
@결과 [ 0 38 14 16] [-1 0 -2 2] [-5 1 -3 1] [-1 -6 7 -1]
[ 1 0 0 0 -2/649 199/1947 -136/649 -106/1947] [ 0 1 0 0 10/649 -346/1947 31/649 -119/1947] [ 0 0 1 0 19/1298 -134/1947 -3/649 179/1947] [ 0 0 0 1 17/1298 313/649 -71/649 42/649] |
□ 설명
4X4 무작위 행렬을 만들고, 그것을 4X4 단위행렬과 결합(Augment)한다. 그리고 그 행렬을 RREF하면, 죄측은 단위행렬이 되고, 우측은 새로운 4X4 행렬이 나오게 된다. 이 과정은 기본행 연산을 이용하여, 단순한 방법(RREF)으로 역행렬을 구하는 방법이다.
4.
다음 행렬식을 (a) 먼저 손으로 구하고, (b) 문제를 변형하여 새로운 문제를 만든 후, 그 문제에 대하여 Sage로도 구하시오.

① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서, 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
a = random_matrix(ZZ, 4, 4)
print(a) print(a.determinant())
@결과 [ 3 1 8 1] [-1 -1 -1 -4] [11 -1 -1 1] [-1 -1 5 -1] 528 |
□ 설명
행렬의 크기가 커지면 커질수록 행렬의 행렬식을 구하는 것은 어려워진다. 왜냐하면, 계산해야할 부분이 많아지기 때문이다. 행렬을 간단한 형태로 변형하여 행렬식을 구하는 방법과 Cofactor Expansion을 이용하여 구하는 방법이 있는데, 위에서 무작위로 배정된 행렬을 구하기 위해, 두 방법을 동시에 사용하였다. 먼저 행렬을 규칙에 따라 감축시킨 후, 0이 많은 행 또는 열을 따라 Cofactor Expansion을 적용하였다. Sage에서는 이와 같은 과정이 A.determinant()로 한번에 끝난다.
5. 교재에서 3차 행렬
의 고유값을 구한 방법과 같은 방법으로, 각자가 만든 새로운 5차 행렬의 5개의 고유값 (중근포함)과 고유벡터를 구하라.
① 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
② 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
a = random_matrix(ZZ, 5, 5)
print(a)
print(a.eigenvalues())
print(a.eigenvectors_right())
@결과
[ -1 1 -1 18 0]
[ 1 -1 -3 1 0]
[ -3 -3 10 -30 2]
[ -6 11 1 0 6]
[ 0 -1 21 -1 0]
[-6.260606413880177?, -2.525311568535656? - 2.452038151119392?*I, -2.525311568535656? + 2.452038151119392?*I, 9.65561477547575? - 11.84032096063191?*I, 9.65561477547575? + 11.84032096063191?*I]
[(-6.260606413880177?, [(1, -0.5853550937974717?, -0.7943973776413986?, -0.3038693720957836?, 2.522618324889699?)], 1), (-2.525311568535656? - 2.452038151119392?*I, [(1, -0.3592848494391023? + 0.5506071863800691?*I, -0.3270261826547048? - 0.0706232637850957?*I, -0.08294738343062546? - 0.1707371445158087?*I, 1.678328920212667? - 0.8919168585772876?*I)], 1), (-2.525311568535656? + 2.452038151119392?*I, [(1, -0.3592848494391023? - 0.5506071863800691?*I, -0.3270261826547048? + 0.0706232637850957?*I, -0.08294738343062546? + 0.1707371445158087?*I, 1.678328920212667? + 0.8919168585772876?*I)], 1), (9.65561477547575? - 11.84032096063191?*I, [(1, 0.05129474580674115? + 0.4175459081136611?*I, -1.324978549352723? - 1.536063859633150?*I, 0.5155189711286822? - 0.7663294849099289?*I, 0.4441336462029072? - 2.760038917742413?*I)], 1), (9.65561477547575? + 11.84032096063191?*I, [(1, 0.05129474580674115? - 0.4175459081136611?*I, -1.324978549352723? + 1.536063859633150?*I, 0.5155189711286822? + 0.7663294849099289?*I, 0.4441336462029072? + 2.760038917742413?*I)], 1)]
□ 설명
무작위로 5X5 행렬을 만든 후, 그 행렬의 고유값을 A.eigenvalues()로, 고유벡터를 A.eigenvectors_right()로 각각 구하였다. 값들을 보면 ‘I’라는 기호가 나오는데, 이는 허수를 의미한다. 5차 특성다항식을 풀면서 발생할 수 있는 값이다. 그렇기에 행렬은 실수계가 아닌 복소수계에 있는 것이다.
Part 3. 다음 물음에 답하여라.
1. Gauss 소거법과 Gauss-Jordan 소거법에 대하여 아는 대로 설명하시오.
가우스 소거법은 특정 행렬을 사다리꼴형(Row Echelon Form, REF)으로 만드는 과정을 설명한 법칙이다. 가우스-조던 소거법은 가우스 소거법의 과정에서 감축 작업이 추가된 것으로, 사디리꼴 행렬의 축(Pivot)의 값이 1이 되도록, 그리고 축이 그 열에 대하여 유일한 값이 되도록 조정하는 작업까지를 포괄하는 법칙이다.
2. 행렬의 대각화를 배우는 이유에 대하여 아는 대로 서술하시오.
대각화(Diagonalization)는 대각행렬의 간편한 속성을 사용하기 위한 과정으로 볼 수 있다. 일반적으로 대각행렬의 제곱은 주대각 성분의 값들을 제곱한 것과 같다. 그렇기에 대각행렬의 n제곱은 주대각 성분의 값들을 n제곱한 것과 같은 것이다. 이러한 일반화된 식을 이용하여 행렬의 n승을 함수의 형태로 표현할 수 있게 된다. 대각행렬은 여기서 언급한 것 외에도 많은 쓰임이 있으므로, 행렬을 대각화하는 것은 계산의 효율성이라는 측면에서 중요하다.
3. 1차독립인 벡터들의 정규직교화와 행렬의 QR 분해 사이의 관계를 아는 대로 서술하시오.
벡터들의 정규직교집합을 구하려면, 벡터들에 대한 가공처리가 필요하다. 그것이 바로, Gram-Schmidt의 정규직교화법이다. 이 과정을 거치면, 모든 벡터의 크기는 1이며, 집합 내에 있는 벡터들은 서로 직교한다. 정규직교화법으로 얻은 벡터들이 열로 나열되어 한 행렬을 이루면, 그것이 QR 분해에서 행렬 Q가 되는 것이다. 특정 행렬 A를 QR로 분해하기 위해서는 A로부터 Q를 구하는 과정이 요구된다. 그리고 그 과정은 정규직교화를 의미한다.
4. 행렬의 SVD를 배우는 이유에 대하여 아는 대로 서술하시오.
특이값 분해(Singular Value Decomposition)를 학습하는 목적은 간단하게 말하면, 하나의 행렬을 여러 행렬의 곱으로 분해(Decompose)하기 위함이다. 그리고 분해의 목적은 행렬의 계산을 단순화하거나, 그 행렬로부터 새로운 정보를 추출해내기 위함이다. 지금까지 고유값 분해와 QR분해와 같은 다양한 행렬을 분해하는 방법을 학습하였다. 이러한 행렬도 위와 같은 목적으로 사용한다고 말할 수 있다.
Part 4. 다음 물음에 답하여라. (단답형, 12문항)
(각 3점×12문항=36점)
1. 다음의 두 벡터
와
의 내적
을 구하여라.
, ![]()
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
#코드
a = vector([1, 5, 7, 8, 5, 2])
b = vector([2, 7, 4, 2, 9, 4])
a.dot_product(b)
#결과
134
#설명
두 벡터의 내적을 계산하는 방법은 두 가지가 있다. 첫 번째는 벡터를 행렬로 해석하여 A^TB로 계산하는 것과, 두 번째 방법은 .dot_product() 또는 .inner_product() 옵션을 이용하여 계산하는 것이다. 위의 코드는 후자를 택한 방법이며, .dot_product()를 .inner_product()로 대체해도 동일한 결과가 나온다. 결국 이 두 용어는 내적을 의미하는 것이기 때문이다.
|
답 : |
134 |
2. 다음 행렬
에 대하여
을 구하여라.

① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
#코드
a = random_matrix(ZZ, 6, 6)
print(a)
print()
print(a.trace())
#결과
[ 8 -1 -8 -1 0 -1]
[ 0 0 5 -1 1 -1]
[ 1 0 -1 -1 -1 -4]
[ -1 -1 -2 0 -10 1]
[ 0 -2 1 1 1 -1]
[ 1 -1 -3 -4 2 3]
11
#설명
6X6 무작위 행렬 a를 선언하고 난 후, .trace() 옵션을 사용하여 값을 구하였다. .trace()는 행렬의 주대각 성분값을 모두 더하는 기능을 수행하며, 이는 행렬 a에서 구하고자 하는 바이다.
|
답 : |
11 |
3. 다음은 주어진 선형연립방정식의 해를 계수행렬
의 역행렬을 이용하여 구하는 과정이다. 물음에 답하여라.
![]()
![]()
![]()
![]()
풀이. Sage를 이용하여 계수행렬
의 역행렬을 구하면 다음과 같다.
A=matrix([[1, 2, -1, 3], [0, 4, 2, -1], [1, 0, 3, 1], [3, 5, 2, -1]])
print A.inverse()
![]()
[ -1/30 -2/5 1/30 1/3]
[ 1/10 1/5 -1/10 0]
[-11/150 3/25 41/150 -1/15]
[ 19/75 1/25 11/75 -2/15]
(질문) 위 선형연립방정식의 해 중
값을
로 나타낼 때,
를 아래에 기입하시오. (단,
와
는 서로소이다)
#코드
a = matrix([[1, 2, -1, 3], [0, 4, 2, -1], [1, 0, 3, 1], [3, 5, 2, -1]])
x = vector([3, 1, -2, 2])
ain = a.inverse()
print(ain*x)
#결과
(1/10, 7/10, -39/50, 6/25)
#설명
행렬 A의 역행렬을 구한 이유는 다음과 같은 식을 이용하기 위함이다.
![]()
단순히 역행렬 A^-1와 벡터 b를 곱하면 해를 포함하는 벡터가 출력된다. 여기서 b는 식의 우변에 있는 값들의 벡터이다. 역행렬과 벡터 b = (3, 1, -2, 2)를 곱한 결과 벡터의 원소(entry) 중에서 y값을 추출한다. y=7/10이며, a = 7, b = 10 이다. 그래서 정답은 a+b = 17이다.
|
답 : |
a + b = 7 + 10 = 17 |
4. 행렬
에 대하여 기본행 연산
을 적용한 행렬의 2행 성분의 합을 기입하여라.
# 설명
위 문제는 기본행 연산(Elementary Row Operation) 중에서 대체(Replacement)를 사용한 것이다. 3번째 행의 값들을 3배한 후에, 그것을 2번째 행과 더해, 2번째 행에 대입하는 연산이다.
![]()
![]()
![]()
그래서 정답은 15 + 10 –13 = 12이다.
|
답 : |
12 |
5. 다음은 세 벡터
,
,
가 일차독립인지를 판단하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.
풀이. Sage를 이용하여 세 벡터
,
,
를 열벡터로 하는 행렬을
라 하고
의 행렬식을 구하면 다음과 같다.
v1=vector([0, -1, 3])
v2=vector([5, 1, -2])
v3=vector([4, -7, 10])
A=column_matrix([v1, v2, v3])
print )
![]()
-59
따라서 세 벡터
,
,
는 일차독립이다.
#설명
가역행렬정리(Invertible Matrix Theorem)에 따르면, 행렬이 일차 독립인 경우, 그 행렬의 행렬식은 0이 아니다. 그렇기 때문에 행렬 A의 행렬식을 구하는 .determinant() 옵션을 이용하여, 행렬식이 0이 아닌지를 확인하면 된다.
|
답 : |
A.determinant() |
6. 다음은 Sage를 이용하여 행렬
에 대하여 주어진 선형변환
,
이 전사인지 확인하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.
풀이. 먼저 Sage를 이용하여 선형변환을 정의하자.
U = QQ^2
V = QQ^3
A = matrix(QQ, [[1, 2], [-1, 1], [1, 0]])
T = linear_transformation(U, V, A, side='right') # 선형변환
print T
Vector space morphism represented by the matrix:
[ 1 -1 1]
[ 2 1 0]
Domain: Vector space of dimension 2 over Rational Field
Codomain: Vector space of dimension 3 over Rational Field
이제 선형변환
의 치역을 구해보자.
print # 치역 생성
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 1/3]
[ 0 1 -2/3]
이므로
는 전사가 아니다.
#설명
.image() 옵션은 선형변환 T에 대한 치역(range)의 기저를 구한다. 기저의 개수로부터 차원을 알 수 있으며, 그 차원이 공역(co-domain)의 차원과 같지 않은 경우, 전사가 아니라고 결론지을 수 있다.
|
답 : |
T.image() |
7. 두 선형변환
와
의 표준행렬
와
가 각각 다음과 같이 주어져 있다고 하자. 합성변환
의 표준행렬
의
성분을 기입하여라.
, ![]()
풀이. 합성변환
의 표준행렬은
을 만족하므로
의
성분을 구하면 다음과 같다. ...
#코드
T = matrix(3, 2, [0, 3, 1, -4, 2, 7])
S = matrix(3, 3, [1, -2, 4, 2, 0, 5, -3, 3, 1])
x = vector([2, 2])
print(S*T*x)
#결과
(90, 102, -18)
#설명
표준 행렬 T와 S를 선언한 후, 입력할 성분 벡터 x를 선언하였다. 그리고 다음과 같이 2번의 선형변환(Linear Transformation)을 이행하여 값을 구하였다.
![]()
|
답 : |
(90, 102, -18) |
8. 다음과 같이 주어진 선형연립방정식에 대하여 물음에 답하여라.
![]()
![]()
![]()
![]()
풀이. Sage를 이용하여 첨가행렬의 RREF를 구하면 다음과 같다.
A=matrix([[1, 3, 5, -2], [0, 2, -7, 1], [4, 1, -3, 1], [7, 10, 2, 0]])
b=vector([1, -3, 12, 20])
print "RREF([A : b]) ="
print A.augment(b).rref()
![]()
RREF([A : b]) =
[ 1 0 0 0 194/65]
[ 0 1 0 0 -3/13]
[ 0 0 1 0 46/65]
[ 0 0 0 1 157/65]
(질문) rank(
)는 얼마인지 아래에 기입하시오.
#코드
a = matrix([[1, 3, 5, -2], [0, 2, -7, 1], [4, 1, -3, 1], [7, 10, 2, 0]])
b = vector([1, -3, 12, 20])
a.augment(b).rank()
#결과
4
#설명
행렬의 차원을 구하는 옵션인 .rank()를 사용하였다. 굳이 이 옵션을 사용하지 않고도, 행 감축(Row Reduced)된 행렬에서 축(Pivot)의 개수를 세면된다. 위의 결과에서 축(Pivot)의 개수가 4개이며, 이는 .rank()를 통하여 얻은 결과와 동일하다.
|
답 : |
4 |
9. 아래 주어진 행렬
에 대하여 dim Col(
)
nullity(
)를 구하여라.

풀이. Sage를 이용하여 행렬
의 RREF를 구하면 다음과 같다.
A=matrix([[1, 2, 3, 0, -2, 0, 7, 6], [2, 8, 1, 5, 0, 6, 1, 3],
[0, 1, -4, 3, 2, 1, 2 , 8], [-4, 2, 0, 6, 4, -2, 3, -1],
[-7, 1, 2, 3, 1, 3, 0, 0]])
print A.rref()
![]()
[ 1 0 0 0 0 -17/13 1367/676 911/676]
[ 0 1 0 0 0 34/13 -3839/676 -3811/676]
[ 0 0 1 0 0 -15/13 599/676 -981/676]
[ 0 0 0 1 0 -29/13 5611/676 6335/676]
[ 0 0 0 0 1 3/13 -4623/676 -6855/676]
이므로 따라서 dim Col(
)는 (1) 이고 차원정리에 의해 nullity(
)는 (2) 이다. 따라서 (1)
(2) 는 다음과 같다.
#설명
감축된 행렬의 축(Pivot)은 5개가 있다. 그래서 Rank는 5이며, Rank-Nullity 정리에 따라 Nullity는 3이다.
|
답 : |
(1) 5 / (2) 3 / (1)+(2) 8 |
10. 다음 주어진 이차형식을
로 표현할 때, 대칭행렬
의
의 성분
은 얼마인지 아래에 기입하시오.
![]()
#설명
위 식의 이차형식에 대한 행렬 A는 다음과 같다.

그래서 행렬 A의 a(3, 1)은 4이다.
|
답 : |
4 |
11. 다음은 행렬
를 대각화시키는 행렬
와 그에 대응하는 대각선행렬
를 구하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.

풀이. Sage를 이용하여 행렬
의 고유값과 고유벡터를 구하면 다음과 같다.
A=matrix([[4, -1, 0, -1], [-6, -3, 6, -1], [0, -2, 4, -2], [6, 5, -6, 3]])
print A.eigenvectors_right()
![]()
[(2, [(1, 1, 2, 1)], 1), (-2, [(0, 1, 0, -1)], 1),
(4, [(1, 0, 1, 0), (0, 1, 1, -1)], 2)]
행렬
의 각각의 고유값에 대한 대수적 중복도와 기하적 중복도가 같으므로 대각화가 가능한 행렬이다. 행렬
를 대각화시키는 행렬
를 구하면 다음과 같다.
x1 = vector([1, 1, 2, 1])
x2 = vector([0, 1, 0, -1])
x3 = vector([1, 0, 1, 0])
x4 = vector([0, 1, 1, -1])
P = column_matrix([x1, x2, x3, x4])
print P
![]()
[ 1 0 1 0]
[ 1 1 0 1]
[ 2 0 1 1]
[ 1 -1 0 -1]
그리고 이에 대응하는 대각행렬
는 다음과 같다.
![]()
[ 2 0 0 0]
[ 0 -2 0 0]
[ 0 0 4 0]
[ 0 0 0 4]
#설명
.inverse()를 이용하여 P의 역행렬을 구한 후, P.inverse()*A*P로 연산을 진행하면, 대각행렬 D가 출력된다.
|
답 : |
P.inverse()*A*P |
12.
대칭행렬
,
상의 두 벡터
에 대하여
![]()
는
상의 새로운 내적이 된다.
,
에 대하여 내적
을 구하여라.
#코드
A = matrix([[3, 2], [2, 4]])
u = vector([2, -1])
v = vector([1, 0])
v.inner_product(A*u)
#결과
4
#설명
v.transpose()*A*v로 입력하면, v가 행렬이 아닌 벡터이기 때문에, .transpose() 옵션이 존재하지 않아, 오류가 발생한다. 그래서 내적을 계산해주는 .inner_product() 옵션을 사용하여 계산하였다.
|
답 : |
4 |
http://matrix.skku.ac.kr/cal-lab/sage-grapher.html , http://matrix.skku.ac.kr/cal-lab/sage-grapher-para.html
Part 5. State or Define.
1. Choose 4 terminology or concept and state its meaning as much as you knows in your words.
① Newton’s Method ② Fundamental Theorem of Calculus ③ Definite Integral ④ Indefinite integral ⑤ Improper Integral (이상적분) ⑥ Integration by parts ⑦ Volume of a solid of revolution ⑧ The Arc Length Formula ⑨ Comparison Theorem for integral ⑩ Volume of a solid
that lies between
and
⑪ The method of cylindrical shells
1. Newton’s Method
뉴턴 방법은 식의 근을 근사적으로 구하기 위한 방법으로, 다음과 같은 점화식의 반복으로 근사적인 값을 구한다.
![]()
여기서 f(x)는 근을 구하고자 하는 식으로, 근에 가깝다고 생각되는 값을
으로 지정하여 계산을 수행한다. 반복(Iteration) 횟수가 많으면 많을수록, 근에 근사한 값을 얻게 된다.
2. Fundamental Theorem of Calculus
미적분의 기본정리는 미분과 적분과의 연관성을 설명하는 규칙이다. 총 2개의 법칙으로 구성되어 있다. 제 1 법칙은 함수 f(x)가 구간 [a, x]에 대하여 연속이면, 그에 대한 적분함수(anti-derivative) F(x)는 [a, x]에 대하여 연속이고, (a, x)에 대하여 미분이 가능하다. 또한 F’(x) = f(x)이다. 제 2 법칙은 함수 f(x)가 구간 [a, x]에 대하여 연속이면, 다음과 같은 계산을 수행할 수 있다.
![]()
여기서 F(x)는 f(x)의 적분함수(anti-derivative)이다.
3. Definite Integral
정(定)적분은 미적분의 기본정리 제 2 법칙에 따른 계산을 의미한다.
![]()
여기서 F(x)는 f(x)의 적분함수(anti-derivative)이며, 부정적분(Indefinite Integral)과 다른 점은 [a, b]라는 구간 정의에 대한 유무이다.
4. Integration by parts
부분 적분법은 곱의 미분법을 변형한 법칙으로, 곱의 미분식을 적분하여 식을 유도할 수 있다.
![]()
여기에 구간 [a, b]를 선언하여, 정적분으로 표현하면 다음과 같다.
![]()
Part 6. Find or Explain or Fill the blanks.
1.Use differential to approximate
.
var('a,b,x,dx');
f(x)=(x+99)^(1/3)
f(x)
f(1)
1/3*dx/(x + 99)^(2/3)
dy(x)=diff(f(x),x)*dx
(f(1)+dy(x=1, dx=0)).n()
=4.6416
숫자를 바꾸고 f(x)=(x+99)^(1/3)을 함수로 정의하고 미분값을 dy로 지정하고 f에 1을 입력해서 100^(1/3)을 구해보았다.
1.Use differential to approximate
.
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
#문제
sqrt(50)의 근사값을 구하시오.
#코드
f(x) = x^2 - 50
df(x) = diff(f(x), x)
#초기 선언값
a = [6]
for n in range(10):
a.append((a[n]-f(a[n])/df(a[n])).n())
print(a[n])
print(a[10]) #마지막 값 출력
#결과
6
7.16666666666667
7.07170542635659
7.07106784061047
7.07106781186548
7.07106781186547
7.07106781186548
7.07106781186547
7.07106781186548
7.07106781186547
7.07106781186548
#설명
Newton’s Method를 10번 수행한 결과, sqrt(50)의 값은 약 7.07106781186548이다. for 문에 Newton’s Method 식을 넣어서 반복(Iteration)계산을 이행하였다.
2. Sketch the region enclosed by y= x-5, y=2+3x^2, x=0, x=5 and find its area
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
|
f(x)=x-5 g(x)=2+3*x^2 show(plot(f(x), x, 0, 5) + plot(g(x), x, 0, 5)) integral(g(x)-f(x), x, 0, 5) |
Answer : Area= 295/2 ■

2. (Sage) Sketch the region enclosed by
and find its area
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
|
f(x)=x-1 g(x)=5-x^2 show(plot(f(x), x, 0, 2) + plot(g(x), x, 0, 2)) print integral( g(x)-f(x), x, 0, 2 ) |
#문제
사이의 넓이를 구하시오.
#코드
var('x, y')
f(x) = x^2
g(x) = x + 2
A = plot(f(x), (x, -3, 3))
B = plot(g(x), (x, -3, 3))
show(A + B)
print(integral(g(x)-f(x), x, -1, 2))
#결과

#설명
먼저 함수 f(x)와 g(x)를 연립하여, 두 함수가 만나는 점을 구한다.
![]()
이 두 점은 두 함수 사이에 있는 영역에 대한 범위가 되며, 곧 적분 구간이 된다. 이 구간에 대하여 두 함수에 대한 식을 적분한다.
![]()
이를 코드로 작성하면 integral(g(x) - f(x), x, -1, 2)이다.
Answer : 9/2 ■
3. Verify the formula
by Sage .
Proof)
![]()
=
=
= ![]()
Verify the above formula by Sage
|
var('x, a'); integral( , x) |
=> RHS= LHS ■
#코드
var('x,a')
a = 1
f(x) = sqrt(a^2 - x^2)
g(x) = 1/2*x*sqrt(a^2 - x^2) + 1/2*a^2*arcsin(x/a)
h(x) = diff(g(x), x).full_simplify()
bool(f(x) == h(x))
#결과
True
#설명
f(x)를 적분하였을 때 나온 결과가 참임을 보이기 위해서는, 그 결과(F(x))를 미분하여 f(x)가 되는가를 보이면 된다. bool을 이용하여 f(x)와 F’(x)가 같다고 표현한 결과, 참이 출력되었다. 그래서 F(x)는 f(x)의 적분함수(anti-derivative)이다. 사실 .full_simplify()로 원하는 정리가 나오지 않아서, bool()로 값을 처리하였을 때, False가 출력되는 것이 일반적이다. a를 1로 설정하면, True가 나오는데, 그 이유는 .full_simplify()로 처리한 식이 f(x)와 일치하기 때문이다. 그래서 a를 1로 선언하였다. 만약 다른 값을 선언한다면, 거짓이 출력될 수 있지만, 이는 식의 형태가 달라서 그런 것일 뿐, 두 식은 같은 것이다. 여기서는 Sage를 이용하는 것보다는 직접 손으로 식을 미분하여, 진위를 판별하는 것이 더 정확할 것이다.
3. Find
(You may use Sage in part, but I recommend you to solve it by hand.)
▸▹ Sol :
|
var('x') f(x) = x*exp(x)^(-x^2) print integrate(x*exp(x)^(-x^2),x,1,infinity) |
■1/3*gamma(2/3, 1)
4. Calculate the volume of the solid obtained by rotating the region bounded by curve
about the
-axis.
![]()
(Sage)

■
#문제
으로 둘러싸인 영역을 x축에 대하여 회전시킨 회전체의 부피를 구하시오.
#코드
var('x, y')
f(x) = ln(x)
A = plot(f(x), (x, 0.9, 3))
B = implicit_plot(x == 2, (x, -1, 4), (y, -1, 3))
C = implicit_plot(y == 0, (x, -1, 4), (y, -1, 3))
show(A + B + C, xmin = 0, xmax = 3, ymin = 0, ymax = 2)
print(integral(pi*(f(x))^2, x, 1, 2).n())
#결과

#설명
회전체의 단면은 원이며, 이 원의 넓이를 무수히 합쳐서 하나의 회전체의 부피를 구하는 과정을 생각해 볼 수 있다. 이를 적분식으로 작성하면 다음과 같다.
적분 결과는 약 0.591616263806170으로, 이는 구하고자 하는 회전체의 부피이다.
5. A 8 ft chain weighs 24 lb and hangs from a ceiling. Find the work done in lifting the lower end of the chain to the ceiling so that it is levelled with the upper end.

So the work done raising the chain is (in ft·lb) ■
5. A 8 ft chain weighs 24 lb and hangs from a ceiling. Find the work done in lifting the lower end of the chain to the ceiling so that it is levelled with the upper end.

So the work done raising the chain is
(in ft·lb) ■
#문제
(15+x)N으로 물체를 수평면에 대하여 10m 이동시키는 일의 값을 구하시오. (단, 마찰력은 무시한다), (물체의 출발점은 x = 0이다)
#풀이
![]()
#설명
일에 대한 엄밀한 수식은 다음과 같다.
![]()
수학에서 다루는 대부분의 경우에는 힘과 이동방향이 일치하므로, 내적과 벡터 표현을 따로 쓰지 않는다. 또한 파운드(lb)는 SI 단위계에서는 뉴턴(N)과 같으며, 피트(ft)는 SI 단위계에서 미터(m)와 같은데, 일은 이 두 단위의 곱으로 표현된다. 즉 Nm 또는 ft-lb이다.
6. Calculate the total area of A part and B part marked in the graph below. Here
and
.
(Sage)
answer : e^2 - 3.22424574744
#문제
구간 [1, 3]에서, 함수
에 의해 둘러싸인 부분의 넓이를 구하시오. (CAS 필요)
#코드
f(x) = sin(x)
g(x) = e^(0.05*x)-0.5
A = plot(f(x), (x, 0, 4), color = 'red')
B = plot(g(x), (x, 0, 4))
show(A + B, xmax = 3, ymin = 0)
# a = 0.5564977101
# b = 2.4589747823
integral(f(x) - g(x), x, 0.5564977101, 2.4589747823)
#결과

#설명
두 그래프가 만나는 두 점을 구하기 위해서는 컴퓨터 대수 시스템(Computer Algebra System, CAS)가 필요하다. 그렇지 않으면, 직접 구하기에는 어려움이 있다. 처음에는 Sage의 solve 기능을 이용해서 구하려고 했지만, 잘 되지 않아서, Wolframalpha를 이용하여 두 점을 구하였다. 이 두 점을 구했다면, 다음과 같은 식을 세워서, 두 그래프에 의해 둘러싸인 넓이를 구한다.
7. (Exs 7-2-5) Write how you are going to show a formula
.
(Either by hand or Sage)
Sage를 이용하여 공식을 증명하려는 경우는 어떤 과정을 거치는지와 명령어만 서술하면 됩니다.)
![]()
■
![]()
Let
, then we have ![]()
Therefore, ![]()
![]()
#코드
f(x) = (sin(x))^5*(cos(x))^(-6)
F(x) = 1/5*(sec(x))^5-2/3*(sec(x))^3+sec(x)
bool(f(x) == diff(F(x), x).full_simplify())
#결과
True
Ans:1/15*(15*cos(x)^-10*cos(x)^2+3)/cos(x)^5 ■
#설명
f(x)의 적분 결과가 참임을 증명하기 위해서는, 그 적분 결과를 미분하여 f(x)와 동일한지를 확인하면 된다. 위 코드에서 F(x)의 적분상수를 생략하였는데, 그 이유는 Sage에서 따로 특정 문자가 상수(Constant)임을 선언할 방법이 없기 때문이다. 또한 상수를 미분하면 0이기 때문에, 적분상수를 생략하였다.
8. Find the length of the curve
from
to
.
Since
implies
,![]()
|
var('y') f(y) = sqrt(1+4*y^2) print integral(f, y, 0, 1) |
Ans: 1/2*sqrt(5) + 1/4*arcsinh(2) ■
#문제
f(x) = sin(x) + tan(x) (
)의 길이를 구하시오.
#코드
f(x) = sin(x) + tan(x)
df(x) = diff(f(x), x)
print(integral(sqrt(df(x)^2 + 1), x, 0, pi/4).n())
#결과
1.8800752417908915
#설명
아래 공식은 피타고라스 정리에 근거하여 구한 미시적인 빗변의 길이를 적분하여 합치는 것을 나타낸다.
![]()
이 식을 이용하여 계산을 하면, 연속적인 곡선에 대한 길이를 구할 수 있다.
Ans: 1.8800752417908915 ■
Part 7. Prove or Explain .
1. Show
using
method.
∀
> 0 [ Find
] Let
If
,
then
=
=
=
.
[Side calculation]
![]()
. ■
[Side Calculation]
![]()
■
#설명
델타-입실론 방법은 무한대 또는 무한소와 같은 추상적인 개념에 대한 수학적 접근을 할 수 있도록 하는 분석방법이다. 미적분에서 미적분의 기본 정리만큼이나 중요한 것으로, 주로 극한값이 특정한 값에 수렴하거나 발산하는 것을 증명하기 위해 사용한다. 증명 방법은 y축 구간 값인 입실론을 x축 구간 값인 델타와 연결하여, 델타의 지정된 범위로부터, 할당된 입실론 범위에 수렴하는지를 확인하면 되는 것이다. 입실론을 0에 가깝게 조정하면, 결국 한 점으로 수렴하게 되며, 그 점이 극한값으로 정의된다.
2. Show
.
▸▹ Proof :
![]()
|
var('x') f(x) = diff(sech(x), x) print(f(x)) |
#코드
f(x) = -sech(x)*tanh(x) # 비교식
print(bool(diff(sech(x), x) == f(x)))
#결과
True
#설명
sech(x)에서 h는 쌍곡선(Hyperbola)을 의미하는 것으로, 사실 이 함수는 쌍곡선을 위해 만들어진 것이다. 원과 타원은 일반 삼각함수를 통해 매개변수로 표현할 수 있다. 이러한 것을 쌍곡선에서도 가능하게 하고자 쌍곡선 함수를 만든 것이다. cosh(x)는
을 의미하며, sech(x)는 일반 삼각함수처럼 cosh(x)의 역수로 해석하면 된다. Bool을 이용하여, sech(x)의 미분 값이 제시된 미분값과 같은지를 검증한 결과, 참(True)이라는 결론이 나왔다.
3. Find
(You may use Sage in part, but I recommend you to solve it by hand.)
▸▹ Sol :Let
, than ![]()
![]()
▸▹ Sol :
#코드
var('x')
f(x) = x*(e^(-x^2))
print (integral(f(x), x, -oo, -1))
integral(x*e^(-x^2), x, -infinity, -1)
#결과
-1/2*e^(-1)
#설명
Sage를 이용하면, 한 줄로 계산이 끝난다. 실제 수작업으로 계산하려면 다음 과정을 거쳐야 한다. 먼저 치환적분법을 사용하여 식을 간결하게 한 후, 음의 무한대를 변수 t로 치환하여, 적분을 계산한다. 그리고 그 식에 음의 무한대로 t에 대하여 극한을 취한다. 그러면 Sage에서 계산한 것과 동일한 결과가 나온다.
■
4. Verify
by Sage .
Proof)
=> ![]()
![]()
![]()
![]()
Verify the above formula by Sage
1/3*sqrt(3)*arctan(1/3*(2*x - 1)*sqrt(3)) + 1/3*log(x + 1) - 1/6*log(x^2 - x + 1)
=> RHS= LHS
#코드
integral((1/(x^3 + 1)) , x)
1/3*sqrt(3)*arctan(1/3*(2*x - 1)*sqrt(3)) + 1/3*log(x + 1) - 1/6*log(x^2 - x + 1)
=> RHS= LHS
f(x) = 1/3*sqrt(3)*arctan(1/3*(2*x - 1)*sqrt(3)) + 1/3*log(x + 1) - 1/6*log(x^2 - x + 1)
bool(integrate(1/(x^3+1), x) == f(x))
#결과
True
#설명
함수
의 적분 결과는 위 코드에서 선언한 f(x)(문제에서 제시된 적분 결과)와 같다. 그래서 문제에서 제시된 적분 결과는 참이다. ■
2. 이중적분
를 구하여라.
(여기서 영역
는 네점
을 꼭지점으로 갖는 정사각형의 내부이다.)
(풀이)
변수 변환을 이용, ![]()
그러면
이므로
![]()
![]()
![]()
![]()
![]()
■
Verify the above formula by Sage
#코드
var('x, y')
var('u, v')
T = ((1/2) * u + (1/2) * v, (1/2)*u - (1/2)*v)
J = jacobian(T, (u, v)).det()
f(x, y) = ((x+y)*e^(x^2))/e^(y^2)
integral(integral(f(T[0], T[1])*abs(J), u, 1, 3), v, -1, 1)
답 : -1/2*(e^3 - e)*e^(-4) + 1/2*e^3 - 1/2*e ■
var('u, v')
f(u) = integral(u*e^(u*v)*1/2, v, -1, 1)
bool(integral(f(u), u, 1, 3).n() == (1/2*(e^3+1/e^(3)-e-1/e)).n())
#결과
True
#설명
Sage를 이용하여 주어진 식을 적분한 결과, 문제에서 제시된 결과와 일치하였다. 그래서 제시된 문제의 결과는 참이다. ■
3. 다음을 구하여라.
![]()
(풀이)

■
Verify the above formula by Sage
#코드
var('r, x')
hypo = 3/4*pi*(1-e^(-4))
f = integral(e^(-r^2)*r, r, 0, 2)
g = integral(f, x, 1/4*pi, 7/4*pi)
bool(hypo.n() == g.n())
#결과
True
#설명
주어진 식을 Sage를 이용하여 적분한 결과, 제시된 결과와 일치하였다. 그래서 문제에서 제시된 결과는 참이다. ■
4. 다음의 삼중적분을 구하여라.
, 여기서
는 밑면을
, 꼭지점을
로 가지는 원뿔의 내부이다.
(풀이)
여기서 ![]()
![]()
![]()
■
Verify the above formula by Sage
#코드
var('r, a, z')
f = r^2 * (cos(a))^2 * r
integral(integral(integral(f, z, 0, 1-r), r, 0, 1), a, 0, 2*pi)
답: 1/20*pi
var('r, x')
f = integral((1-r)*r^3*(cos(x))^2, r, 0, 1)
g = integral(f, x, 0, 2*pi)
print(g)
#결과
1/20*pi
#설명
Sage로 주어진 식을 적분하여,
라는 값을 구했으며, 이는 문제에서 제시된 결과 값과 동일하다. 그래서 문제에서 제시된 결과는 참이다. ■
Part 8 (통계)
1. 500개의 백열전구로부터 11개의 백열전구를 택하는 방법의 개수는?
[Sage code] [이항계수를 구하는 코드]
print(binomial(500, 11))
답. 10949744410266058033000 ■
#문제
1000개의 물건 중에서 2개를 선택하는 방법의 수를 구하시오.
#코드(R)
choose(1000, 2)
#결과
[1] 499500
2. 주사위 1개를 던져서 홀수가 나타날 확률을 구하시오.
풀이. 주사위 1개를 던지는 시행에서 일어나는 전체 사건은 1, 2, 3, 4, 5, 6이고, 홀수가 나타나는 사건은 1, 3, 5 이므로, 구하고자 하는 확률은 다음과 같다.
[Sage code] http://mathlab.knou.ac.kr:8080/ http://sage.skku.edu/
S = Set([1, 2, 3, 4, 5, 6])
A = Set([1, 3, 5])
P_A = A.cardinality()/S.cardinality()
P_A
#코드(Python, Sage)
odd = {1, 3, 5}
even = {2, 4, 6}
len(odd)/(len(odd | even))
#결과
0.5
#설명
Python3에서 사용할 수 있는 집합을 이용하였다.
답. 0.5 ■
3. 1000개의 제품 중에 불량품이 5개 있다. 이 제품 중에서 10개의 제품을 구입했을 때 다음 확률은?
(i) 구입제품 중 불량품이 한 개도 없는 경우
(ii) 구입제품 중 불량품이 적어도 한 개 이상 있는 경우
풀이.
#코드(R) - (i)
choose(995, 10)*choose(5, 0)/choose(1000, 10)
#결과 - (i)
[1] 0.9508937
#코드(R) - (ii)
1 - choose(995, 10)*choose(5, 0)/choose(1000, 10)
#결과 - (ii)
[1] 0.0491063
[R code] http://mathlab.knou.ac.kr:8080/ http://mathlab.knou.ac.kr/r/ http://sage.skku.edu/
# 모두 불량품이 아닐 확률
print(choose(997,10)* choose(3,0)/ choose(1000,10))
# 적어도 불량품이 1개 이상 있을 확률
1 - choose(997,10)* choose(3,0)/ choose(1000,10)
4. 우리는 Part 3에서 인공지능을 이해하기 위하여 필수적인 <기초 통계 및 확률>을 학습하였다. 통계적 방법은 인공 지능을 구현하는 구체적 접근 방식인 머신러닝 예측 모델링에서 매우 중요한 역할을 한다. 다음은 머신러닝 프로젝트를 수행할 때 따르는 통계적 방법의 적용 절차 를 잘 보여준다.
[출처] https://machinelearningmastery.com/statistics_for_machine_learning/
① 문제 구성 : 탐색적 데이터 분석 및 데이터 마이닝이 요구됨
② 데이터 이해 : 요약 통계 및 데이터 시각화가 필요함
③ 데이터 정리 : 이상치(outlier)를 탐지하고 결측값을 대치해야 함.
④ 데이터 선택 : 데이터 샘플링 및 특징선택(feature selection) 방법을 사용해야 함.
⑤ 데이터 준비 : 데이터를 변환하고, 스케일링, 인코딩 등을 사용해야 함.
⑥ 모델 평가 : 실험 설계 및 리샘플링 방법이 필요함.
⑦ 모델 구성 : 통계적 가설 검정 및 추정 통계를 사용해야 함.
⑧ 모델 선택 : 통계적 가설 검정 및 추정 통계를 사용해야 함.
⑨ 모델 제시 : 신뢰 구간과 같은 추정 통계를 사용해야 함.
⑩ 모형 예측 : 예측 구간과 같은 추정 통계를 사용해야 함.
여기서 포아송 분포 P(2) 를 따르는 모집단에서 표본 100개를 추출한다는 것의 의미가 무엇인가요?
단위 시간동안 발생한 사건의 횟수가 2회인 모집단에서, 표본을 100개 추출한다는 것이다. 그리고 각각의 표본도 단위 시간동안 발생한 사건의 횟수를 나타내며, 2에 근접한 값들로 이루어져 있다. 실제로 이들의 값들을 모두 더해 평균을 계산하면 2에 가까운 값이 출력될 것이다.
5. 대수의 법칙(Law of large number)에 대해 아는대로 서술하시오.
대수의 법칙(大數-法則)은 통계적 확률의 시행 횟수 또는 자료의 크기가 크면 클수록 수학적 확률에 수렴한다는 것이다. 즉, 상대 도수(특정 사건의 수를 전체 횟수 또는 자료의 크기로 나눈 값)가 실제 확률에 수렴한다는 것이다.
![]()
6. 베이즈 정리(Bayes’ theorem) 에 대해 아는대로 서술하시오.
베이즈 정리는 사전확률과 사후확률의 관계를 조건부 확률을 이용하여 계산하는 이론으로, P(a)를 사건 a의 전확률,
를 사건 a의 사후 확률이라 한다.
{A1, A2, ... , An}이 표본공간 S의 분할을 이룰 때, 임의의 사건 B에 대해 다음이 성립한다.
B = B ∩ S = (A1 ⋃ A2 ⋃ ... ⋃ An) ∩ B
따라서 임의의 숫자 I에 대해 다음이 성립한다.
P(Ai | B) = P(Ai ∩ B) / P(B)
= P(Ai ∩ B) / ( P(A1)P(B|A1) + ... + P(An)P(B|An) )
베이즈 정리는 조건부 확률을 응용한 것으로, 사전확률과 사후확률의 관계를 설명한다. 여기서 사전확률은 사건이 발생하기 전에, 이미 알고 있던 확률을 의미하고, 사후확률은 사건이 발생한 후에 베이즈 정리로부터 알게 되는 확률을 의미한다. 베이즈 정리는 사전확률과 사건으로부터 얻은 자료를 사용하여 사후확률을 추출해낸다.
7. 중심극한정리(Central Limit Theorem) 에 대해 아는대로 서술하시오.
확률과 통계에서 중심극한정리가 의미하는 것은 (대부분의 경우) 모집단의 분포가 연속형이든, 이산형이든, 또는 한쪽으로 치우친 형태이든 간에 표본의 크기가 클수록 표본평균의 분포가 점점 정규분포에 가까워진다는 의미이다.
중심극한정리(中心極限定理)는 모집단에서 추출한 표본의 수가 많으면 많을수록, 그 표본집단은 정규분포에 수렴한다는 것을 설명한다. 대부분의 모집단에 대하여 중심극한정리가 성립하며, 이러한 이유에서 정규분포는 다른 분포의 모범(Prototype) 또는 기준(Criterion)이 된다. 즉 다른 분포 모델에 정규분포 모델을 적용하여 일반화할 수 있다는 것이다. 다만, 코시 분포와 같은 평균과 분산이 존재하지 않는 분포 모델에 대해서는 정규분포 모델로 일반화할 수 없다.
8. 데이터 사이언티스트가 되는 험난한 첫 관문을 통과한 주니어 데이터사이언티스트가 맨 처음 익혀야 할 가장 중요한 기예 중 하나는 데이터분석도 코딩도 아닌 git 사용법입니다. Git 에 대하여 아는대로 서술하시오.
Git은 Linux를 창시한 사람이 만든 것으로 개발자들의 공동 작업 공간이 필요했었음
그래서 기준이 되는 Master 공간, 개인 또는 공동으로 작업하는 Branch공간으로 나눠, 작업을 완료할 시에 Pull request를 함으로써 다른 작업자들에게 리뷰를 받는 형식
Git init(root) - head
Git add —> git commit 하는 순간 head가 바뀜
Conflict(commit하는 과정에서 library의 사용이 중복)
Prod —> production branch
Git diff —> ~사이에 작업들 변경사항을 보여줌
Git add —> local에서 stage로 올림
Git commit -v (verbose)
Remote(not local) push
PR : 나 push하려고 하니 최신 branch를 pull받으라고 얘기하는게 pull request
Rebase: 이전 commit을 기억하는 것
Git rebase master
Git log: 로그가 기록되어있음
Git reflow: 여태까지 했던 장난질 다 볼 수 있음
branch 바꾸기: git chekdout -b “branchname”
반영 사항이 있을 때, 버리고 싶다 할 때, Reset: head~1 —> 지워짐
Reset hard / soft —>
Git branch -d ~~ : deleted branch
(인공지능을 위한 기초수학 29강 5팀 황태식팀 Project 깃허브 학생 발표 https://youtu.be/4A2sdsQyPKM) https://github.com/progit/progit2
Git은 리눅스 개발자인 리누스 토발즈가 리눅스 커널을 제작하기 위해 개발한 소스 관리 프로그램이다. 다양한 개발 관리 프로그램들(Phabricator, Jenkins)이 Git을 기저로 할 정도로, 상당히 중요한 영역을 차지한다. Git은 모든 소스의 변화를 추적해서, 데이터를 저장하기에, 소스에 문제가 발생하였을 경우, 경로를 추적하여, 문제를 찾는데 도움을 줄 수 있다. 이러한 Git의 용이함 덕분에, 전 세계 개발자들이 Git에 소스를 백업해두는 방식으로 프로젝트를 진행한다.
Part 9. 다음에 답하여라.
1. 인공지능을 위한 기초수학 강의 Part 1, 2, 3 를 통하여 배우고 깨우친 수학적 내용 중 특히 기억나는 내용을 서술하시오.
Part1에서는 수학의 기초가 되는 행렬에 대해 공부하면서 그전에 몰랐던 다양한 행렬의 적용방법들을 알게 되었습니다. 특히, 선형연립방정식의 해를 구하는 것이 가장 인상 깊었습니다. 계수행렬과 첨가행렬을 가지고 Gauss소거법과 Gauss-Jordan 소거법을 이용해 차수가 높은 선형연립방정식을 풀 때, 행렬을 만들고 sage를 이용해 해를 도출할 수 있다는 점이 인상 깊었습니다. 또, 최소제곱해를 이용하여 근삿값을 추정하는 것을 보고 이를 알고리즘에 적용시킨다면, 빅데이터를 분석하여 미래를 예측하는 알고리즘을 짤 수 있을 것 같아서 인상 깊었습니다.
Part2에서는 처음으로 다변수함수에 대해 공부를 할 수 있는 기회가 되어 좋았습니다. 다만, 나오는 개념들이 어려워서 이해하기가 어려워 공부를 열심히 해야 했습니다. 특히, 편도함수의 의미는 기억에 많이 남습니다. 왜냐하면 편도함수의 개념을 완벽히 이해해야 뒤에 나오는 그래디언트, 방향도함수 그리고 최종적으로는 경사하강법에 대해서 이해를 할 수 있기 때문에 저는 편도함수의 수식적 의미와 계산법 그리고, 시각적인 의미가 가장 인상 싶었습니다.
Part3에서는 고등학교 때 배웠던 순열과 조합을 다시 복습 할 수 있는 기회가 되어서 좋았습니다. 배웠던 조건부 확률이 베이즈 이론의 토대가 되어서 사전확률과 사후확률관의 관게를 파악 할 수 있다는 점이 인상 깊었습니다. 또, 새롭게 배운 개념인 포아송분포와 중심극한정리를 통해 통계에 한층 깊게 발을 내딛을 수 있어서 좋았습니다. 마지막으로, 배웠던 독립과 종속을 이용해 공분산과 상관게수를 이해하는데 도움이 되었습니다.
최소제곱문제(Least Square Problem)를 학습하였을 때가 가장 기억에 남습니다. 이전에 프로그램을 이용하여 그래프의 추세선을 그릴 때, 어떤 방법으로 추세선이 완성되는지에 대하여 궁금증을 느꼈습니다. 최소제곱해를 구하는 방법을 학습하면서, 추세선이 이와 같은 방식으로 그려진다는 것을 깨달았습니다. 1차 함수, 2차 함수 또는 자료가 충분하다면, 고차함수까지 최소제곱법을 이용하여 표현할 수 있다는 것을 깊이 깨달았고, 지금도 자료의 추세선을 구하기 위해 최소제곱법을 적극 활용하고 있습니다.
2. Q&A 참여와 PBL 과제를 완성하는 과정에서 배우거나 느낀 점은 무엇인가요?
학생들의 참여가 활발하게 이루어져 복잡한 지식을 단순히 암기하는 것이 아닌 이해를 통해 인공지능에 대해 알아가는 점이 좋았습니다. 각 part 별로 다양한 의견들을 접할 수 있는 기회가 있어서 참 좋았습니다. 그리고 교수님이 보충자료를 내어 주셔서 궁금했던 점들을 해결할 수 있어서 좋았습니다. 다만, part2에 나오는 다변수 미적분학과 최적화에 관해서는 공부가 부족한 것 같아 조금더 공부를 해야겠다고 느꼈습니다.
PBL 보고서를 작성하는 과정은 시간이 많이 드는 작업이기는 하나, 그만큼 성과를 낸다는 점에서 보람이 있는 것 같습니다. 지금까지 학습하였던 내용들을 되돌아보며, 자연스럽게 복습이 된다는 점에서, PBL 보고서 작성으로부터 많은 이점을 보았습니다. 또한 Q&A 참여는 다른 동료들의 다양한 의견이나 생각을 접할 수 있는 기회를 주어, 생각의 견문을 넓히는 데에 도움을 주었습니다. 앞으로도 Q&A 활동과 PBL 보고서 작성에 더 힘쓰도록 하겠습니다.
part 10
part4 빅데이터와 인공지능에서 배운 개념 10가지 정리하기
1. 인공지능: Carnegie Mellon대 전산학부 Andrew Moore는 “인공지능은 최근까지 우리가 필요하다고 생각한 방식으로 컴퓨터가 행동하도록 만드는 과학 및 공학”이라고 정의
2. 기계학습: Machine Learning이라고 통칭되는 기계학습은 컴퓨터 과학자이자 기계 학습의 선구자인 Tom M. Mitchell이 정의한 바와 같이 “컴퓨터 프로그램이 경험을 통해 자동으로 개선 될 수 있도록 하는 컴퓨터 알고리즘에 대한 연구” 이다. 즉 기계학습은 인공지능과 동의어라기보다는 인공지능을 달성하기 위하여 주어진 데이터를 조사하고 비교하여 공통 패턴을 찾고, 뉘앙스를 탐색하여 특정한 과제를 수행하도록 돕는 한 방법론이라고 할 수 있다.
3. 지도학습: 지도학습은 데이터에 대한 레이블(Label)이 주어진 상태에서 컴퓨터를 학습시키는 방법으로 앞으로 2절에서 살펴볼 “MNIST 데이터셋을 활용한 손 글씨 숫자 인식”이 대표적인 예라고 할 수 있다.
4. 비지도학습: 데이터에 대한 레이블이 주어지지 않은 상태에서 컴퓨터를 학습시키는 방법으로 데이터의 숨겨진 특징이나 구조를 발견하는데 사용된다. 주성분 분석(PCA)이 데이터의 차원을 줄이는 비지도학습의 대표적인 예이다.
5. 강화학습: 환경과의 상호 작용에서 수집한 관측치를 사용하여 보상을 극대화하거나 위험을 최소화하는 조치를 취하는 것을 목표로 하는 것으로, 어떤 환경 안에서 정의된 에이전트(Agent)가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상(Reward)을 최대화하는 행동 혹은 행동 순서를 선택하는 방법이다.
6. 신경망: 신경망(Neural Network)은 기계학습의 모델 중의 하나로, 신경계의 기본 단위인 뉴런(신경세포, Neuron)을 모델화 한 것이다. 인공 뉴런(Artificial Neural Network)은 1943년에 Warren McCulloch와 Walter Pitts가 처음 소개하였고, 1950년대 초반에는 문제 해결과 기호법 등의 주제를 주로 탐구했다. 1950년대 후반에 이르러 Frank Rosenblatt과 여러 연구자들이 퍼셉트론(Perceptron)이라 불리는 신경망을 고안하였다. 퍼셉트론의 경우, 문제를 해결하는 가중치(weight)가 있는 경우에 학습 규칙이 정확한 네트워크의 가중치로 수렴한다는 것을 입증했지만, 많은 한계를 가지고 있어서, 오랫동안 신경망 연구가 중단되었다.
1960년대로 접어들면서 이러한 연구에 관심을 보인 미 국방부는 인간의 기본적인 추론 방식을 흉내 낼 수 있도록 컴퓨터를 훈련하기 시작하였고, 1970년 국방 고등연구기획국(DARPA)이 수행한 도로 지도화 프로젝트가 그 사례라고 할 수 있다. 1980년대에 이르러 다중 신경망(Multi-layer Networks)을 학습하는 오차 역전파법(Back Propagation Algorithm)이 개발되면서 신경망 연구가 다시 활력을 얻게 되었다. 또한 국방 고등 연구 기획국은 Siri, Alexa나 Cortana와 같은 인공지능이 개발되기 한참 전인 2003년에 지능형 개인 비서를 개발하기도 하였다.
7. 딥러닝: 음성을 인식하고, 이미지나 패턴을 확인하고, 다음 상황을 예측하는 일과 같이 인간이 하는 작업을 수행하도록 컴퓨터를 교육하는 일종의 기계 학습(머신 러닝)이다. 사전에 정의 된 수식을 통해 실행되도록 데이터를 구성하는 대신, 1. 주어진 데이터에 초기 파라미터(parameter)를 설정해주고, 2. 여러 겹의 처리 계층을 사용하여 패턴을 인식하면서, 컴퓨터가 스스로 학습하도록 훈련(train)하는 것이다. 이러한 노력들은 오늘날 우리가 일상에서 접하고 있는 자동화와 형식 추론 기술의 기틀을 다지는 역할을 하였으며, 이러한 기술에는 사람의 능력을 보완하고 확장할 수 있는 의사 결정 지원 시스템과 스마트 검색 시스템이 포함된다. Amazon과 Netflix가 머신러닝을 이용한 추천 시스템의 개념을 대중화한 것과 같이, 앞으로 산업 전반적인 분야에서 인공지능(AI)이 활용될 것으로 사료된다.
8. 센터링된 행렬 : 행렬 X의 각 열의 평균을 구한다. 그 후, 열별로 데이터에서 열의 평균을 뺀다. 이 행렬을 센터링된 행렬이라 한다.
9.라그랑주 승수법 :

10. PC 유도



9. PC score:
를 센터링(mean-centered)된
의 데이터 행렬이라 하자. 여기서
은 표본(sample)의 개수이고,
는 확률변수(variable, feature)의 개수이다. 공분산 행렬
는
대칭행렬이므로, 다음과 같이 직교대각화가 가능하다.
여기서
는
의 고윳값
를 크기 순서대로, 주대각선 성분에 배열한 대각선행렬이고,
는 그에 대응하는 정규직교인 고유벡터를 열벡터로 하는 직교행렬이다. 또한
이므로
는 양의 준정부호(positive semidefinite) 행렬이고, 고윳값은
이다. 그리고 고유벡터는 주축(principal axes) 또는 주방향(principal directions)이라고도 부른다.
▪ 주성분(PC)
,
, ... ,
를 벡터로 나타내면 다음과 같다.
![]()
![]()
그리고 각 확률변수
에 원 데이터를 대입하면 행렬
를 얻는다.

그러면
의
번째 데이터의 좌표는
의
번째 행벡터로 주어지고,
번째 PC score (주성분점수, principal component score)는
의
번째 열벡터로 주어진다.
10. 오차 역전파법: 이때 어떤 공식에 의해서 가중치를 계산하는 것이 아니라, 초기에 임의로 가중치를 부여해놓고, 주어진 데이터로부터 신경망을 이용하여 얻은 예측값과 미리 알고 있는 정답간의 오차를 줄이는 방향으로 가중치를 점차 갱신해 나간다. 이때 계층 간의 각각의 연결이 오차에 영향을 주는 정도에 비례해서 오차를 전달해준다.
part 11. 수학적 개념을 R/Sage를 통하여 계산
1. PCA 적용 예제
- 데이터 입력
[Code]
|
|
[Output]
|
|
- Scaling 작업
[Code]
|
|
[Output]
|
|
- PCA 진행
[Code]
|
|
[Output]
|
|
- PC2까지만 보존하며 15% loss는 감수하기로 함 and clustering
[Code]
|
|
[Output]
|
|
Ch 5장. (Math4AI) 인공지능을 위한 기초수학 Take-Home Exam 1
※ Sage를 활용하여 다음 물음에 답하시오.
(모든 답은 http://matrix.skku.ac.kr/math4ai/ 안에 있습니다. 모르는 것은 QnA에서 문의하면서 해결하세요)
1. random_matrix 명령어를 이용하여
행렬
를 생성하여 프린트하라.
[Python/Sage 실습] http://sage.skku.edu/ or https://sagecell.sagemath.org/
[SageMath code]
A=random_matrix(RR,10,10)
#실수를 성분으로 갖는 임의의
행렬을 변수 A에 저장하였다.
#random_matrix(행렬 성분의 집합 범위, 행의 개수, 열의 개수)와 같이 사용하여 인수의 조건에 맞는 임의의 행렬을 추출하는 함수이다.
print('A=')
#A= 이라는 문자열을 출력한다. 뒤에 나오는 행렬이 문제에서 제시한 행렬 A라는, 프로그램 사용자를 위한 설명이다.
print(A)
#A에 저장된 행렬을 출력하여 사용자가 확인할 수 있게 한다.
[Answer]
A=
[-0.0810574904529597 -0.0315953952001826 0.434605474677062 -0.589408175113826 0.143123191793563 0.560993342689594 -0.715493862665100 0.213990144994119 -0.837493982775279 0.670419118020587]
[ 0.995893530729509 -0.412686371527930 -0.279200247094490 0.280239288236116 0.180847237537552 0.532903393879738 0.923413466795840 -0.932377304121067 -0.815319875798445 0.818110674178097]
[ 0.0997401847483779 -0.328126420741520 -0.220983264355018 -0.143557146263477 0.609150828115990 -0.785834521847751 -0.860466312280180 0.369867001562719 -0.316409008928000 0.867327993942219]
[ -0.650248519898284 0.594975379540348 -0.454495558572579 0.384422032571508 -0.517535891393456 -0.668927236015227 -0.145877776539044 -0.238958928398627 -0.711775348460367 0.556207526918584]
[ 0.588636021341729 0.520345633152163 0.834377476810290 -0.643340238393702 0.671660703803748 0.0830896139761901 -0.256711406305594 0.349942780404928 0.0601778092397069 -0.909685468224527]
[ 0.807913592329140 -0.0174839187778988 0.432769342374981 -0.164609711504186 -0.224522703895981 0.646522762418065 0.113116910336948 -0.137273319807673 -0.960305531900143 -0.543805365438239]
[ 0.945691051872688 -0.698718965505637 0.623209172086792 -0.0535677626214230 0.642782714654501 0.483284909578136 -0.764946274823766 0.499029797227238 0.132688112368851 0.892482214088352]
[ 0.323684553579089 -0.590220351328914 0.462906926425548 -0.873519361947495 -0.239237153982355 0.823677626938874 -0.384125454308436 -0.0349244571722744 -0.565441139168001 0.0297197215433596]
[ -0.623085795543932 -0.0657190782563146 0.842947239620546 -0.674158914609566 0.494699387439734 -0.281115243903148 -0.0259245389854739 -0.801265348380496 0.998705502887361 -0.0532177490921557]
[ -0.725167111798371 -0.182313663225036 -0.477422174931433 -0.659727486007039 -0.356368174392070 -0.634556359018005 0.547831894981698 -0.956975935284506 0.637047229387327 -0.694669149120790]
1. random_matrix 명령어를 이용하여
행렬
를 생성하여 프린트하라.
[Python/Sage 실습] http://sage.skku.edu/ or https://sagecell.sagemath.org/
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
A =
[ 0 -1/2 0 -2 -1/2 0 0 1 1 -2]
[ -1 0 1 -2 -1 -1 1 0 0 0]
[ -2 -1/2 0 -1/2 -1 -1 1/2 2 0 2]
[ 2 -2 0 -1 -1/2 0 -1 1 1 0]
[ 0 -2 -2 0 0 0 1 1 -1/2 1/2]
[ -1 2 2 0 -2 2 0 1 2 2]
[-1/2 0 0 -1 0 0 1/2 2 1 0]
[ 0 -1 -2 0 -1/2 -2 1 -1/2 -1 -1/2]
[ 1 0 2 1 -1 1 0 0 0 0]
[ 1 0 -1 -2 2 2 1 2 0 0]
[Answer]
2. 행렬 A (
)의 RREF를 구하여라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
#1번 문제와 동일하므로 설명 생략.
print()
#구분을 위해 빈 행을 추가하였다.
print('RREF(A)=')
#RREF(A)= 라는 문자열을 출력한다. 뒤에 나오는 행렬이 문제에서 제시한 A의 RREF라는 프로그램 사용자를 위한 설명이다. 임의의 행렬 A에 대해 RREF행렬은 무조건 하나씩 대응되므로 함수의 성립요건에 해당되며 이 함수를 RREF(A)와 같이 표시할 수 있는 것이다.
print(A.rref())
#주어진 변수 A에 행렬이 저장되어 있을 때 성립하는, 변수 A에 실행하는 명령어로써, 이 행렬의 RREF를 구한다.
[Answer]
A=
[ -0.176989405881533 -0.339478179293983 0.370392515521230 0.573154567412394 -0.472015705004040 -0.688050670834387 -0.229230418570102 0.871510244957225 -0.335907840282178 -0.0383184269924268]
[ -0.926854649321177 0.361905656247053 0.826961900870319 0.0119123478871803 0.110034170691282 0.00909819151596736 0.0538259036894979 0.933400796075778 0.529861477121748 -0.0953626948103328]
[ 0.366758662176381 -0.0746468974021028 0.585125773760126 -0.927720135792025 0.681777411925133 0.247533487857208 0.378229635702167 -0.0650106892110123 0.898392705934302 0.801031248900659]
[ 0.768438735551628 -0.297705528169051 0.724713555216966 0.786684343089883 -0.577096944988962 -0.566636712510147 -0.824321557333578 0.379699647731903 0.453322139152429 -0.0157726920751864]
[ -0.890630835270334 0.551814379750666 0.725512902236022 -0.888061469974506 -0.364515719160597 -0.840401689868165 -0.282322296859077 -0.933438405320845 0.868150849402404 0.493012494068796]
[ 0.577547953467644 -0.374657391106514 0.838215042376742 -0.741484473142925 -0.603983631559839 -0.263614294222904 0.257364090469840 0.388589328259415 0.984363490747592 0.806484109766105]
[ -0.424523844528162 -0.170518587467637 0.852553095132004 0.934873828733325 0.523926901858389 0.462946102568978 -0.977325893324710 -0.187058765497322 -0.106809084710726 -0.480976868678056]
[ 0.106160506026773 0.0276056811027563 0.122955768187369 -0.786754872949804 -0.180682883195119 0.0581817949138870 -0.617960217990581 -0.537682527244281 -0.271672852546996 -0.582243664015413]
[ 0.312409082268402 0.523708295979268 -0.208305071664724 0.167808022336748 0.449447935859392 0.234717998565425 0.511038840554252 0.940708511981600 0.368622375010440 0.177830626680151]
[ 0.796271473703662 0.262070775191768 -0.800394373769335 0.0702542183372277 -0.369944469529473 0.0140522588905829 -0.413005797556090 0.0999147714752811 -0.718612483732513 0.898410753734248]
()
RREF(A)=
[ 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000]
[0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000]
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
print("RREF[A} =")
A.rref()
A =
[ 0 2 0 2 -1/2 1 0 0 0 -1/2]
[ 0 1 -1/2 -2 -1/2 0 0 -2 2 -1/2]
[ 2 0 0 1 -2 2 0 1 0 1]
[ -1 -1 0 0 -1 2 0 2 0 -1]
[ -1 0 0 0 0 0 1/2 -1 -2 -1]
[ -1 0 -1 0 -1 0 1 2 -2 0]
[ -2 0 -1 2 0 0 2 1 1 1]
[ 1/2 -1 2 0 0 -1 -2 2 0 -1]
[ -1 1 -1/2 1 0 0 -1 -2 0 -1]
[ 0 0 -2 2 2 0 0 1 -2 0]
RREF[A} =
[1 0 0 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0]
[0 0 0 1 0 0 0 0 0 0]
[0 0 0 0 1 0 0 0 0 0]
[0 0 0 0 0 1 0 0 0 0]
[0 0 0 0 0 0 1 0 0 0]
[0 0 0 0 0 0 0 1 0 0]
[0 0 0 0 0 0 0 0 1 0]
[0 0 0 0 0 0 0 0 0 1]
[Answer]
3.
을 이용하여
의 역행렬이 존재하면 계산하라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
print()
#위와 동일
I=identity_matrix(10)
#identity_matrix(n)은 n차 정사각행렬을 추출하는 함수이다. 추출된 10차 정사각행렬을 변수 I에 저장하였다.
AI=A.augment(I)
#A.augment(I)라고 하면 행렬 A에 대해 행렬을 이어붙여 첨가행렬을 생성하라는 명령어로써, augment는 이어붙일 행렬을 인수로 받는다. 앞서 정의한 A와 I를 이어붙여 첨가행렬이 생성되고 이를 변수 AI에 저장하였다. 여기서 주의할 것은, A와 I가 행의 개수가 같아야 한다는 것이다. 다른 경우 오류가 발생한다.
print('[A:I]=')
#[A:I]= 문자열 출력
print(AI)
#변수 AI에 저장된 첨가행렬 출력
print()
print('RREF([A:I])=')
#RREF[A:I])= 문자열 출력
print(AI.rref())
#첨가행렬 AI의 RREF를 구하여 출력한다. A가 역행렬이 존재하면 좌측 10개의 열은 단위행렬을 나타내고 우측 10개의 열은 A의 역행렬을 나타낸다.
print()
Ainverse=AI.rref().submatrix(0,10,10,10)
#X.submatrix(a,b,c,d)라고 하면 행렬 X의 부분행렬을 추출하는 명령어로써, 행렬 X의 (a+1, b+1)성분부터 시작해서 c개의 행 d개의 열로 이루어진 부분행렬을 추출하는 것이다. submatrix는 a,b,c,d 네 개의 인수를 필요로 한다. 여기서는 앞에서 구한 첨가행렬의 RREF를 구하는 명령어를 먼저 썼고, 이 결과물 RREF에 대해 부분행렬을 취하는 방식을 중첩하여 사용하였다. 첨가행렬의 RREF중 우측 10열만을 뽑는 것으로 이는 A가 역행렬이 존재하는 경우 역행렬에 해당한다. 이 부분행렬을 변수 Ainverse에 저장하였다.
print('Inverse of A=')
#Inverse of A= 문자열 출력
print(Ainverse)
#Ainverse에 저장된 값 출력
[Answer]
A=
[ -0.394256738337654 0.356964304358265 -0.108890636751400 0.876919776572879 -0.843543395503932 -0.361346152186643 -0.713613162703293 -0.847071442484876 -0.933459208730737 -0.548715322855787]
[ -0.118704490153800 0.701580862847701 -0.319797989350504 -0.677849639665168 -0.332114429769741 0.812680865960159 0.723572636334499 0.940691765885822 0.750108580823846 -0.468064854220632]
[ 0.472682578624387 0.701994901695108 -0.396253719983986 -0.824178832420996 0.870076390999773 -0.133864996163726 0.574485887939634 0.505047090197728 -0.0462870872235812 -0.576683187509162]
[ 0.0646666764680524 -0.416215720923533 -0.206226162550920 -0.175301380522551 -0.135099535342695 -0.406988539370642 -0.102978368656611 -0.787026483275502 0.607932035091403 0.916543538972909]
[ 0.910316121932199 -0.749570532464278 0.976308174173077 0.851228638377003 0.132064237022127 -0.891617618098671 -0.709864853392647 0.887387697151474 0.319196620568004 0.944561634665905]
[ -0.130236797640187 -0.380402160870725 0.757340232988972 0.110148097205345 -0.461612032291286 -0.949288774334692 0.0368026774486532 0.0946545450870162 -0.263017128099887 0.831769240699640]
[ -0.959525105467639 -0.0770827102589449 -0.797068237601090 0.473990753689832 0.163598288272364 0.287117366236974 -0.656653786423287 -0.804855102211769 0.983455698552272 -0.937138245439851]
[ 0.692474173407525 -0.831331384372155 -0.345538525531503 0.0682556511756391 -0.871109362992258 0.931230643088211 0.0255714179111239 -0.0137203367276342 0.0588608017140178 0.191567749631428]
[ -0.595712521064864 0.399410114591220 -0.682449097354156 0.168141001980611 0.941717111498612 -0.124335565290723 -0.756484419923765 -0.312497210243427 0.668179362561484 -0.573439436396522]
[ 0.847881275078301 -0.703073026878231 -0.0768438983890356 -0.895694769053502 0.403482994832922 -0.117694223382202 0.282252131712768 0.367014889546175 0.452124815715655 0.267714898735667]
()
[A:I]=
[ -0.394256738337654 0.356964304358265 -0.108890636751400 0.876919776572879 -0.843543395503932 -0.361346152186643 -0.713613162703293 -0.847071442484876 -0.933459208730737 -0.548715322855787 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ -0.118704490153800 0.701580862847701 -0.319797989350504 -0.677849639665168 -0.332114429769741 0.812680865960159 0.723572636334499 0.940691765885822 0.750108580823846 -0.468064854220632 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ 0.472682578624387 0.701994901695108 -0.396253719983986 -0.824178832420996 0.870076390999773 -0.133864996163726 0.574485887939634 0.505047090197728 -0.0462870872235812 -0.576683187509162 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ 0.0646666764680524 -0.416215720923533 -0.206226162550920 -0.175301380522551 -0.135099535342695 -0.406988539370642 -0.102978368656611 -0.787026483275502 0.607932035091403 0.916543538972909 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ 0.910316121932199 -0.749570532464278 0.976308174173077 0.851228638377003 0.132064237022127 -0.891617618098671 -0.709864853392647 0.887387697151474 0.319196620568004 0.944561634665905 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ -0.130236797640187 -0.380402160870725 0.757340232988972 0.110148097205345 -0.461612032291286 -0.949288774334692 0.0368026774486532 0.0946545450870162 -0.263017128099887 0.831769240699640 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ -0.959525105467639 -0.0770827102589449 -0.797068237601090 0.473990753689832 0.163598288272364 0.287117366236974 -0.656653786423287 -0.804855102211769 0.983455698552272 -0.937138245439851 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000]
[ 0.692474173407525 -0.831331384372155 -0.345538525531503 0.0682556511756391 -0.871109362992258 0.931230643088211 0.0255714179111239 -0.0137203367276342 0.0588608017140178 0.191567749631428 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000]
[ -0.595712521064864 0.399410114591220 -0.682449097354156 0.168141001980611 0.941717111498612 -0.124335565290723 -0.756484419923765 -0.312497210243427 0.668179362561484 -0.573439436396522 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000]
[ 0.847881275078301 -0.703073026878231 -0.0768438983890356 -0.895694769053502 0.403482994832922 -0.117694223382202 0.282252131712768 0.367014889546175 0.452124815715655 0.267714898735667 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000]
()
RREF([A:I])=
[ 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.550376748940239 0.0958035358644910 0.0988774739852843 0.553327228322618 0.529256936207387 -1.31761623180645 0.0161789584392746 -0.518562389003161 -0.865408776194245 0.414597732402604]
[ 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.540119813936760 0.576300875482120 -0.410581096741517 0.652586628022451 0.232686774739270 -1.16090465735427 -0.594494839087495 -0.861582558542664 -0.141492404421636 0.0142949536563380]
[ 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.626730559734835 0.403858107951941 -2.11832047787857 0.0499807699103629 0.277299156001173 -2.37635756849756 -0.140588254849957 -2.50033877753478 -1.53744383459269 1.66511761437226]
[ 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -0.787520649180202 -0.606584364651834 1.60290555782881 0.120338184647243 0.479925085049444 0.629445719334379 0.926427882981313 1.00561342469371 -0.546047221358812 -1.92899794863042]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -0.644521256989884 -0.589219092479123 0.217139984138679 -0.153924647980941 -0.0261760778297654 -0.195600396027546 0.0180674709691585 -0.0386007425649279 0.0862033594315952 -0.380904185429680]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -0.124226968000834 0.0918116795632278 -1.18253906575926 -0.0916757323481082 -0.139775072231055 -1.23283569220958 -0.560696137038367 -0.448774223818228 -0.0280149750644236 0.294342762297869]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -1.00515887315470 -0.614284132011646 1.88680319870506 0.202091670211539 0.0786026125404340 0.886734449530953 1.24800542954528 0.726511594122082 -1.25372297745639 -1.63072449213542]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 -0.395101787632522 0.130652451707400 0.643192092952589 -0.695693365703601 -0.0436939437631629 1.57514291695141 -0.203946428408127 1.23530498944005 1.20182667922401 -0.577378568247105]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.140548802574308 0.454946745603962 -0.255946665366785 0.552043479056197 0.436146904801901 -0.800323274423910 0.530022732694661 -0.765072043241073 -0.784790835715997 0.311705396874246]
[ 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 -0.498757191895780 -0.0748719957739896 0.0774835383889755 0.378387593701600 -0.161393695182946 0.558244063267961 -0.758328074957258 0.719947541249812 0.958377385024095 -0.828252171513816]
()
Inverse of A=
[ 0.550376748940239 0.0958035358644910 0.0988774739852843 0.553327228322618 0.529256936207387 -1.31761623180645 0.0161789584392746 -0.518562389003161 -0.865408776194245 0.414597732402604]
[ 0.540119813936760 0.576300875482120 -0.410581096741517 0.652586628022451 0.232686774739270 -1.16090465735427 -0.594494839087495 -0.861582558542664 -0.141492404421636 0.0142949536563380]
[ 0.626730559734835 0.403858107951941 -2.11832047787857 0.0499807699103629 0.277299156001173 -2.37635756849756 -0.140588254849957 -2.50033877753478 -1.53744383459269 1.66511761437226]
[ -0.787520649180202 -0.606584364651834 1.60290555782881 0.120338184647243 0.479925085049444 0.629445719334379 0.926427882981313 1.00561342469371 -0.546047221358812 -1.92899794863042]
[ -0.644521256989884 -0.589219092479123 0.217139984138679 -0.153924647980941 -0.0261760778297654 -0.195600396027546 0.0180674709691585 -0.0386007425649279 0.0862033594315952 -0.380904185429680]
[ -0.124226968000834 0.0918116795632278 -1.18253906575926 -0.0916757323481082 -0.139775072231055 -1.23283569220958 -0.560696137038367 -0.448774223818228 -0.0280149750644236 0.294342762297869]
[ -1.00515887315470 -0.614284132011646 1.88680319870506 0.202091670211539 0.0786026125404340 0.886734449530953 1.24800542954528 0.726511594122082 -1.25372297745639 -1.63072449213542]
[ -0.395101787632522 0.130652451707400 0.643192092952589 -0.695693365703601 -0.0436939437631629 1.57514291695141 -0.203946428408127 1.23530498944005 1.20182667922401 -0.577378568247105]
[ 0.140548802574308 0.454946745603962 -0.255946665366785 0.552043479056197 0.436146904801901 -0.800323274423910 0.530022732694661 -0.765072043241073 -0.784790835715997 0.311705396874246]
[ -0.498757191895780 -0.0748719957739896 0.0774835383889755 0.378387593701600 -0.161393695182946 0.558244063267961 -0.758328074957258 0.719947541249812 0.958377385024095 -0.828252171513816]
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
I=identity_matrix(10)
AI=A.augment(I).rref()
A_inv=AI.submatrix(0,10,10,10)
print("A-1 =")
print(A_inv)
[Answer]
A =
[ 0 0 0 -1/2 2 0 -2 0 0 -1]
[ 0 2 0 0 -1 -1/2 1 0 2 -1/2]
[ 1 -1/2 0 1 2 0 1 0 0 1]
[ 1 0 1/2 1/2 -1/2 0 1 -2 2 -2]
[ 1 -1/2 1/2 2 0 2 -2 0 2 -1]
[ 2 2 1/2 0 1/2 0 0 1 0 0]
[ -1 1 0 2 -1/2 -1 -2 0 -1/2 0]
[ 0 0 0 -1 1 0 1 -1/2 -1 -2]
[ 1 -2 1/2 0 2 0 -1/2 0 -1 0]
[ -1 1 0 2 -1 1 -1/2 -2 2 -1]
A-1 =
[ 13237/61414 -50599/61414 40003/122828 21273/30707 11999/122828 5852/30707 3795/61414 -6381/30707 -120499/122828 -67007/122828]
[ 1770/30707 2812/92121 -4436/92121 -14338/92121 -15226/92121 28046/92121 -4124/92121 836/30707 506/30707 27734/92121]
[ -25528/30707 53840/30707 -39070/30707 -37428/30707 -12410/30707 13348/30707 -8024/30707 1544/30707 97904/30707 43716/30707]
[ -6307/30707 -617/92121 52397/184242 1508/92121 37345/184242 -8578/92121 27637/92121 5626/30707 -7735/61414 -20033/184242]
[ 4730/30707 8866/30707 4665/30707 -7336/30707 -2055/30707 -462/30707 -2170/30707 2928/30707 9853/30707 6373/30707]
[ -7205/61414 -24805/184242 -36923/368484 -31798/92121 38777/368484 15695/92121 -60067/184242 4197/30707 8545/122828 145991/368484]
[ -9207/30707 9593/30707 6119/61414 -5430/30707 859/61414 -2100/30707 -1489/30707 7726/30707 14201/61414 4897/61414]
[ -6378/30707 52114/92121 475/92121 -31816/92121 34151/92121 -18412/92121 12154/92121 8854/30707 5359/30707 -30091/92121]
[ 4378/30707 38044/92121 3670/92121 482/92121 7862/92121 -18136/92121 -8882/92121 -5288/30707 3264/30707 -5584/92121]
[ 641/61414 -8107/184242 -13865/368484 -12190/92121 -96973/368484 14117/92121 -35809/184242 -12409/30707 29755/122828 114221/368484]
4. 행렬 A (
) 의 수반행렬을 계산하라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
print()
detA=A.det()
#앞서 정의한 변수 A에 저장된 행렬에 대하여 행렬식을 추출하는 함수이다. 추출된 행렬식을 detA에 저장하였다.
print('det(A)=')
#det(A)= 문자열 출력
print(detA)
#detA에 저장된 행렬식 값 출력
print()
adjA=A.adjoint()
#A에 저장된 행렬에 대하여 수반행렬을 추출하는 명령어이다. 추출된 수반행렬을 adjA 변수에 저장하였다. adjugate도 시도해보았으나 오류가 나는 것으로 보아 등록된 명령어가 아닌 듯 하다.
print('adj A=')
# adj A= 문자열 출력
print(adjA)
# adjA에 저장된 수반행렬 출력
print()
print('A*(1/det(A))*adj A=')
#A*(1/det(A))*adj A= 문자열 출력
print(A*(1/detA)*adjA)
#A와 행렬식의 역수와 수반행렬의 곱을 출력한다. 행렬식의 역수와 수반행렬의 곱이 A의 역행렬이 됨을 확인하기 위하여 시행하였다. 결과를 보면 단위행렬이 나오진 않으나, 주대각성분이 1에 가깝고, 이외 성분이 0에 가까운 것을 확인할 수 있다. 프로그램에서 근사값으로 계산했다는 것을 짐작할 수 있으며, 단위행렬이라고 할 수 있는 허용 범위의 값이 나온 것을 본 바, 행렬식의 역수와 수반행렬의 곱이 A의 역행렬이 됨이 확인되었다.
[Answer]
A=
[ 0.240475096314838 0.930561972627997 -0.339892273895526 0.381747947314519 -0.391334039035316 0.982013491524803 0.479633029586303 -0.512686518993011 0.372147327703001 0.489077159477197]
[ 0.789183140107191 0.101697897063628 0.650912225103305 0.346584356235777 -0.954116630732678 -0.534238085718857 0.0493755251282504 -0.0724094250501559 -0.892849071180307 -0.0165015195827853]
[ 0.744428849119275 0.880987169054156 0.956587794011690 0.415722240187538 -0.0823054065442526 -0.706665684438625 0.328731736036912 0.925654236227738 0.854284544992092 0.933064566988597]
[ 0.0836247663653318 0.458261842711255 -0.954197164145436 -0.587179342257721 -0.565468577996856 0.871900026121192 0.505848119634488 -0.797878955602872 0.639780982800796 -0.810260171826108]
[ 0.527363069965974 0.437646151004052 0.231462707480091 -0.631055969230724 0.205903175947377 0.691130826799820 -0.245468202642727 0.00565139903557599 0.679751622650123 -0.934363357625852]
[-0.0583866307904279 0.123889193879618 -0.384974613919248 -0.342945355399537 0.457577651220310 -0.572164571580254 0.126845830274288 -0.0471091248408877 0.287481074702335 0.226823130863107]
[ 0.627262087395424 0.245740800846622 0.00106513201884018 -0.720016821039703 0.417078361078580 0.410482204246660 -0.0285534173673418 -0.409334883286897 0.622283942147426 0.947569230308285]
[ 0.0190591140619476 -0.690278518250302 -0.702350867245306 -0.396163973593957 0.972715336462072 -0.630604684225135 -0.519544458155100 0.144929526481574 0.983657127499731 -0.0819487171411573]
[ 0.389643612516848 0.721911706841404 -0.139592084414398 -0.543685271744907 -0.442193215543607 -0.796802216800796 -0.515532392463033 0.972062916124594 -0.639795935074913 0.876783198652771]
[ -0.717672451668083 -0.137950746502894 0.561027765403965 -0.314952802098927 0.0514771715986237 -0.235974375720491 -0.360603245397666 -0.793726255557747 0.00390191936050677 -0.543038541730243]
()
det(A)=
10.7063424373958
()
adj A=
[ 1.86218182791382 7.41469979466853 -1.84531825565489 -2.20777325035824 4.33533242942109 3.17140090986191 1.87227533383091 2.78524551510328 -1.83003957299793 -4.66752688470044]
[ 8.71782050422106 0.292677827396417 -1.05075506760532 -4.29104400046261 6.05786393526988 9.97234511982170 -4.83070834873136 -1.53529105816058 2.84230753504862 2.57344804865932]
[ -4.28250664462402 -0.857732289882485 3.05703307411307 -0.971441178576104 0.842944527553986 -2.47696518836170 2.89235626214504 -4.18431441286714 -2.00367342539502 2.82959171954950]
[ 9.84682324708161 3.18700532390587 -0.701937607332005 -5.55769094815919 0.806190212403225 -0.270672539894693 -6.03208467526250 5.46039197376590 -1.95263730702990 -0.144576285070700]
[ 3.75123879552813 -0.138473653807768 -4.25312003746753 -9.18519078933863 7.11496309979300 14.4641708899238 -0.925137727624227 -2.58323253011204 -3.31995381355753 -3.00546358027717]
[ -0.115339073745369 -3.85872450140003 -1.49568800278177 -0.597070186852757 1.25498787502911 -6.92223329044214 2.53733462082763 -2.41758192491638 -0.317238866092001 -2.43628240422790]
[ -8.86940049843519 -1.88625127451505 2.67971495720133 4.55209466440718 -2.51072518616087 9.62084913538535 2.04588138159838 -9.68488305976701 -5.67747703597401 -5.91524656455745]
[ -5.83577825174712 -5.34150845191505 2.57480765169969 1.64209854270666 0.286775026163639 -4.58379954931705 -1.62486728271556 -2.46886782179389 1.97940884011192 -4.79445384037026]
[ -0.617822535618101 -1.97143578290066 5.56597506820760 4.98128858144429 -2.96494736031967 -8.29968425562913 0.493377115182836 5.22591491889460 -0.276356016842512 2.89550094450200]
[0.00975696668161774 -1.89865983524190 1.01495791377160 0.229156846528337 -5.50924633168750 -4.49596904014999 5.06913851035953 0.102248188019296 1.45704331667761 0.536692366611771]
()
A*(1/det(A))*adj A=
[ 1.00000000000000 1.45716771982052e-15 -3.62210261783957e-15 -5.75928194024300e-16 2.60902410786912e-15 3.05311331771918e-15 -6.93889390390723e-16 2.35055030994857e-16 2.74780198594726e-15 8.18789480661053e-16]
[ 2.15923944848172e-15 1.00000000000000 8.47195577580173e-16 -5.06701885311100e-16 2.61943244872498e-16 -1.93161459050017e-15 -2.44596010112730e-15 2.02474755711668e-17 -1.93421667571414e-16 -1.59963188528511e-15]
[ 2.71278225577598e-15 1.08246744900953e-15 1.00000000000000 1.02348685082632e-15 0.000000000000000 1.99840144432528e-15 1.66533453693773e-15 1.02522157430229e-15 1.97064586870965e-15 -1.54737334057131e-15]
[ 3.72857127117765e-16 3.05311331771918e-16 -2.35922392732846e-15 0.999999999999998 2.83106871279415e-15 6.66133814775094e-16 -5.55111512312578e-17 -8.75167993630299e-16 1.66533453693773e-15 -6.17561557447743e-16]
[-1.09005686421693e-15 -1.63757896132211e-15 1.97064586870965e-15 4.82253126321552e-16 1.00000000000000 -1.11022302462516e-16 -2.22044604925031e-16 -2.16493489801906e-15 5.55111512312578e-16 -2.92821322744885e-15]
[-1.74258394172733e-16 4.30211422042248e-16 -1.18655085756814e-15 -5.02202446295286e-16 6.80011602582908e-16 0.999999999999998 1.15185638804860e-15 2.93601948309075e-16 3.12250225675825e-16 1.20910226275583e-15]
[ 2.62875658740835e-15 -4.16333634234434e-16 -2.02615701994091e-15 -1.09287578986539e-15 1.83186799063151e-15 -6.10622663543836e-16 0.999999999999999 -3.83373888190874e-16 3.35842464949110e-15 1.64451785522601e-15]
[-4.15886400838283e-15 -2.21177243187043e-15 8.30932544992891e-16 3.55618312575245e-17 8.39606162372775e-16 -1.36002320516582e-15 2.07472927726826e-15 0.999999999999998 -4.64905891561784e-16 6.44449771325384e-16]
[-2.17924636669586e-16 -3.60822483003176e-16 7.07767178198537e-16 -7.21644966006352e-16 -1.11022302462516e-15 -1.05471187339390e-15 -4.99600361081320e-16 1.78676518025611e-16 1.00000000000000 -2.44942954807925e-15]
[-3.49655200626575e-16 -1.38777878078145e-17 7.07767178198537e-16 -1.31838984174237e-15 -5.55111512312578e-17 -1.83186799063151e-15 -1.55431223447522e-15 -1.75900960464048e-15 –3.05311331771918e-16 1.00000000000000]
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
t_A = A.transpose()
print("transpose of A= ")
print(t_A)
[Answer]
A =
[ 0 -2 0 0 1/2 -1 1 0 -1 -2]
[ 0 1/2 1 -1 2 1 1 -1 0 1]
[ -2 -2 -1 0 -1/2 0 -1 0 1 0]
[ -2 -1 0 -1/2 2 -2 1 -1 2 1]
[ 0 0 1 0 1 0 -1/2 1 -2 1]
[ -1 2 -1 0 0 -2 -1 0 -2 -1]
[ 1 0 0 -2 -1 1/2 -1 1/2 0 2]
[ 1/2 0 -2 0 -1/2 0 0 0 1/2 2]
[ -1 -1 -1 2 2 -1 0 -1 1 -1]
[ 2 -1 0 0 -1 -2 1 2 1 1]
transpose of A=
[ 0 0 -2 -2 0 -1 1 1/2 -1 2]
[ -2 1/2 -2 -1 0 2 0 0 -1 -1]
[ 0 1 -1 0 1 -1 0 -2 -1 0]
[ 0 -1 0 -1/2 0 0 -2 0 2 0]
[ 1/2 2 -1/2 2 1 0 -1 -1/2 2 -1]
[ -1 1 0 -2 0 -2 1/2 0 -1 -2]
[ 1 1 -1 1 -1/2 -1 -1 0 0 1]
[ 0 -1 0 -1 1 0 1/2 0 -1 2]
[ -1 0 1 2 -2 -2 0 1/2 1 1]
[ -2 1 0 1 1 -1 2 2 -1 1]
5. 행렬 A (
) 의 rank와 nullity를 구하여라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
print()
print("rank(A)=", A.rank())
#이와 같이 ,를 붙이면 rank(A)= 문자열과 A.rank()를 이어 출력한다. A.rank()는 변수 A에 저장된 행렬의 rank를 구하라는 의미이다.
print("nullity(A)=", A.right_nullity())
#A.right_nullity()는 변수 A에 저장된 행렬의 nullity를 구하라는 의미이다. right를 쓴 이유는 Ax=O과 같이 A의 우측에 x를 곱하여 row space와 orthogonal한 nullspace를 분석하기 위함이다. x^TA=O와 같이 column space와 orthogonal한 nullspace를 분석하기 위함이라면 left_nullity()로 사용하였을 것이다.
[Answer]
A=
[ -0.567241039979995 -0.173991257745830 0.216625106677549 0.890348414031528 0.803401589973390 -0.510508321965184 0.125332077500187 0.738641514144579 -0.0527832908356207 -0.593746768510607]
[ 0.331576683678304 0.0235249508182496 -0.160654090993863 0.864185958567685 0.298132800559914 0.489447732478018 0.365178967110940 0.738350165760068 0.560273114388047 0.209057712358644]
[ 0.0215109618900626 0.769761994988998 -0.864623837716594 0.830871700368469 0.538246392026232 -0.276734113191389 -0.803572340687857 0.914593301322237 0.0112538615036024 -0.805083269246922]
[ 0.605468819059230 0.326355104953626 0.496892035197512 -0.394797570416792 -0.387869052228526 -0.963693598862104 -0.653126849949952 0.683893029454923 -0.609670639957089 -0.0653155544057136]
[ 0.592522927644380 -0.543597794736991 0.174243299436001 0.655513566973890 -0.108372051170459 -0.188773839923995 0.813104519342480 -0.371199650957847 -0.678804636934757 -0.489532528395163]
[ -0.628238112405705 -0.142569012598792 0.694695608900675 0.315362207846789 -0.642406390437259 0.366995138736294 0.352782606259519 0.204321565528165 0.0720015852471816 -0.401726686546587]
[ 0.819939804471274 0.637759210680580 0.923650320191930 -0.887303564825511 -0.273663953684078 -0.756112382268232 -0.126003734532083 -0.818363279772522 0.993833794294931 0.283920419620324]
[ -0.505010519053068 -0.165749550931849 -0.789026038841169 -0.506576942004287 0.0635716485509159 0.721511301812633 0.263375744697634 -0.810090567306385 0.665103089217879 -0.910158466503486]
[ 0.276231055826664 0.480290650730227 -0.0766714048164829 -0.281439610151610 0.00476414571628392 -0.339415647671457 -0.336722124593048 -0.909239608195149 -0.804929831363686 0.632239845026142]
[ 0.125872896530094 -0.919343817395094 0.467625307900967 0.869076350159807 0.949761535892830 0.162491614275140 -0.126053698182508 0.525855499330141 0.300950475913242 -0.0891654334687144]
()
('rank(A)=', 10)
('nullity(A)=', 0)
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
print("rank(A) =")
print(A.rank())
print("nullity(A) =")
print(A.right_nullity())
[Answer]
A =
[ 1 2 0 2 0 -1 2 0 1 0]
[ 0 0 0 -2 0 0 0 -1 1 0]
[ 0 1/2 -1/2 1 0 0 2 -1/2 2 -1]
[ 1 0 1 0 1 -1 0 0 0 1]
[ 0 0 -1 0 1 1 0 -2 -2 -1]
[ 0 0 1 0 -2 -2 -1 -1 -1 0]
[-1/2 -2 -2 2 -1 -1 1 1/2 -1 2]
[ -1 -1 0 1/2 -1/2 1 1 2 -1 -2]
[ -1 -2 1/2 -1 -2 1 2 -2 -1 0]
[ -1 1 1/2 -1 0 1 0 0 0 0]
rank(A) = 10
nullity(A) = 0
6. 행렬 A (
) 의 null space를 계산하라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
print()
print('RREF(A)=')
print(A.rref())
#A에 저장된 행렬의 RREF를 구하여 leading variable과 free variable을 분석하는 방법을 택하였다. leading variable의 개수가 A의 rank가 되고, free variable의 개수가 A의 nullity가 된다. 주어진 행렬의 RREF가 단위행렬이므로 leading variable이 10개, free variable이 0개이다. null space의 차원 nullity가 0이라는 얘기이며, null space의 원소가 영벡터뿐이라는 얘기이다.
print("nullity(A)=",A.right_nullity())
#nullity 명령어로 확인하였다.
[Answer]
A=
[ 0.222539816518577 0.186599245575812 -0.840240177745208 -0.519036344915176 -0.793904305565550 0.349689667025576 -0.231290622984971 0.888923775872307 0.504050320663528 -0.125087500131706]
[ 0.0267337891019341 -0.868249316102834 -0.182145617002464 0.607183498024966 0.469000794406326 0.414700976581041 0.240429435126715 -0.527882855196815 0.320080624396650 0.791341971714010]
[ 0.312213514188314 0.665130914148953 -0.456198866456589 0.151614379832583 0.355761367126160 0.496195544700237 -0.864224716506984 0.0634124479353568 0.760992184532769 -0.533750141463349]
[ 0.544640268085572 -0.0695114140155646 -0.149810255322601 -0.511093452880771 0.0103732904326015 0.505848192300288 0.892778256947658 -0.235363378942595 0.549967428198207 0.478700737223384]
[ 0.949470071541866 -0.988270398154946 0.605287924379225 -0.155218555775405 0.690944392312263 0.548493042391548 0.248053102284497 0.933009795483283 -0.841434418688262 -0.182578571438542]
[ -0.485021471409445 -0.168343444034678 0.540850231447339 -0.883972883578589 0.373874545240850 0.0592051642805160 -0.295550458133209 -0.371053438787022 -0.332381753343671 0.651633720389573]
[ 0.441499920436040 0.242905103727705 -0.0540246169442011 0.191973252301725 -0.276193535557622 0.206536473544303 -0.726854010621718 0.740473673628142 -0.242536841992831 0.0934260170319783]
[ -0.855541847458172 -0.0783232728566319 -0.798381285260829 0.265075310862055 -0.229443147791562 0.198838059962166 -0.0771279699637788 0.100888618067448 0.785261413791059 0.612224389308690]
[ 0.924912392206926 -0.225539751233151 0.615562656057465 -0.390619203323501 0.238719147842443 -0.103627927648772 0.407368037205483 -0.432223007360157 0.868966966185298 -0.117426721615622]
[ 0.330092190346942 -0.443866991864864 -0.445911238251263 0.736480253231327 0.522690751850095 0.612785232206369 -0.460562542412447 0.711267351480826 0.244371310202406 -0.949171322588700]
()
RREF(A)=
[ 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -1.38777878078145e-17 0.000000000000000]
[ 3.46944695195361e-18 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 5.55111512312578e-17 0.000000000000000]
[ 5.55111512312578e-17 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -1.11022302462516e-16 0.000000000000000]
[ 1.11022302462516e-16 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -3.46944695195361e-18 0.000000000000000]
[ 1.11022302462516e-16 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 0.000000000000000 2.77555756156289e-17 0.000000000000000]
[-5.55111512312578e-17 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 0.000000000000000 5.55111512312578e-17 0.000000000000000]
[ 5.55111512312578e-17 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000 2.77555756156289e-17 0.000000000000000]
[-1.11022302462516e-16 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 -5.55111512312578e-17 0.000000000000000]
[ 1.11022302462516e-16 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 1.00000000000000 0.000000000000000]
[ 5.55111512312578e-17 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 -6.93889390390723e-18 1.00000000000000]
('nullity(A)=', 0)
[SageMath code]
A=random_matrix(QQ,10,10)
print("A =")
print(A)
print("null space of A =")
print(A.right_nullity())
[Answer]
A
null space of A =
0
7. 행렬 A (
) 의 열벡터(행벡터)가
의 기저가 될 수 있는지 조사하여라.
[SageMath code]
A=random_matrix(RR,10,10)
print('A=')
print(A)
print()
print("rank(A)=",A.rank())
print("nullity(A)=",A.right_nullity())
#rank는 행렬 A의 RREF의 leading variable의 개수로 찾을 수 있다. A와 RREF(A)는 행동치이고 ERO가 열공간과 행공간을 보존한다. 즉, rank는 행벡터 또는 열벡터에서 형성할 수 있는 최대한의 일차독립인 벡터의 개수이며 이 일차독립인 벡터들이 행공간 또는 열공간의 기저가 된다. 따라서 rank가 곧 행공간 또는 열공간의 차원이 된다. rank가 10이면 행공간 또는 열공간이 10차원이라는 것이며, 10차원인 R^10의 부분공간이 10차원이라는 것은 이 부분공간 자체가 R^10이 됨을 의미한다. 그러므로 행벡터 또는 열벡터가 R^10의 기저라고 할 수 있다. rank가 10미만이라면 R^10의 부분공간으로써의 행공간 또는 열공간의 차원이 10미만이라는 의미이므로 R^10의 기저가 될 수 없다.
[Answer]
A=
[ -0.704877721765163 -0.317480332928951 -0.645053692436880 -0.947912438087750 0.483523542386778 0.280785713287774 0.0378439384244686 0.949828914756510 0.507699926696113 0.924776940862379]
[ 0.691283211488276 -0.829884486149432 0.824386422426609 -0.796653060706369 -0.445045304019040 0.926047043706109 0.0105658232129455 0.204234920210846 -0.611138355119289 0.252785761928219]
[ 0.950188034470667 0.458307493718440 -0.789295491845191 -0.365010447432155 0.775398584720490 -0.754792271252607 -0.161707994457263 -0.0555131648812024 -0.631989098490075 -0.367321629479135]
[-0.0869271654993018 -0.885335492244208 0.608948144858660 0.272105675360784 0.266721505081525 0.366663664690227 -0.277307973306425 -0.515214735420635 0.344639786094772 -0.681528819854131]
[ -0.467755603925643 0.403900772687513 -0.395538278288873 0.410141523615910 0.300943468345312 -0.566169358774299 0.0228917001999678 0.333222530659323 -0.963948983191677 -0.604670288898065]
[ -0.570456195696482 -0.380014428137388 0.874447688307914 -0.801880733944453 0.701476102453571 -0.560376240783705 0.960834607539763 -0.797861300356590 0.128156359042962 -0.253278632726802]
[ 0.0160084877915305 -0.101992723617167 -0.0444574658157062 -0.246955653399243 0.0796894266972608 -0.510968195728191 0.412692303553426 -0.291775139957399 -0.494625513943236 0.253524832414094]
[ 0.175802405408853 -0.535878650580086 0.131903242516229 0.547965373631535 0.966244212728260 0.735020417947923 0.567842557090640 -0.549964032498935 0.921186845828149 0.560994622297424]
[ -0.877905736987683 -0.427672659681664 -0.442779575174504 -0.931054363584255 -0.126375942308643 0.658595268617771 -0.686642149929777 0.770199166733740 -0.978805665879211 -0.780442689062813]
[ 0.562120264088793 -0.996123855250508 0.801223788616352 0.186718305752974 -0.134697262971900 0.905677139526673 0.829933591111762 -0.0323738416044157 -0.603733585874807 -0.703147906187328]
()
('rank(A)=', 10)
('nullity(A)=', 0)
8. 행렬 A (
) 의 고윳값과 고유벡터를 계산하라.
[SageMath code]
A=random_matrix(QQ,10,10)
#실수를 성분으로 갖는 행렬을 활용해보려 하였으나 오류가 발생하였다. 유리수로 수의 범위를 줄였더니 오류가 해결되었다.
print('A=')
print(A)
print()
print('Eigenvalues of A : ')
print(A.eigenvalues())
#A의 eigenvalue들을 나열한다. 특성방정식이 10차 방정식이므로 실근과 허근이 10개 존재한다. 이 명령어에서는 허수 eigenvalue도 추출하여 준다.
print()
print('Eigenvectors of A : ')
print(A.eigenvectors_right())
#A의 eigenvector들을 (고윳값, [일차독립인 고유벡터들], 대수적 중복도) 형식으로 나열한다.
[Answer]
A=
[ -1 0 -2 -1 0 -2 0 2 0 0]
[ 0 2 -1 -2 -1 0 2 1 2 -1]
[ 1/2 -1 -1 -1 1/2 0 0 -2 0 -2]
[ -1 2 0 0 -1 1 0 2 0 -1]
[ -2 1 0 -1 0 -2 -2 1 0 2]
[ 0 1 0 0 -1/2 1/2 0 -2 0 0]
[ 0 1 -1 0 -2 -2 -1 -1/2 0 1]
[ 2 0 1 0 -2 -1/2 0 0 -1 1]
[ 0 -2 -1 -2 0 0 0 -1/2 0 1/2]
[ -2 0 1 -2 1/2 0 0 -1/2 -2 -1]
()
Eigenvalues of A :
[-4.078761793512740?, -3.516298277832167?, 1.348840801917091?, 3.106818592522390?, -0.9006333752109760? - 3.155054148512558?*I, -0.9006333752109760? + 3.155054148512558?*I, 0.3397439658091370? - 0.9821450110049441?*I, 0.3397439658091370? + 0.9821450110049441?*I, 1.380589747854553? - 2.650432285377701?*I, 1.380589747854553? + 2.650432285377701?*I]
()
Eigenvectors of A :
[(-4.078761793512740?, [(1, 1.586226790520093?, 0.509505036501054?, 0.7252312674710061?, -2.698667085127604?, -1.655864763029120?, -4.051758561072873?, -2.323124989548933?, 0.786349648606315?, 1.527051509262362?)], 1), (-3.516298277832167?, [(1, -1.197210314032576?, 0.9210989928140452?, 0.8790862057299145?, 4.719288503665456?, 1.865716258725224?, 6.157007977398612?, 1.968209215488143?, 0.2500294001998914?, 0.7795548692450144?)], 1), (1.348840801917091?, [(1, 0.6534547021493456?, 0.12196219256147651?, -0.6675085651933635?, 1.124799540337184?, -0.6438414138942493?, -0.2186662284246601?, 0.3187868970290907?, -0.1595039225077648?, 0.07620503248738184?)], 1), (3.106818592522390?, [(1, 0.4201331927916996?, -0.6392852697493489?, 1.292942887080062?, -1.136847980198874?, -0.679999373601858?, 0.741250979989920?, 1.380596096450019?, -1.273483059334885?, -0.958631815569460?)], 1), (-0.9006333752109760? - 3.155054148512558?*I, [(1, -0.1083562058653261? - 0.4448291771174037?*I, -0.6818741657025042? + 1.435248004644162?*I, 0.1766711735401233? - 0.9706561558882926?*I, 0.6450654585046112? - 1.213516425730851?*I, -0.3953502386287118? + 0.2832855773698929?*I, 0.0741221210955788? - 0.1196890471624793?*I, -0.9392055051666423? - 0.3443215701863709?*I, -0.4478070215481910? + 0.0489886417707331?*I, -0.9139504324547248? - 0.3982977023534420?*I)], 1), (-0.9006333752109760? + 3.155054148512558?*I, [(1, -0.1083562058653261? + 0.4448291771174037?*I, -0.6818741657025042? - 1.435248004644162?*I, 0.1766711735401233? + 0.9706561558882926?*I, 0.6450654585046112? + 1.213516425730851?*I, -0.3953502386287118? - 0.2832855773698929?*I, 0.0741221210955788? + 0.1196890471624793?*I, -0.9392055051666423? + 0.3443215701863709?*I, -0.4478070215481910? - 0.0489886417707331?*I, -0.9139504324547248? + 0.3982977023534420?*I)], 1), (0.3397439658091370? - 0.9821450110049441?*I, [(1, 1.310121044398229? - 0.979333941285475?*I, -1.339581601294238? - 0.1871614272030428?*I, -0.3075334444728753? + 0.1020977158850792?*I, 1.352750298832295? - 0.7431552967217253?*I, 0.8187202878545979? + 0.788542280712537?*I, 0.2037855301247512? - 0.8990251782347055?*I, -0.004756052771508602? + 0.1613572059495611?*I, -1.530394835440625? + 0.4044013409827227?*I, 1.080907842028371? - 0.4409854143386179?*I)], 1), (0.3397439658091370? + 0.9821450110049441?*I, [(1, 1.310121044398229? + 0.979333941285475?*I, -1.339581601294238? + 0.1871614272030428?*I, -0.3075334444728753? - 0.1020977158850792?*I, 1.352750298832295? + 0.7431552967217253?*I, 0.8187202878545979? - 0.788542280712537?*I, 0.2037855301247512? + 0.8990251782347055?*I, -0.004756052771508602? - 0.1613572059495611?*I, -1.530394835440625? - 0.4044013409827227?*I, 1.080907842028371? + 0.4409854143386179?*I)], 1), (1.380589747854553? - 2.650432285377701?*I, [(1, 0.846235398485098? + 3.466838670980228?*I, 1.138149531037389? + 0.0237140767797520?*I, -1.982564222389964? + 1.025028632549830?*I, 0.4004459022101819? + 0.6476144409233237?*I, -1.197933644306577? + 0.536683484459404?*I, -0.0598196773273702? + 0.2900434581345072?*I, 0.1392286494631069? - 0.2523042651747793?*I, 2.805609680999489? - 1.174170146935551?*I, -0.6071125918721557? - 0.3516583890657830?*I)], 1), (1.380589747854553? + 2.650432285377701?*I, [(1, 0.846235398485098? - 3.466838670980228?*I, 1.138149531037389? - 0.0237140767797520?*I, -1.982564222389964? - 1.025028632549830?*I, 0.4004459022101819? - 0.6476144409233237?*I, -1.197933644306577? - 0.536683484459404?*I, -0.0598196773273702? - 0.2900434581345072?*I, 0.1392286494631069? + 0.2523042651747793?*I, 2.805609680999489? + 1.174170146935551?*I, -0.6071125918721557? + 0.3516583890657830?*I)], 1)]
8. 행렬 A (
) 의 고유값과 고유벡터를 계산하라.
[SageMath code]
A = random_matrix(ZZ, 10, 10)
print("A =")
print(A)
print("A의 고유값=")
print(A.eigenvalues())
print("A의 고유벡터")
print(A.eigenvectors_right())
[Answer]
A =
[ 1 1 15 1 8 0 -2 1 1 1]
[ 0 -2 0 9 2 -1 7 8 1 0]
[ 2 -1 38 -2 -1 3 0 -5 1 -1]
[ -1 -1 1 0 -2 3 0 -1 1 -40]
[-17 10 1 -2 1 1 0 -2 -1 -1]
[ -1 -13 -2 2 -3 -1 0 0 0 1]
[ 2 0 9 5 -1 1 1 1 1 -2]
[ -4 -1 0 -2 -1 0 16 -7 -1 -1]
[ 8 0 40 2 0 -1 -1 0 -9 -8]
[ -1 0 1 0 1 0 1 0 6 0]
A의 고유값=
[-14.43028865323144?, 39.38364931811146?, -5.414769097608676? - 5.606302990262906?*I, -5.414769097608676? + 5.606302990262906?*I, -4.771102035411398? - 6.114561674605135?*I, -4.771102035411398? + 6.114561674605135?*I, 1.077835970654153? - 11.14904580558382?*I, 1.077835970654153? + 11.14904580558382?*I, 7.631354829925911? - 9.59245839084998?*I, 7.631354829925911? + 9.59245839084998?*I]
A의 고유벡터 ...
□ 설명(소감)
직접 계산하려면 엄두도 안 나는 문제들이지만 코드를 이용해서 쉽게 풀 수 있다는 점이 좋았다.
9. 정사영과 최소제곱해(least square solution)에 대하여 간략하게 설명하시오.
3차원 공간 상에서 벡터
를 직선 또는 평면에 정사영시키는 경우를 생각해볼 수 있다. 이는 벡터의 직선 또는 평면에 평행한 성분이므로 내적을 활용하여 다음과 같이 나타낼 수 있다.
직선의 경우 :
직선의 방향벡터를
라고 하자.
로 나타낼 수 있다.
평면의 경우 :
평면의 법선벡터를
이라고 하자.
직선의 경우에 착안하여 벡터
의 법선성분을
이라고 나타낼 수 있다.
정사영은 벡터
에서 이 법선성분을 빼면 구할 수 있으므로,
와 같이 구할 수 있다.
일반적으로 부분공간
와
에 속하지 않는 벡터
가 있다고 하자. 이 벡터
를 부분공간
에 정사영시킨 새 벡터를 정의할 수 있다. 이를
라고 한다.

는 최소제곱해 문제와 밀접한 관련이 있다.
라는 방정식이 있다고 하자.
가
의 열벡터의 일차결합인 점에 착안하면
는
의 열공간 상의 임의의 벡터임을 뜻한다.
가 이 열공간 상에 존재하면 해가 존재하는 것이 되나, 이 열공간 밖에 있는 경우 해가 존재하지 않는다.
와
와의 차를 최소화할 수 있다면 그것이 가능한 최적 상황이라고 생각할 수 있다. 즉,
가 최소인 상황을 찾는 문제가 되며, 이 norm은 각 성분의 제곱을 합하는 과정으로 얻기 때문에, 제곱의 합이 최소가 된다 하여 최소제곱해라고 명명하는 것이다.
가 최소가 되는 방법은, 그림과 같이
에서
로 내린 수선이
일 때이다.
와 정사영과 더불어 직각삼각형을 형성한다. 이때의 최적해를
라고 하자.
이므로 내적의 성질에 의해
이 성립한다.
![]()
일반적으로 실험 등에서 얻어지는 데이터를 중복하여 쓰지 않기 때문에
는 Full Column Rank를 갖고 따라서
의 역행렬이 존재한다.
![]()
10. Gram-Schmidt 정규직교화법에 대하여 간략하게 설명하시오.
차원 부분공간에 대하여 기저
개가 일반적으로 주어졌을 때, 이 기저들을 활용하여 같은 부분공간을 span하는, norm이
이고 서로 직교하는 벡터들을 찾는 방법이다. 기저를 형성하는 벡터 중 하나를 택하고, 다른 벡터를 이 벡터에 정사영하고 수직성분을 구함으로써 부분공간을 확장, 직교벡터를 찾아나간다.
11. QR 분해에 대하여 간략하게 설명하시오.
가 rank가
인
행렬이라고 하면
분해가 가능하다.
의 열벡터들이
의 열공간의 기저가 되는데 Gram-Schmidt 정규직교화 과정에 의해 같은 부분공간을 span하는 정규직교벡터를 구할 수 있다. 정규직교벡터를 활용하면 기저를 정규직교벡터들에 대한 정사영의 합으로 나타낼 수 있으며 이는
를 정규직교벡터를 열벡터로 갖는 행렬
, 정사영을 성분으로 갖는 벡터
의 곱으로 나타낼 수 있다는 것이다.
의 열벡터와 정규기저의 부분공간에 대한 위치관계를 고려하면
이 상삼각행렬임을 알 수 있다.
12. 선형변환이 단사일 필요충분조건에 대하여 간략하게 설명하시오.
선형변환이 단사라는 것은, 함수적 관점에서 일대일함수라는 것이다. 이것은 선형변환
의 표준행렬
가 Full Column Rank라는 것을 의미한다. 선형변환
의 domain에 속하는 임의의 두 벡터의 선형변환 값이 같은 경우, 두 벡터가 무조건 같다는 단사함수의 정의를 활용하면 선형변화가 단사임과 표준행렬이 Full Column Rank임이 필요충분조건이라는 것을 증명할 수 있다.
영벡터를 선형변환하면 당연히 영벡터이다. 단사의 경우 영벡터를 선형변환 값으로 갖는 다른 domain 상의 벡터가 존재해서는 안된다. 따라서
이다.(선형변환이 단사일 필요조건)
라는 것은
의 null space가 영공간이라는 것이다. Rank-Nullity 정리에 의해 Rank는 곧 Column의 개수가 되며 Full Column Rank가 된다. 앞에서 증명한 바에 따르면, 선형변환
가 단사라는 말이 된다.(선형변환이 단사일 충분조건)
13. 행렬의 직교대각화 (orthogonally diagonalizing)에 대하여 간략하게 설명하시오.
정사각행렬
에 대하여, 적당한 가역행렬
가 존재하여
가 대각선행렬일 때, 즉 행렬
가 대각선행렬과 닮음일 때, 이 행렬
는 대각화가능하다고 한다. 이 때,
는
의 eigenvector를 열벡터로 갖는 행렬이고 결과의 대각선행렬은 주대각성분을 대응하는 eigenvalue 갖는 행렬이 되며,
가 가역행렬일 조건, 즉, eigenvector들이 일차독립일 조건이 대각화 가능할 조건에 대한 필요충분조건이 된다.
여기서
가 대칭행렬이라는 조건이 추가되면
가 되게
를 설정할 수 있고, transpose만으로 쉽게 대각화가 가능하기 때문에 자주 쓰인다.
로써, eigenvector들이 서로 직교하기 때문에, 직교대각화라는 용어를 쓰는 것이다.
14. 행렬의 SVD (특이特異값 분해, 특잇값 분해, singular value decomposition)에 대하여 간략하게 설명하시오.
행렬의 대각화의 확장적 개념으로써, 정사각행렬이 아닌 행렬에 대해서
![]()
와 같이 쓸 수 있다. 이 때,
는
를 직교대각화하는 직교행렬이고,
는
를 직교대각화하는 직교행렬이다.
는
또는
의 eigenvalue들의 양의제곱근을 단조감소의 순서로 대각선에 배열한 행렬로서, 이를 행렬
의 특이값이라고 한다.
15. 일반화된 역행렬 (pseudo-inverse, Moore-Penrose Generalized Inverse)에 대하여 간략하게 설명하시오.
일반적으로 역행렬이라 함은 정사각행렬에 대해서만 논할 수 있는 것이다. SVD에서 논의한 바를 확장하면 정사각행렬 이외에도 역행렬과 유사한 개념을 적용할 수 있으며 이를 pseudo-inverse(일반화된 역행렬)이라고 한다. 이는
와
의 성분 각각에 대해 역수를 취해준 행렬과
를 차례로 곱해줌으로써 얻을 수 있다.
16. 이차형식의 정부호, 부정부호(indefinite)에 대하여 간략하게 설명하시오.
이차형식을 일반적으로 다음과 같이 나타낸다.
와 같이 이차형식을 나타낸다. (
,
는 대칭행렬)
가 임의의
인
에 대해
보다 크면 양의 정부호,
보다 작으면 음의 정부호라고 하며, 어떤
에 대해서는
보다 크고 어떤
에 대해서는
보다 작은 경우, 부정부호라고 한다.
의 모든 eigenvalue들이 양수이면 양의 정부호, 음수이면 음의 정부호, 양수와 음수 모두 가지면 부정부호이다. 역도 성립한다.
Ch 6장. (Math4AI) 인공지능을 위한 기초수학 Take-Home Exam 2
Major(학과): @@ 학년: 4 학번: 201** Name(이름): 신@@
(Due: April 25. 토 11AM) [ PBL 보고서에 붙여서 제출하세요]
※ Sage를 활용하여 아래 문제를 변형하고, 코드를 바꾸고, 답을 구하여, QnA에 한 문제씩 공유하고, Comment 받아서, 수정 후 Finalized 하여 시험문제지에 채워서 제출하시면 됩니다.
(모든 답은 http://matrix.skku.ac.kr/math4ai/ 안에 있습니다. QnA에서 문의하면서 해결하세요)
[명령어 모음] http://matrix.skku.ac.kr/Lab-Book/Sage-Lab-Manual-1.htm
[강의동영상] http://matrix.skku.ac.kr/2019-album/
[참고교재] http://matrix.skku.ac.kr/Cal-Book1/
[참고 연습문제와 답안과 Code] http://matrix.skku.ac.kr/Cal-Book/
* 일변수함수와 미적분 PBL 보고서 http://matrix.skku.ac.kr/PBL/
* 다변수함수와 미적분 PBL 보고서 http://matrix.skku.ac.kr/PBL2/
1. 함수
의 그래프를 그려라.
[SageMath code]
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f1(x) = x
f2(x) = 4 - x
# graph f1 on (0, 2), and f2 on (2, 4)
plot(piecewise([((0, 2), f1), ((2, 4), f2)]), (x, 0, 4))
[Answer]

2. 만일 극한
와
이 존재하면, 구하여라.
[SageMath code]
var( 'x, y' ) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = sin(x)/abs(cos(x))
g(y) = x^2/sin(y)
A = limit(f(x), x = pi/2) # x = pi/2일 때 극한
B = limit(g(y), y = pi/4) # x = pi/4일 때 극한
print(A)
print()
print(B)
[Answer]
+Infinity # 극한이 존재하지 않는다. 발산(diverse)한다.
sqrt(2)*x^2 # 극한이 존재한다. 수렴(converse)한다. ■
3.
의 도함수(derivative)
와 2계도함수
와 3계도함수를 구하여라.
[SageMath code]
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^2 + 4*e^x
print(diff(f(x), x)) # dy/dx
print(diff (diff(f(x), x), x)) # 2계도함수
print(diff (diff (diff(f(x), x), x), x)) # 3계도함수
[Answer]
2*x + 4*e^x
2 + 4*e^x # 2계도함수
4*e^x # 3계도함수 ■
4. 점
에서 곡선
에 대한 접선의 방정식을 구하여라.
[SageMath code]
var('x') #[실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^2 + sqrt(x)
df(x) = diff(f(x), x) # 도함수 구하기
y(x) = df(4)*(x - 4) + 18 # 기울기(df(4))를 구하여 접선의 방정식 구하기
print(y(x))
p1 = plot(f(x), x, 0, 10, linestyle = "--", color = 'blue') # 함수 f(x) 그리기
p2 = plot(y(x), x, 0, 10, color = 'red') # 접선 y(x) 그리기
show(p1 + p2) # 함수 f(x)와 접선 y(x)를 동시에 보여주기
[Answer]
33/4*x - 15 # 접선의 방정식
■

var('x')
f(x) = 2*x^3 + sqrt(x)
df(x) = diff(f(x), x) # 도함수 구하기
y(x) = df(5)*(x - 5) + 29 # 기울기(df(5))를 구하여 접선의 방정식 구하기
print(y(x))
p1 = plot(f(x), x, 0, 10, linestyle = "--", color = 'blue') # 함수 f(x) 그리기
p2 = plot(y(x), x, 0, 10, color = 'red') # 접선 y(x) 그리기
show(p1 + p2) # 함수 f(x)와 접선 y(x)를 동시에 보여주기
217/6*x - 321/2
# 접선의 방정식
■
5.
에서 연속함수
의 최댓값과 최솟값을 구하여라.
[SageMath code]
var('x') # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x) = x^3 - x
p1=plot (f(x), x, -4, 4)
show (p1)
solve(diff(f(x)) == 0, x) # look for the flection points of df, -1/3*sqrt(3), 1/3*sqrt(3)
ma = max(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find maximum value
mi = min(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find minimum value
print('최댓값 =', ma)
print('최솟값 =', mi)
[Answer]
최댓값 = 24 #
에서 연속함수
의 최댓값, 24
최솟값 = -24 #
에서 연속함수
의 최솟값, -24 ■
var('x')
f(x) = 2*x^3 - 2
p1=plot (f(x), x, -4, 4)
show (p1)
solve(diff(f(x)) == 0, x) # look for the flection points of df, -1/3*sqrt(3), 1/3*sqrt(3)
ma = max(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find maximum value
mi = min(f(-1/3*sqrt(3)), f(1/3*sqrt(3)), f(-3), f(3)) # find minimum value
print('최댓값 =', ma)
print('최솟값 =', mi)
최댓값 = 52 #
에서 연속함수
의 최댓값, 52
최솟값 = -56 #
에서 연속함수
의 최솟값, -56 ■
6. Newton’s Method (뉴턴 방법) 에 대하여 아는대로 서술하시오.
http://matrix.skku.ac.kr/Mobile-Sage-G/sage-grapher-newton_method.html
무리수 같이 정확한 값을 표현할 수 없는 수에 대해서, 그 값을 최대한 근사한 유리수로 표현하는 방법으로, 임의의 값 x1에서 접선의 방정식을 그어 그 접선과 x축이 만나는 값 x2를 구하고, 다시 그 x2에서 접선의 방정식을 그어 x3를 구하는 방식을 계속하여 최종적으로 근사값 xn을 구하는 방법이다.
방정식의 해를 찾는 것은 매우 중요한 일이다. 하지만 그 해를 직접 찾는 것은 매우 제한적이며,
차 이상만 되어도 일반적인 근의 공식이 존재하지 않는다. 더군다나 초월함수가 포함된 방정식은 더더욱 근을 찾기가 쉽지 않다. 이러한 때 유용한 것이 뉴턴 방법이다.

위의 그림은
의 해를 찾는 과정을 뉴턴 방법으로 나타낸 것이다.
먼저,
를 근사해로 설정한다.
에서 접선을 그을 수 있는데, 이 접선의
절편을 새로운 근사해로 설정한다. 마찬가지 방법으로 이
값과 함수의 교점에서 접선의 방정식을 구하고 이 과정을 반복하는 것인 뉴턴방법이다. 위의 표에서 보면 횟수를 거듭할수록 전 단계의 근사해와의 차이가 급격히 줄어드는 것을 볼 수 있으며, 참값에 수렴해가는 것을 확인할 수 있다. 단 몇 번의 시도로 방정식의 해를 적은 오차로 구할 수 있는 것이 뉴턴 방법이다.
7. 적분
을 구하여라.
[SageMath code]
f(x) = 5/(1 - x^2) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
P1 = plot(f(x), 0.5, sqrt(3)/2, fill = "axis") # fill the area between f(x) and x-axis
P2 = plot(f(x), 0.3, sqrt(3)/2 + 0.05, color = 'red') # graph f(x)
show(P1 + P2) # show P1 and P2
print(integral(f(x), x, 1/2, sqrt(3)/2).simplify_full()) # integrate f(x) on ![]()
print((integral(f(x), x, 1/2, sqrt(3)/2).simplify_full()).n(digits=5))
[Answer]

-5/2*log(-sqrt(3) + 2) + 5/2*log(sqrt(3) + 2) - 5/2*log(3)
3.8382
8.
상에 곡면(평면)
을 그려라. (아래 좌측 그림)
[SageMath code]
var('x, y, z')
implicit_plot3d(x + y == 5, (x, -5, 5), (y, -5, 5), (z, -5, 5)) # graph
on in ![]()
[Answer]

8.
상에 곡면(평면)
을 그려라. (아래 좌측 그림)
var('x, y, z')
implicit_plot3d(x - y == 5, (x, -5, 5), (y, -5, 5), (z, -5, 5)) # graph
on in ![]()

9. 아래 2변수 함수의 그래프를
에서 Sketch 하시오.
(a) ![]()
(b) ![]()
[SageMath code]
# (a) # [실습: http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
var('x, y, z')
implicit_plot3d(z == -2*x^2 + 7*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
# (b)
var('x, y, z')
implicit_plot3d(z^2 == 5*x^2 + 3*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
[Answer]

□ 설명
x, y, z를 변수로 선언하고, implicit_plot3d 명령어를 이용하여 주어진 방정식들의 그래프를 그렸다. (a)는
형태로 plot3d 명령어를 사용하여도 되지만 실제 그림을 그려보니 implicit_plot3d가 곡면의 모양을 더 잘 보여준다. (a)는 Hyperbolic paraboloid이고, (b)는 Cone이다.
[SageMath code]
# (a)
var('x, y, z')
implicit_plot3d(z == -6*x^2 + y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
# (b)
var('x, y, z')
implicit_plot3d(z^2 == 3*x^2 + 2*y^2, (x, -5, 5), (y, -5, 5), (z, -5, 5), opacity = 0.5)
[Answer]
□ 설명
x, y, z를 변수로 선언하고, implicit_plot3d 명령어를 이용하여 주어진 방정식들의 그래프를 그렸다.
10. 벡터
와
의 내적, 외적, 사잇각을 구하여라.
[SageMath code]
a = vector([6, -3, 4]) # https://sagecell.sagemath.org/
b = vector([2, 0, -3])
s = b.dot_product(a) # find the dot product of a and b
c = b.cross_product(a) # find the cross product of a and b
theta = arccos(a.dot_product(b)/(a.norm()*b.norm()))
# find the angle between a and b
print('내적(inner product, dot product)은 ', s)
print('외적(cross product)은', c)
print('벡터 a와 b 의 사잇각(angle)은', theta)
[Answer]
내적(inner product, dot product)은 0
외적(cross product)은 (-9, -26, -6)
벡터 a와 b 의 사잇각(angle)은 1/2*pi ■
a = vector([2, -1, 40]) # https://sagecell.sagemath.org/
b = vector([8, 0, -13])
s = b.dot_product(a) # find the dot product of a and b
c = b.cross_product(a) # find the cross product of a and b
theta = arccos(a.dot_product(b)/(a.norm()*b.norm())) # find the angle between a and b
print('내적(inner product, dot product)은 ', s)
print('외적(cross product)은', c)
print('벡터 a와 b 의 사잇각(angle)은', theta)
내적(inner product, dot product)은 -504
외적(cross product)은 (-13, -346, -8)
벡터 a와 b 의 사잇각(angle)은 arccos(-168/124655*sqrt(1605)*sqrt(233)) ■
11. 벡터함수
에 대하여
을 구하고,
일때의 위치벡터
와 접선벡터
를 그려라.
[SageMath code]
var('t')
x(t) = cos(t)
y(t) = t
r(t) = (x(t), y(t))
dr(t) = (diff(x(t), t), diff(y(t), t))
print("r'(t) =", dr(t)) # ![]()
t0 = pi/4
p1 = r(t0) # Find the startpoint of tangent vector at /4
p2 = dr(t0)/abs(dr(t0)) + r(t0) # Find the endpoint of tangent vector at /4
p = parametric_plot((x(t), y(t)), (t, 0, 2*pi)) # Sketch curve
utv = line([p1, p2], color = 'red', thickness = 2) # Sketch tangent vector
show(p + utv)
[Answer]
r'(t) = (-sin(t), 1) # 접선벡터
■

var('t')
x(t) = sin(t)
y(t) = t
r(t) = (x(t), y(t))
dr(t) = (diff(x(t), t), diff(y(t), t))
print("r'(t) =", dr(t)) # ![]()
t0 = pi/4
p1 = r(t0)
p2 = dr(t0)/abs(dr(t0))+r(t0)
p = parametric_plot((x(t), y(t)), (t, 0, 2*pi)) # Sketch curve
utv = line([p1, p2], color = 'red', thickness = 2) # Sketch tangent vector
show(p + utv)
r'(t) = (cos(t), 1) # 접선벡터
■

12.
에서 곡선
의 길이(length)를 구하여라.
[SageMath code]
var('t') # https://sagecell.sagemath.org/
r(t) = (4*t, 3*cos(t), 3*sin(t)) # Define r(t)
dr = diff(r(t), t)
s(t) = dr.norm()
print(integral(s(t), t, -5, 5)) # length of the curve
parametric_plot3d(r(t), (t, -5, 5)) # Sketch curve
[Answer]
50 # 곡선의 길이는
■
var('t')
Defr(t) = (2*t, 2*cos(t), 2*sin(t)) # ine r(t)
dr = diff(r(t), t)
s(t) = dr.norm()
print(integral(s(t), t, -5, 5)) # length of the curve
parametric_plot3d(r(t), (t, -5, 5)) # Sketch curve
20*sqrt(2) # 곡선의 길이는
■

13. 함수
의 2계 편도함수(2nd-order partial derivative) 4개를 모두 구하여라.
[SageMath code]
var('x, y') # https://sagecell.sagemath.org/
f = sin(x - y) + exp(-x*y)
fxx = diff(f, x, 2)
fyy = diff(f, y, 2)
fxy = diff(f, x, y)
fyx = diff(f, y, x)
print("fxx =", fxx)
print("fyy =", fyy)
print("fxy =", fxy)
print("fyx =", fyx)
[Answer]
fxx = y^2*e^(-x*y) - sin(x - y)
fyy = x^2*e^(-x*y) - sin(x - y)
fxy = x*y*e^(-x*y) - e^(-x*y) + sin(x - y)
fyx = x*y*e^(-x*y) - e^(-x*y) + sin(x - y) ■
var('x, y')
f = cos(x - y) + exp(-x*y)
fxx = diff(f, x, 2)
fyy = diff(f, y, 2)
fxy = diff(f, x, y)
fyx = diff(f, y, x)
print("fxx =", fxx)
print("fyy =", fyy)
print("fxy =", fxy)
print("fyx =", fyx)
fxx = y^2*e^(-x*y) - cos(x - y)
fyy = x^2*e^(-x*y) - cos(x - y)
fxy = x*y*e^(-x*y) + cos(x - y) - e^(-x*y)
fyx = x*y*e^(-x*y) + cos(x - y) - e^(-x*y) ■
14.
일 때
를 구하여라.
[SageMath code]
var('u, v, s, t') # https://sagecell.sagemath.org/
x = u^2 + v^2
y = 2*u*v
z = s^2*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())
# simplify_full()이 어느 정도 정리를 해주지만 완벽하지는 않다.
[Answer]
dz/du = 10*u^4*v + 12*u^2*v^3 + 2*v^5
dz/dv = 2*u^5 + 12*u^3*v^2 + 10*u*v^4 ■
var('u, v, s, t')
x = u^2 + v^3
y = 4*u*v
z = s^3*t^2
print("dz/du =", diff(z(s = x, t = y), u).simplify_full())
print("dz/dv =", diff(z(s = x, t = y), v).simplify_full())
dz/du = 32*u*v^11 + 192*u^3*v^8 + 288*u^5*v^5 + 128*u^7*v^2
dz/dv = 176*u^2*v^10 + 384*u^4*v^7 + 240*u^6*v^4 + 32*u^8*v ■
15. 점
에서
축의 양의 방향과 이루는 각(angle)이
인 단위벡터
![]()
방향으로의 함수
의 방향도함수를 구하여라.
[Find
![]()
]
https://sagecell.sagemath.org/
[SageMath code]
var('x, y') # https://sagecell.sagemath.org/
f(x, y) = x^3 - 3*x*y + 4*y^2
u = vector([cos(pi/6), sin(pi/6)])
gradf = f.gradient() # 함수 f의 그래디언트
print("Duf(1,2) =", gradf(1, 2).dot_product(u))
[Answer]
Duf(1,2) = -3/2*sqrt(3) + 13/2 #
where
■
16. 함수
의 임계점을 모두 구하여라.
[SageMath code]
var('x, y')
f(x, y) = 4*x*y*exp(-x^2 - y^2)
gradf = f.gradient() # 함수 f의 그래디언트
solve([gradf[0] == 0, gradf[1] == 0], x, y)
[Answer]
[[x = 0, y = 0],
[x = -1/2*sqrt(2), y = -1/2*sqrt(2)],
[x = 1/2*sqrt(2), y = -1/2*sqrt(2)],
[x = -1/2*sqrt(2), y = 1/2*sqrt(2)],
[x = 1/2*sqrt(2), y = 1/2*sqrt(2)]] # 5개의 임계점 ■
var('x, y')
f(x, y) = 3*x^2*y^2*exp(-x - y)
gradf = f.gradient() # 함수 f의 그래디언트
solve([gradf[0] == 0, gradf[1] == 0], x, y)
[[x == r1, y == 0], [x == 0, y == r2], [x == 2, y == 2]] # 3개의 임계점 ■
17. 2변수 함수
의 극값을 구하여라.
[SageMath code]
var('x, y')
f(x, y) = x*y - x^2 - y^2 - 2*x - 2*y + 4
gradf = f.gradient() # 그래디언트 계산
print(solve([gradf[0] == 0, gradf[1] == 0], x, y)) # 임계점 계산
hessf = f.hessian() # 헤시안 계산
H = hessf(-2, -2)
print("The eigenvalues of H are ", H.eigenvalues())
m, n = H.nrows(), H.ncols() # 행렬의 크기
if m != n:
raise ValueError("The matrix must be square.") # 정사각행렬이 아니면 에러
for i in range(1, n + 1):
H_principal_minor = H.submatrix(0, 0, i, i).det() # 선행 주 소행렬식
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
[Answer]
[[x == -2, y == -2]]
The eigenvalues of H are [-3, -1]
The 1 번째 principal minor 는 -2
The 2 번째 principal minor 는 3
선행 주 소행렬식의 부호가 음으로 시작하여, 음과 양이 순서대로 교차되므로, (
에서의
의 헤시안 행렬의 고윳값이 모두 음이라는 의미이고) 아래쪽이 열린 포물면 모양이므로 극댓값을 갖게 된다.
는
에서 극댓값
을 갖는다. ■
var('x, y')
f(x, y) = 3*x^2*y - x^3 - 5*y^2 - 2*x^2 -y
gradf = f.gradient() # 그래디언트 계산
print(solve([gradf[0] == 0, gradf[1] == 0], x, y)) # 임계점 계산
hessf = f.hessian() # 헤시안 계산
H = hessf(-2, -2)
print("The eigenvalues of H are ", H.eigenvalues())
m, n = H.nrows(), H.ncols() # 행렬의 크기
if m != n:
raise ValueError("The matrix must be square.") # 정사각행렬이 아니면 에러
for i in range(1, n + 1):
H_principal_minor = H.submatrix(0, 0, i, i).det() # 선행 주 소행렬식
print("The ", i, "번째 principal minor 는 ", H_principal_minor)
[
[x == 0, y == (-1/10)],
[x == -1/2*sqrt(13) + 5/6, y == -1/4*sqrt(13) + 13/12],
[x == 1/2*sqrt(13) + 5/6, y == 1/4*sqrt(13) + 13/12]
]
The eigenvalues of H are [-3*sqrt(17) - 7, 3*sqrt(17) - 7]
The 1 번째 principal minor 는 -4
The 2 번째 principal minor 는 -104
선행 주 소행렬식의 부호가 음으로 시작하여, 음과 양이 순서대로 교차되므로, (
에서의
의 헤시안 행렬의 고유값이 모두 음이라는 의미이고) 아래쪽이 열린 포물면 모양이므로 극댓값을 갖게 된다.
는
에서 극댓값
을 갖는다. ■
18. 다음은 주어진 함수에 경사하강법을 적용한 예시이다. 허용오차는
으로 주었다. 행렬을 바꾸어 시도해 보시오.
[출처] 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으로 나온다.
[SageMath code]
# initializing # https://sagecell.sagemath.org/
A = diagonal_matrix(RR, [20, 10, 2, 1])
b = vector(RR, [1, 1, 1, 1]) # objective function
x0 = vector(RR, [0, 0, 0, 0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red')) # gradient 의 norm을 그래프로 그림
[Answer]
Stationary point! Algorithm terminated!

위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.
# initializing
A = diagonal_matrix(RR, [99, -10, 0, 100])
b = vector(RR, [1, 1, 1, 1]) # objective function
x0 = vector(RR, [0, 0, 0, 0]) # initial guess
g0 = -b # initial gradient
r = [] # 그래프를 그리기 위한 용도
# main iteration
for i in range(0, 200):
gn = g0.norm()
r.append((i, gn))
if gn < 10^(-8):
print("Stationary point! Algorithm terminated!")
break
w = A*g0
a = g0.inner_product(g0)/(g0.inner_product(w)) # step-size
x1 = x0-a*g0
g1 = A*x1-b
x0 = x1;g0 = g1
show(line2d(r) + point(r, color = 'red')) # gradient 의 norm을 그래프로 그림
Stationary point! Algorithm terminated!

위의 그래프에서
이 점차 0에 수렴함을 쉽게 확인할 수 있다.
19. Graph the solid lying under the elliptic paraboloid
and above the rectangle
. And find its volume.
[SageMath code]
var('x, y, z')
F(x, y, z) = x^2/4 + y^2/9 + z - 1
implicit_plot3d(F(x, y, z) == 0, (x, -1, 1), (y, -2, 2), (z, 0, 1), opacity = 0.4)
[Answer]

[SageMath code]
solve(F(x, y, z) == 0, z)
[Answer]
[z == -1/4*x^2 - 1/9*y^2 + 1]
[SageMath code]
integral(integral(-1/4*x^2 - 1/9*y^2 + 1, x, -1, 1), y, -2, 2)
[Answer]
166/27
□ 설명
직사각형 영역
에서 함수
를 이중적분하는 문제와 같다. 따라서 구하고자 하는 입체의 부피는 다음과 같다.
■
[SageMath code]
var('x, y, z')
F(x, y, z) = x^2/25 + y^2/9 + z - 1
implicit_plot3d(F(x, y, z) == 0, (x, -4, 4), (y, -2, 2), (z, 0, 1), opacity = 0.4)
[Answer]
[SageMath code]
solve(F(x, y, z) == 0, z)
[Answer]
[z == -1/25*x^2 - 1/9*y^2 + 1]
[SageMath code]
integral(integral(-1/25*x^2 - 1/9*y^2 + 1,x,-4,4),y,-2,2)
[Answer]
13792/675
□ 설명
직사각형 영역
에서 함수
를 이중적분하는 문제와 같다. 따라서 구하고자 하는 입체의 부피는 다음과 같다.
. ■
[SageMath code]
var('x, y, z')
F(x, y, z) = x^3/8 + y^3/27 + z
implicit_plot3d(F(x, y, z) == 0, (x, -1, 1), (y, -2, 2), (z, 0, 1), opacity = 0.4)
[Answer]

[SageMath code]
solve(F(x, y, z) == 0, z)
[Answer]
[z == -1/8*x^3 - 1/27*y^3]
[SageMath code]
integral(integral(-1/4*x^2 - 1/9*y^2 + 1, x, -1, 1), y, -2, 2)
[Answer]
8*z
□ 설명
직사각형 영역
에서 함수
를 이중적분하는 문제와 같다. 따라서 구하고자 하는 입체의 부피는 다음과 같다.
. ■
20. 통계학에서 꼭 필요한 적분값
을 확인 하시오.
[SageMath code]
var('x') # http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f=exp(-x^2)
integral(f, x, 0, infinity)
[Answer]
답: 1/2*sqrt(pi) #
■
var('x') # http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f=exp(-x^2)
integral(f, x, -infinity, infinity)
답: sqrt(pi) #
■
21. 연속 확률변수
,
의 결합밀도함수
가 다음과 같이 주어져 있다고 하자.
, ![]()
일 확률을 구하여라.
풀이. 구하고자 하는 확률은 다음과 같다.
, ![]()
여기서 적분영역
은 다음 그림과 같다.

[SageMath code]
var('x, y') # http://sage.skku.edu/ 또는 https://sagecell.sagemath.org/
f(x, y) = 1/9*exp(-(x + y)/3)
print(integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2))
print((integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2)).n(digits=5))
[Answer]
-7/6*e^(-1/6) + 1
답. 0.012439 ■
var('x, y')
f(x, y) = 1/16*exp(-(x + y)/4)
print(integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2))
print((integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2)).n(digits=5))
-9/8*e^(-1/8) + 1
답 : 0.0071907 ■
21. 연속 확률변수
,
의 결합밀도함수
가 다음과 같이 주어져 있다고 하자. (식변경)
, ![]()
일 확률을 구하여라.
풀이. 구하고자 하는 확률은 다음과 같다.
, ![]()
여기서 적분영역
은 다음 그림과 같다.
var('x, y')
f(x, y) = exp(-(x + y)/16)
print(integral(integral(f(x, y), y, 0, 4/5 - x), x, 0, 4/5))
print((integral(integral(f(x, y), y, 0, 4/5 - x), x, 0, 4/5)).n(digits=5))
-1344/5*e^(-1/20) + 256
답 0.30981 ■
var('x, y')
f(x, y) = 1/16*exp(-(x + y)/4)
print(integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2))
print((integral(integral(f(x, y), y, 0, 1/2 - x), x, 0, 1/2)).n(digits=5))
-9/8*e^(-1/8) + 1
답 : 0.0071907 ■
22. Use a computer to graph the function, and plot some contour lines of the same function.
![]()
[SageMath code]
var('x, y')
f(x, y) = x*sin(x*y)
plot3d(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), opacity = 0.4)
contour_plot(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), fill = False, cmap = 'hsv', labels = True)
[Answer]

□ 설명
함수
의 그래프를 plot3d 명령어를 이용하여 3차원 곡면으로 그려보고(왼쪽), 같은 함수의 contour lines를 contour_plot 명령어를 이용하여 그려보았다(오른쪽). 오른쪽의 contour lines에서 같은 높이(함수값)를 나타내는 숫자(label)를 통해 주어진 함수
가 왼쪽 그림과 같은 형태의 곡면을 나타냄을 쉽게 예상할 수 있다.
22. Use a computer to graph the function, and plot some contour lines of the same function. (식변형)
![]()
[SageMath code]
var('x, y')
f(x, y) = x^2*cos(x*y^2)
plot3d(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), opacity = 0.4)
contour_plot(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), fill = False, cmap = 'hsv', labels = True)
[Answer]
□ 설명
함수
의 그래프를 plot3d 명령어를 이용하여 3차원 곡면으로 그려보고(왼쪽), 같은 함수의 contour lines를 contour_plot 명령어를 이용하여 그려보았다(오른쪽). 오른쪽의 contour lines에서 같은 높이(함수값)를 나타내는 숫자(label)를 통해 주어진 함수
가 왼쪽 그림과 같은 형태의 곡면을 나타냄을 쉽게 예상할 수 있다.
[SageMath code]
var('x, y')
f(x, y) = x*cos(x*y)
plot3d(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), opacity = 0.4)
contour_plot(f(x, y), (x, -2*pi, 2*pi), (y, -2*pi, 2*pi), fill = False, cmap = 'hsv', labels = True)
[Answer]
□ 설명
함수
의 그래프를 plot3d 명령어를 이용하여 3차원 곡면으로 그려보고(왼쪽), 같은 함수의 contour lines를 contour_plot 명령어를 이용하여 그려보았다(오른쪽). 오른쪽의 contour lines에서 같은 높이(함수값)를 나타내는 숫자(label)를 통해 주어진 함수
가 왼쪽 그림과 같은 형태의 곡면을 나타냄을 쉽게 예상할 수 있다.
23. Find the volume of the solid that lies above the cone
and below the sphere
.
[SageMath code]
var('r, t, p')
T1 = Spherical('inclination', ['azimuth', 'radius'])
T2 = Spherical('radius', ['azimuth', 'inclination'])
p1 = plot3d(pi/3, (t, 0, 2*pi),(r, 0, 3), transformation = T1, opacity = 0.4)
p2 = plot3d(4*cos(p), (t, 0, 2*pi), (p, 0, pi), transformation = T2, opacity = 0.4, color = 'orange')
show(p1 + p2, aspect_ratio = [1, 1, 1])

u, v, w = T1.transform(radius = r, azimuth = t, inclination = p)
integral(integral(integral(r^2*sin(p), r, 0, 4*cos(p)), p, 0, pi/3), t, 0, 2*pi)
[Answer]
10*pi
□ 설명
삼중적분을 이용하여 주어진 입체의 부피를 구하는 것이므로 피적분함수는 일단 1이다. spherical coordinate을 이용하여 적분하고자 하는 영역을 구하면 다음과 같다.
,
, ![]()
이때 피적분 함수에
가 생겨나는 것에 주의하라. 따라서
를 얻는다.
SageMath code]
var('r, t, p')
T1 = Spherical('inclination', ['azimuth', 'radius'])
T2 = Spherical('radius', ['azimuth', 'inclination'])
p1 = plot3d(pi/3, (t, 0, 2*pi),(r, 0, 3), transformation = T1, opacity = 0.4)
p2 = plot3d(6*sin(p), (t, 0, 2*pi), (p, 0, pi), transformation = T2, opacity = 0.4, color = 'orange')
show(p1 + p2, aspect_ratio = [1, 1, 1])
u, v, w = T1.transform(radius = r, azimuth = t, inclination = p)
integral(integral(integral(r^2*sin(p), r, 0, 4*cos(p)), p, 0, pi/3), t, 0, 2*pi)
[Answer]
9/4*pi*(8*pi - 9*sqrt(3))
□ 설명
삼중적분을 이용하여 주어진 입체의 부피를 구하는 것...
23. Find the volume of the solid that lies above the cone
and below the sphere
.(수치변경)
[SageMath code]
var('r, t, p')
T1 = Spherical('inclination', ['azimuth', 'radius'])
T2 = Spherical('radius', ['azimuth', 'inclination'])
p1 = plot3d(pi/6, (t, 0, 2*pi),(r, 0, 3), transformation = T1, opacity = 0.4)
p2 = plot3d(3*cos(p), (t, 0, 2*pi), (p, 0, pi), transformation = T2, opacity = 0.4, color = 'orange')
show(p1 + p2, aspect_ratio = [1, 1, 1])

u, v, w = T1.transform(radius = r, azimuth = t, inclination = p)
integral(integral(integral(r^2*sin(p), r, 0, 3*cos(p)), p, 0, pi/6), t, 0, 2*pi)
[Answer]
63/32*pi
□ 설명
삼중적분을 이용하여 주어진 입체의 부피를 구하는 것이므로 피적분함수는 일단 1이다. spherical coordinate을 이용하여 적분하고자 하는 영역을 구하면 다음과 같다.
,
, ![]()
이때 피적분 함수에
가 생겨나는 것에 주의하라. 따라서
를 얻는다.
24. 연쇄법칙(Chain Rule)에 대하여 간략하게 설명하시오.
합성함수의 도함수에 대한 공식이다, 그 공식이 마치 사슬이 이어져 있는 것 같다 해서, 합성함수의 미분 공식을 연쇄법칙이라고 한다. 연쇄 법칙을 적분에 거꾸로 적용한 것이 치환적분이다.
합성함수를 미분할 때 활용한다. 예를 들어, 어떤 함수가
![]()
와 같이 주어진다고 할 때,
나
를 바로 구하는 것은 쉽지 않다. 이럴 때 이용하는 것이 연쇄법칙이며, 미분의 정의로부터 이해할 수 있다.
![]()
![]()
25. 방향도함수(directional derivative), 그래디언트(gradient), 헤시안(Hessian)에 대하여 간략하게 설명하시오.
u=(u1,u2)를 단위벡터라 했을 때 점 (a,b)에서 u방향으로의 f의 방향도함수는
로 정의된다.
의 그래디언트는
의 편도함수를 성분으로 갖는 벡터로 ![]()
정의된다.
는 미분가능함수
의
점에서의 접선벡터와 직교인 벡터, 접선벡터는 표면 위에 있다.
의 헤시안은
의 2계 편도함수를 성분으로 갖는 행렬로
같이 정의된다.
함수 f가 x에서 미분 가능하며, 함수 g가 f(x)에서 미분 가능하면, f
g는 x에서 미분 가능하다. 즉 (f
g)'(x)=f'(g(x))g'(x) 이다.
만약 f가 어떤 구간 I에서, g가 f(I)에서 미분 가능하다면, f
g는 I에서 미분 가능하다.
즉 (f
g)'=(f'
g)g' 이다.
(1) 방향도함수(Directional Derivative)
다변수함수에서는 먼저 독립변수에 대한 편도함수를 다루게 된다. 그러나 편도함수는 한정된 방향으로의 변화율만 알 수 있다. 이 때 이 방향을 일반화한 것이 방향도함수이다. 이변수함수
의 경우
에서의 방향도함수를 단위벡터
에 대해 다음과 같이 정의할 수 있다.
![]()
(2) 그래디언트(Gradient)
다변수함수에서는 편도함수를 성분으로 갖는 벡터가 큰 의미를 갖는다. 대표적으로 이변수함수에 대해서 그래디언트를 다음과 같이 정의한다.
![]()
변수가 세 개 이상일 때도 같은 방법으로 정의한다.
(3)헤시안(Hessian)
변수함수의 헤시안은
차 정사각행렬이며 다음과 같이 정의한다.

우리는 Clairaut’s Theorem을 만족하는 함수만을 다루므로 이 헤시안은 대칭행렬이며 따라서 직교대각화가 가능하다. 직교대각화하면 고윳값이 파악되고 이차형식의 성질로부터 고윳값과 편도함수가 어떠한 관련이 있는지 알 수 있으며 이를 통해 극대, 극소를 쉽게 판정할 수 있다.
이변수 함수 f(x,y)와 단위벡터 u=<a,b>에 대해 u방향으로의 함숫값의 변화율은
D
f(x,y)=
이고 이것을 간단하게 D
f(x,y)라고 쓴다.
이를 방향도함수라고 한다.
이변수 함수 f(x,y)에 대해 <f
(x,y),f
(x,y)>=<
> 인 벡터를 그래디언트 벡터라고 한다. 즉 각 변수의 미분값으로 구성되는 벡터로, 기울기 벡터라고도 한다.
헤시안은 함수의 이차미분을 나타내는 값이다.
극대/극소점의 구분이나 함수의 모양을 판별하는데 이용한다.
26. Gradient Descent Algorithm(경사-기울기 하강법, 傾斜下降法)에 대하여 간략하게 설명하시오.
어떤 모델에 대한 비용을 최소화 시킬 때 쓰이는 알고리즘이다. 뉴턴 방법의 응용판이다. 경사하강법은 탐색방향을 현재의 위치
의 근방에서 가장 가파르게 하강하는 방향으로 사용한다. 하지만 경우에 따라 zigzag 현상이 발생할 수 있어 컬레기울기법을 사용한다.
함수의 기울기를 구하여 기울기가 낮은 쪽으로 계속 이동시켜 극갑에 이를 때까지 반복하는 알고리즘이다. 음의 그래디언트 방향은 경사가 가장 가파르게 하강하는 방향이므로 최적의 탐색 방향이 된다.
함수의 기울기를 구해 기울기가 낮은 쪽으로 계속 이동시켜 극한 값을 구하는 방법이다.
f(x)에 대해 시작점 x1을 지정하고, xn이 있을 때 xn+1은
x
=x
-
으로 구한다.]
27. Fubini의 정리 (연속 2변수함수의 2중적분 경우, 적분순서를 바꾸어도 이중적분값은 같다)에 대하여 간략하게 설명하시오.
정적분을 계산할 때, 일반적으로 미소면적
에 대해 한번에 계산할 수 없으며
또는
와 같이 분리하여 차례로 계산한다(전자가
에 대하여 먼저 적분하는 경우, 후자가
에 대하여 먼저 적분하는 경우). 적분영역이 각 변이 좌표축에 평행한 직사각형, 직육면체, …인 경우에는 각 변수에 대해 아래끝, 위끝이 상수로 나타나며, 이럴 때는 적분 순서를 바꾸어도 된다. 하지만 적분영역이 이러한 직사각형이 아닌 경우, 아래끝이나 위끝 중에 독립변수에 대한 식으로 나타날 수 있으며 이 때는 적분영역을 잘 보고 적분순서를 정해야 한다.
가 직사각형 영역
={
}에서 연속이면
성립한다.
가 영역
{
}에서 연속이면
성립한다.
가 영역
{
}에서 연속이면
성립한다.
어떤 이변수함수 f(x,y)에 대해서, f(x,t)가 [c,d]에서 적분 가능하고, f(t,y)가 [a,b]에서 적분 가능하면
가 성립한다는 뜻의 정리다.
[부록 2] 미적분학용 Sage/Python 코드
http://matrix.skku.ac.kr/Cal-Book/Appnd/index.htm
http://matrix.skku.ac.kr/Mobile-Sage-G/sage-grapher.html

TakeHome Exam 3 [ 인공지능을 위한 기초수학 ]
- 아래 빈칸을 채우거나, 답이 주어진 문제는 유사한 새 문제나 난이도가 더 높은 문제로 바꾸어 풀거나, 코드를 이용하여 풀어서 자신의 파일을 제출하시오. (QnA에 아래 문제들에 대하여 1인당 5문제씩 풀어서, 자신이 푼 것을 공유하고, 팀별로 팀원들이 푼 문제를 Revise 하고, Finalize 해서 Final PBL 보고서에 Final OK 된 것만 제출하시오.)
Part 1. 주요 개념 중 20개를 골라 아는 대로 서술하시오.
1. 고윳값과 고유벡터
차의 정사각행렬
이 있다고 하자. 영벡터가 아닌 벡터
에 대해
를 만족하는
를
의 고윳값,
를
에 대응하는
의 고유벡터라고 한다.
2. 고윳값 분해
정사각행렬
가 대각화가능할 때, 가역행렬
와 대각선행렬
에 대해 다음이 성립한다.
![]()
그리고
의 고윳값과 고유벡터를 이용해
를 분해한다.
3. 도함수
함수
가 미분가능할 때, 도함수는
이다.
4. Taylor 정리
다변수 함수
가 연속인 편도함수를 가지면, 적당한
가 존재하여 다음이 성립한다.
- ![]()
- ![]()
5. Fermat의 임계점 정리
함수
가
에서 극대 또는 극소가 되고
의 편도함수가 존재하면 다음이 성립한다.
![]()
6. Fubuni의 정리
가 직사각형 영역
에서 연속이면,
이 성립한다. 적분영역이 좌표축에 평행한 직사각형 영역이 아니면 성립하지 않는다.
7. 조합
서로 다른
개에서 중복 없이
개를 택하는 방법의 수는 다음과 같다.
![]()
8. 대수의 법칙
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률
는 수학적 확률
에 가까워진다.
9. 경사하강법
경사하강법(gradient descent method)은 탐색방향을
로 택하는 경우이다.
10. Gauss 소거법과 Gauss-Jordan 소거법
Gauss 소거법은 일반 행렬을 REF를 만드는 과정을 일컫는 말이고, Gauss-Jordan 소거법은 일반 행렬을 RREF를 만드는 과정을 일컫는 말이다.
두 소거법 모두 기초행연산만을 사용한다.
11. 뉴턴 방법
실숫값 함수의 근사값을 그래프와 도함수를 이용해 쉽게 구하는 방법이다. 구하는 방법은 다음과 같다.
1) 실제 구하려는 근이
이라 할 때,
에 적당히 가까운 값인
을 가정한다.
2)
으로
를 구한다.
3)
을 여러 번 반복하여
에 매우 가까운
을 구한다. 그것이 우리가 구하는 근사값이다.
12. 부정적분
어떤 구간에서 정의된 함수
에 대하여 이 구간의 모든
에 대해
를 만족하는 함수
가 존재할 때,
를
의 원시함수 또는 부정적분(indefinite integral)이라고 한다.
가 주어졌을 때 그 부정적분
를 구하는 것을
를 적분한다고 한다.
부정적분의 식을 간단히 하면 다음과 같다.
![]()
13. 곡선의 길이
가
에서 연속인 함수일 때,
와
사이의
가 그린 곡선(혹은 직선)의 길이
은 다음과 같다.
![]()
14. Comparison Theorem for integral
변수
에 대한 함수
,
가 있다고 하자.
일 때 항상
을 만족하고
와
가 연속이라면, 아래의 항목은 참이 된다.
(1) 만약
가 수렴하면,
또한 수렴한다.
(1) 만약
가 발산하면,
또한 발산한다.
15. 이차형식
차 정사각 대칭행렬인
에 대해
개의 변수 ![]()
에 대하여 이차다항식
를
상의 이차형식이라 한다.
16. 베이즈 정리
이 표본공간
의 분할을 이룰 때, 임의의 사건
에 대해 다음이 성립한다.
![]()
따라서 자연수
에 대해 다음이 성립한다.

17. 중심극한정리
즉, 평균이
이고 분산이
인 모집단에서, 추출한 크기
이 증가할수록 모집단의 분포유형에 관계없이 표본평균
가 근사적으로 정규분포
을 따른다는 것이다.
18. 공분산과 상관계수
확률변수
와
의 공분산은 다음과 같다.
![]()
그리고
와
의 상관계수는 다음과 같이 정의된다.
![]()
19. 이항 계수
를 이항정리라고 하며, 각 항의 계수
는 이항계수라고 한다.
개의 괄호 중에서
를 택하여 곱할 괄호
개를 택하는 경우의 수만큼 동류항이 생기기 때문에 조합의 개념과도 연결된다. 즉,
![]()
이다.
20. 대수의 법칙
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률
는 일정한 값
, 즉, 수학적 확률에 가까워진다. 즉, 다음이 성립한다.
![]()
21. 조건부 확률
어떤 사건
가 일어났다는 조건하에서 사건
가 일어날 확률을 사건
에 대한 사건
의 조건부 확률(conditional probability)이라 하고
로 표시
22. 확률 변수
일정한 확률을 갖고 발생하는 사건(event)에 수치가 부여되는 함수를 확률변수(random variable)라 한다. 즉 표본 공간의 모든 표본에 대해 어떤 실수 값을 대응시킨(할당한) 것이다. 확률 변수는 숫자 혹은 벡터를 생성하는 기계(블랙박스)에 비유할 수 있다. 예를 들어, 동전
개를 동시에 던지는 시행에서 뒷면이 나오는 동전의 개수를
라 하면,
에
를 할당 할 수 있다. 이 때의
를 확률 변수라고 한다.
23. 확률 분포
확률변수
가 가지는
에 확률
를 대응시키는 함수를
의 확률분포(probability distribution)라 한다.
24. 확률 질량 함수
확률변수
가 취할 수 있는 모든 값
이 취하는 확률이 각각
로 주어질 때,
를 이산확률변수라 하고
를
의 이산확률함수(probability function) 또는 확률질량함수(probability mass function, pmf)라 한다.
25. 확률 밀도 함수
연속확률변수란 어떤 범위에 속하는 모든 실수값을 취할 수 있는 확률변수로, 그 분포는 확률밀도함수(probability density function, pdf)를 이용하여 다음과 같이 나타낸다. 연속확률변수
의 확률밀도함수가
일 때,
에 있을 확률은
이다.
26. 베르누이 분포
베르누이 시행(Bernoulli trial)은
회 시행의 결과가 성공(Success) 혹은 실패(Fail) 두 가지 중 하나로만 나오는 실험을 말한다. 예를 들어, 동전을 한 번 던지는 시행에서 앞면이 나오면 ‘성공’, 뒷면이 나오면 ‘실패’라고 할 수 있다. 따라서 동전 던지기는 베르누이 시행이다. 이를 확률변수
로 나타낼 때, 일반적으로 성공한 결과를
, 실패한 결과를
으로 나타낸다.
성공할 확률이
인 베르누이 시행에서 확률변수
의 확률분포는 다음과 같다.
![]()
이 때, 확률변수
는 베르누이 분포를 따른다고 하며,
로 나타낸다.
27. 이항 분포
한 번의 시행에서 사건
가 일어날 확률이
라 하자. 이 시행을
회 독립적으로 반복할 때, 사건
가 일어나는 횟수를
라 하면,
의 확률분포는 다음과 같다.
![]()
확률질량함수를 살펴보면, 이항정리
에서 나타나는 모양이다. 이항 분포라는 이름이 어디서 왔는지 알 수 있는 대목이다.
이 때, 확률변수
는 이항분포
를 따른다고 하며,
로 나타낸다.
베르누이분포는 이항분포에서
이
인 특수한 경우임을 알 수 있다.
28. 포아송 분포(Poisson distribution)
이항분포
에서 평균
는 일정하고,
을 한없이 크게 할 때(상대적으로
는 한없이 작아짐) 이 확률분포는 포아송 분포가 된다.
29. 균등 분포
연속확률변수
가
와
사이에서 일정한 값을 취하고
일 때
는 균등분포(uniform distribution)를 따른다고 하며,
로 표시한다.
30. 정규 분포
연속확률변수
의 확률밀도함수
가 다음과 같을 때,
는 정규분포(normal distribution)를 따른다고 하고
으로 표시한다.
![]()
31. 표준 정규 분포
확률변수
가 정규분포
를 따를 때, 표준화 확률변수
는 다음과 같은 확률밀도함수를 갖는다.
![]()
이 때,
는 표준정규분포(standard normal distribution)를 따른다고 하고,
로 표시한다.
32. 지수 분포
사건이 서로 독립적일 때, 단위 시간동안 발생하는 사건의 횟수가 푸아송 분포를 따른다면, 다음 사건이 일어날 때까지 대기 시간은 지수분포(Exponential distribution)를 따른다고 한다.
33. 공분산 행렬
개의 확률변수
를 하나의 벡터로 나타낸 것을
라 하자. 벡터
의 공분산 행렬(covariance matrix)은
성분이
일 때는
의
번째와
번째 확률변수의 공분산이고,
일 때는
번째 확률변수의 분산인
행렬을 말하는 것으로
라고 나타낸다.
Part 2
와 R 을 이용하여 계산하고 자신의 말로 설명하시오.
1. 점
에서 평면
에 이르는 거리
를 구하여라.

① 주어진 문제의 숫자를 바꾸어서, 비슷한 유형의 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어 또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
Sagemath Code v=vector([2, -2, 3]) n=vector([1, 3, -2]) d=-6 vn=v.inner_product(n) nn=n.norm() Dist=abs(vn+d)/nn print ("P=", v) print ("n=", n) print (Dist)
Answer P= (2, -2, 3) n= (1, 3, -2) 8/7*sqrt(14) |
□ 설명
* 점
으로부터 평면
까지의 거리를 구하는 코드이다. 평면까지 거리를 구하는 공식이 있으므로 그것을 적용하여 Dist 변수에 거리 값을 저장하고 출력한 것이다.
점과 평면 사이의 거리 = 점의 위치벡터와 평면의 법선 벡터를 내적한 값에 마지막 상수항을 맞추고 절대값을 취한 후 법선 벡터의 norm으로 나누어주면 된다.
|
[Sage] v=vector([7, 5, 3]) n=vector([1, -8, -5]) d=13 vn=v.inner_product(n) nn=n.norm() Dist=abs(vn+d)/nn print "P=", v print "n=", n print Dist
P= (7, 5, 3) n= (1, -8, -5)
7/6*sqrt(10) |
□ 설명
점과 평면사이의 거리를 구하는 방법은 평면의 법선벡터와 원점과 점을 이어주는 벡터를 이용해 구한다 첫 번째로 v벡터의 성분과 법선 벡터의 성분을 설정해 준 다음 두 벡터의 내적을 구하고 내적값에 거리 d를 더해준 값에 법선백터의 노름을 구해서 나누게 되면 평면과 점 사이의 거리가 나온다.
2. 다음 선형연립방정식을 Gauss-Jordan 소거법으로 풀어라.

① 주어진 문제의 변수를 늘리고 숫자를 바꾸어 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
Sagemath Code A=matrix([[1, 3, -2, 0, 2, 0], [2, 6, -5, -2, 4, -3], [0, 0, 5, 10, 0, 15], [2, 6, 0, 8, 4, 18]]) b=vector([0, -1, 5, 6]) print ("[A : b] =") print (A.augment(b)) print ("RREF([A : b]) =") print (A.augment(b).rref()) print ("x =", A.solve_right(b))
Answer [A : b] = [ 1 3 -2 0 2 0 0] [ 2 6 -5 -2 4 -3 -1] [ 0 0 5 10 0 15 5] [ 2 6 0 8 4 18 6] RREF([A : b]) = [ 1 3 0 4 2 0 0] [ 0 0 1 2 0 0 0] [ 0 0 0 0 0 1 1/3] [ 0 0 0 0 0 0 0] x = (0, 0, 0, 0, 0, 1/3) |
□ 설명
- 각 연립방정식을 행렬 형태로 만든 후에, 상수 값을 벡터로 변수에 넣어줌
- 그 행렬의 첨가행렬을 구하고, 그 값의 RREF값을 구하여(Gauss-Jordan 소거법) 해를 구함
- 자유변수가 존재하므로 나타난 해가 무수히 많은 해 중의 하나라는 것에 주목해야 한다.
|
[Sage] A=matrix([[2, 3, 4, -5, 1], [4, 6, 7, -2, -1], [1, -4, -5, 2, 4], [7, -2, 8, -9, 3], [3,7,1,-3,-5]]) b=vector([1, 3, 5, -9,-7]) print "[A : b] =" print A.augment(b) print "RREF([A : b]) =" print A.augment(b).rref() print "x =", A.solve_right(b)
[A : b] = [ 2 3 4 -5 1 1] [ 4 6 7 -2 -1 3] [ 1 -4 -5 2 4 5] [ 7 -2 8 -9 3 -9] [ 3 7 1 -3 -5 -7]
RREF([A : b]) = [ 1 0 0 0 0 -5177/7992] [ 0 1 0 0 0 12761/7992] [ 0 0 1 0 0 107/888] [ 0 0 0 1 0 743/666] [ 0 0 0 0 1 20791/7992]
x = (-5177/7992, 12761/7992, 107/888, 743/666, 20791/7992) |
□ 설명
가우스조던 소거법은 선형연립방정식의 첨가행렬을 RREF로 변형하여 푸는 방식이다 sage를 이용해 첨가행렬의 RREF를 구하고 RREF의 마지막 행이 영이 아님을 알 수 있고 그 해가 x = (-5177/7992, 12761/7992, 107/888, 743/666, 20791/7992) 임을 알 수 있다.
3. 기본행 연산을 이용하여 다음 행렬의 역행렬을 구하여라.
![]()
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
Sagemath Code A=matrix([[-23, 475, -19], [51, 10, 32], [200, 35, -14]]) dA=A.det() # 행렬식 계산 adjA=A.adjugate() # 수반행렬 계산 print ("inverse of A =") print ("(1/dA)*adjA =") print ((1/dA)*adjA)
Answer inverse of A = (1/dA)*adjA = [ -28/75827 133/75827 342/75827] [7114/3412215 458/379135 -233/3412215] [ -43/682443 2129/75827 -4891/682443] |
□ 설명
- 주어진 정사각행렬의 행렬식을 계산하고, 수반행렬을 곱하여 역행렬을 구하였다.
□ 풀이
|
[Sage] a = random_vector(4) b = random_vector(4) c = random_vector(4) d = random_vector(4) A=matrix(4,4,[a,b,c,d]) print "A =" print A print "inverse of A =" print A.inverse() print A.inverse()*A
A = [ 1 1 0 -2] [ 1 -1 0 4] [ 1 -2 1 -43] [ -1 0 -1 4] inverse of A = [ 47/90 43/90 1/45 1/45] [ 13/30 -13/30 -1/15 -1/15] [-11/18 -7/18 -1/9 -10/9] [ -1/45 1/45 -1/45 -1/45] [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] |
□ 설명
랜덤한 4차 벡터들의 4개를 설정해 4X4행렬을 만들었고 그 행렬의 역행렬을 구하는 방법을 고안해보았다.
4.
다음 행렬식을 (a) 먼저 손으로 구하고, (b) 문제를 변형하여 새로운 문제를 만든 후, 그 문제에 대하여 Sage로도 구하시오.

① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서, 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
Sagemath Code B=matrix([[1, 0,1,0], [2,1,0,-1], [4,0,1,1],[3,0,1,1]]) print (B.det())
Answer -1 |
□ 설명
- 행렬의 역행렬을 구하고 여인자를 이용하여 행렬식을 구함
B=matrix([[4, 5, 6,8,1], [0, 1, 0,-1,1], [0, 0, 1,2,1],[0,0,1,7,4],[0,0,1,1,2]])
B.det() # 행렬식 계산
32

□ 풀이
|
Sagemath Code B = matrix([[3,-7,8,9,-6], [0,2,-5,7,3], [0,0,1,5,0], [0,0,2,4,-1], [0,0,0,-2,0]]) print("det(B) = ") print(B.det()) # 행렬식 구하기
Answer det(B) = -12 |
□ 설명

![]()
![]()
![]()
5. 교재에서 3차 행렬
의 고유값을 구한 방법과 같은 방법으로, 각자가 만든 새로운 5차 행렬의 5개의 고유값 (중근포함)과 고유벡터를 구하라.
① 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
② 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
□ 풀이
|
Sagemath Code A=matrix([[1, 2, 2, 3, 2] , [1, 2, -1, 1, 2] , [3, -3, 0, 2, 3] , [-1, 3, 2, 1, -2] , [0, 3, 2, -3, 3 ]]) print A.eigenvalues() print A.eigenvectors_right()
Answer [-4.761598050892147?, -0.8294344657420528?, 5.988808561792778?, 3.301111977420712? - 0.1031651490672451?*I, 3.301111977420712? + 0.1031651490672451?*I]
[(-4.761598050892147?, [(1, 2.582707072014312?, 5.544473283936827?, -4.548602471286958?, -4.185075674466776?)], 1), (-0.8294344657420528?, [(1, 0.1988626558343088?, 0.0675646756028583?, -0.4335924759263259?, -0.5307558504187045?)], 1), (5.988808561792778?, [(1, 0.614473727567008?, 0.7464133552000836?, 0.03480148777125371?, 1.081314966472417?)], 1), (3.301111977420712? - 0.10316514906724505?*I, [(1, -0.3052543282563261? - 0.1520272539716970?*I, 1.121414751572867? + 0.1623229142282951?*I, 0.4801151780934288? - 0.05988325552488333?*I, -0.3857772017463279? + 0.02794664849710436?*I)], 1), (3.301111977420712? + 0.10316514906724505?*I, [(1, -0.3052543282563261? + 0.1520272539716970?*I, 1.121414751572867? - 0.1623229142282951?*I, 0.4801151780934288? + 0.05988325552488333?*I, -0.3857772017463279? - 0.02794664849710436?*I)], 1)]
|
□ 설명
Sage 코드를 통해 고윳값 목록을 먼저 나열하고
각 고윳값에 해당하는 고유벡터, 그리고 고윳값의 중복도를 구한 것이다.
A=matrix([[4, 5, 6,8,1], [0, 1, 0,-1,1], [0, 0, 1,2,1],[0,0,1,7,4],[0,0,1,1,2]]) # A 입력
print A.eigenvectors_right() # A의 고유벡터 : (고유값, [고유벡터], 중복도)
[(4, [
(1, 0, 0, 0, 0)
], 1), (1, [
(1, -3/5, 0, 0, 0)
], 1), (8.15919124698288?, [(1, -0.04807089231814500?, 0.1350646283592882?, 0.4370340722151771?, 0.09288536069645698?)], 1), (0.9204043765085612? - 0.3651645091148860?*I, [(1, -0.6028871092069535? + 0.1288833770835213?*I, 0.03971683472159992? - 0.0948208305836670?*I, -0.04427909958492469? - 0.0722834259510106?*I, 0.05077171089312670? + 0.1376109965775942?*I)], 1), (0.9204043765085612? + 0.3651645091148860?*I, [(1, -0.6028871092069535? - 0.1288833770835213?*I, 0.03971683472159992? + 0.0948208305836670?*I, -0.04427909958492469? + 0.0722834259510106?*I, 0.05077171089312670? - 0.1376109965775942?*I)], 1)]
□ 설명
A.eigenvectors_right() # A의 고유벡터 : (고유값, [고유벡터], 중복도) 이므로 고유값과 고유벡터를 구할 수 있다.
Part 3. 다음 물음에 답하여라.
1. Gauss 소거법과 Gauss-Jordan 소거법에 대하여 아는 대로 설명하시오.
Gauss 소거법은 일반 행렬을 REF를 만드는 과정을 일컫는 말이고, Gauss-Jordan 소거법은 일반 행렬을 RREF를 만드는 과정을 일컫는 말이다. 두 소거법 모두 기초행연산만을 사용한다.
Gauss 소거법: 선형연립방정식의 첨가행렬을 REF로 변형하여 푸는 방법이다.
Gauss-Jordan 소거법: 선형연립방정식의 첨가행렬을 RREF로 변형하여 푸는 방법이다
이 두 과정은 기본행 연산을 통해 이루어 지는데 소거법을 통해 행렬들을 정리하는 과정에서 해집합이 바뀌지 않는 점을 이용한다.
행렬
가 다음
가지 성질을 만족할 때, 행 사다리꼴(row echelon form, REF)이라고 한다.
(1) 성분이 모두
인 행이 존재하면 그 행은 행렬의 맨 아래에 위치한다.
(2) 각 행에서 처음으로 나타나는
이 아닌 성분은
이다. 이때 이
을 그 행의 선행성분(leading entry, leading
)이라고 한다.
(3)
행과
행 모두에 선행성분이 존재하면
행의 선행성분은
행의 선행성분보다 오른쪽에 위치한다.
2. 행렬의 대각화를 배우는 이유에 대하여 아는 대로 서술하시오.
닮음인 대각선행렬을 찾는 것이다. 수학적으로는, 벡터 공간을 분해한다는 점에서 의미가 있다. 이게 무슨 말인지는 대각행렬이 갖는 의미를 생각해보면 알 수 있다. 대각행렬로 벡터를 변환하면 기저벡터가 늘어났다 줄었다 하면서 좌표계가 변하는 것을 알 수 있다. 대각화라는 건 대각화 가능한 행렬에 대해 어떤 기저가 존재해서 그 행렬이 그 기저에 대해 이러한 작용을 한다는 말과 같다. 행렬을 대각화하면 대각성분에 고윳값이 놓이게 되고 행렬식을 매우 쉽게 계산할 수 있으며 Hessian 행렬을 이용한 다변수함수의 극대, 극소 판별 등 활용 범위가 매우 넓다. 대각화를 배우는 이유는 P^(-1)AP=D로 나타내기 위해선데 이 성질은 고윳값 분해를 하는 기본이 되고 이어나가 특이값 분해를 하는 데 있어서 기본이 되는 개념이기 때문이다. 그리고 이차형식을 일반적으로 나타내는데 사용되는데 XTAX꼴로 표현되기 때문이다. 이차형식에서 직교대각화를 이용하면 교차항을 제거할 수 있다.
3. 1차독립인 벡터들의 정규직교화와 행렬의 QR 분해 사이의 관계를 아는 대로 서술하시오.
행렬 A가 k개의 일차독립인 열들을 가질 때, A를 정규직교화한 행렬을 Q라고 햇을 때 A=QR을 만족하는 R(k×k인 상삼각행렬)을 구해 QR로 A를 분해하는 것을 QR분해라 한다.
1차 독립인 행벡터들로 구성된 행렬을
라고 할 때,
의 행공간을 정규직교화한 행렬을
라고 하자. 이때 QR 분해는
을 만족하는 상삼각행렬
을 구해,
를
와
로 분해하는 것을 말한다.
행렬
가 rank
인
행렬이라면,
로 분해가능하다. 여기서
는
의 열공간
의 정규직교기저로 만들어진
행렬이고,
은 가역인 크기
의 상삼각행렬이다.
SVD를 이용해 지금까지의 자료를 분석해 근사해를 구할 수 있다. 즉, 데이터의 핵심을 잡아낼 수 있다. 이를 통해 앞으로의 데이터 변화를 예측할 수 있다. 이제
행렬이고
인 경우
라 하자. Gram-Schmidt 정규직교화 과정에 의하여 행렬
의 열공간
의 정규직교기저
을 얻을 수 있다.
4. 행렬의 SVD를 배우는 이유에 대하여 아는 대로 서술하시오.
SVD는 특이값 분해 인데 이 특이값 분해는 고유값 분해를 확장한 개념이다. 고유값 분해는 대각화가 가능한 정사각행렬일때만 정의되는 개념이다. 일반적인 행렬에서 적용하기 위해 SVD를 사용한다. 이 개념을 통해 일반화된 역행렬을 구하는데 중요한 개념을 가지고 이 일반화된 역행렬은 최소제곱해 연구에 중요한 Key 정사각행렬이 아니더라도 모든 행렬에 대해서 세 행렬의 곱으로 분해할 수 있으며,
에서
의 대각선방향으로 특이값들이 나열되어 있다. 이 값들은
나
의 고윳값들의 양의 제곱근이며 활용범위가 매우 넓다. 주성분 분석(PCA)등에 활용된다.
Part 4. 다음 물음에 답하여라. (단답형, 12문항)
(각 3점×12문항=36점)
1. 다음의 두 벡터
와
의 내적
을 구하여라.
, ![]()
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
Sagemath Code
a=vector([2, -1, 3, 2, 1])
b=vector([3, 2, 1, -4, 2])
print "a=", a
print "b=", b
print a.inner_product(b)
# 내적 계산, 형식은 a.inner_product(b)
|
답 : |
a= (2, -1, 3, 2, 1) b= (3, 2, 1, -4, 2)
1 |
, ![]()
Sagemath Code
a=vector([-1, 3, 7, -1, 3])
b=vector([5, -2, 1, 4, -6])
print "a=", a
print "b=", b
print a.inner_product(b)
# 내적 계산, 형식은 a.inner_product(b)
|
답 : |
a=vector(-1, 3, 7, -1, 3) b=vector(5, -2, 1, 4, -6)
-26 |
□ 설명
![]()
2. 다음 행렬
에 대하여
을 구하여라.

① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
Sagemath Code
A=matrix([
[1,2,3,4,5]
,[0,1,0,1,0]
,[-1,1,-1,1,-1]
,[0,1,2,3,4]
,[-4,2,-3,1,5]
])
print A.trace()
|
답 : |
|

Sagemath Code
A=matrix([
[1,2,3,4,5]
,[0,1,0,1,0]
,[-1,1,-1,1,-1]
,[0,1,2,3,4]
,[-4,2,-3,1,5]
])
print A.trace()
□ 설명
![]()
= ![]()
![]()
|
답 : |
|
3. 다음은 주어진 선형연립방정식의 해를 계수행렬
의 역행렬을 이용하여 구하는 과정이다. 물음에 답하여라.
![]()
![]()
![]()
![]()
풀이. Sage를 이용하여 계수행렬
의 역행렬을 구하면 다음과 같다.
A=matrix([[1, 2, -1, 3], [0, 4, 2, -1], [1, 0, 3, 1], [3, 5, 2, -1]])
print A.inverse()
![]()
[ -1/30 -2/5 1/30 1/3]
[ 1/10 1/5 -1/10 0]
[-11/150 3/25 41/150 -1/15]
[ 19/75 1/25 11/75 -2/15]
sage
A=matrix([[1, 2, -1, 3], [0, 4, 2, -1], [1, 0, 3, 1], [3, 5, 2, -1]])
print A.inverse()
b = vector([3, 1, -2, 2])
print("x, y, z, u =", A.inverse()*b)
(질문) 위 선형연립방정식의 해 중
값을
로 나타낼 때,
를 아래에 기입하시오. (단,
와
는 서로소이다)

이므로
이다. 따라서 구하는 값은 ![]()
|
답 : |
|
4. 행렬
에 대하여 기본행 연산
을 적용한 행렬의 2행 성분의 합을 기입하여라.
![]()
따라서 구하는 값은
이다.
|
답 : |
|
5. 다음은 세 벡터
,
,
가 일차독립인지를 판단하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.
풀이. Sage를 이용하여 세 벡터
,
,
를 열벡터로 하는 행렬을
라 하고
의 행렬식을 구하면 다음과 같다.
v1=vector([0, -1, 3])
v2=vector([5, 1, -2])
v3=vector([4, -7, 10])
A=column_matrix([v1, v2, v3])
print A.det()
![]()
-59
따라서 세 벡터
,
,
는 일차독립이다.
|
답 : |
A.det() |
6. 다음은 Sage를 이용하여 행렬
에 대하여 주어진 선형변환
,
이 전사인지 확인하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.
풀이. 먼저 Sage를 이용하여 선형변환을 정의하자.
U = QQ^2
V = QQ^3
A = matrix(QQ, [[1, 2], [-1, 1], [1, 0]])
T = linear_transformation(U, V, A, side='right') # 선형변환
print T
Vector space morphism represented by the matrix:
[ 1 -1 1]
[ 2 1 0]
Domain: Vector space of dimension 2 over Rational Field
Codomain: Vector space of dimension 3 over Rational Field
이제 선형변환
의 치역을 구해보자.
print TA.image() # 치역 생성
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 1/3]
[ 0 1 -2/3]
이므로
는 전사가 아니다.
|
답 : |
TA.image() |
7. 두 선형변환
와
의 표준행렬
와
가 각각 다음과 같이 주어져 있다고 하자. 합성변환
의 표준행렬
의
성분을 기입하여라.
, ![]()
풀이. 합성변환
의 표준행렬은
을 만족하므로
의
성분을 구하면 다음과 같다.
|
답 : |
41 |
8. 다음과 같이 주어진 선형연립방정식에 대하여 물음에 답하여라.
![]()
![]()
![]()
![]()
풀이. Sage를 이용하여 첨가행렬의 RREF를 구하면 다음과 같다.
A=matrix([[1, 3, 5, -2], [0, 2, -7, 1], [4, 1, -3, 1], [7, 10, 2, 0]])
b=vector([1, -3, 12, 20])
print "RREF([A : b]) ="
print A.augment(b).rref()
![]()
RREF([A : b]) =
[ 1 0 0 0 194/65]
[ 0 1 0 0 -3/13]
[ 0 0 1 0 46/65]
[ 0 0 0 1 157/65]
(질문) rank(
)는 얼마인지 아래에 기입하시오.
sage
c= A.augment(b).rref()
print c.rank()
|
답 : |
4 |
9. 아래 주어진 행렬
에 대하여 dim Col(
)
nullity(
)를 구하여라.

풀이. Sage를 이용하여 행렬
의 RREF를 구하면 다음과 같다.
A=matrix([[1, 2, 3, 0, -2, 0, 7, 6], [2, 8, 1, 5, 0, 6, 1, 3],
[0, 1, -4, 3, 2, 1, 2 , 8], [-4, 2, 0, 6, 4, -2, 3, -1],
[-7, 1, 2, 3, 1, 3, 0, 0]])
print A.rref()
![]()
[ 1 0 0 0 0 -17/13 1367/676 911/676]
[ 0 1 0 0 0 34/13 -3839/676 -3811/676]
[ 0 0 1 0 0 -15/13 599/676 -981/676]
[ 0 0 0 1 0 -29/13 5611/676 6335/676]
[ 0 0 0 0 1 3/13 -4623/676 -6855/676]
이므로 따라서 dim Col(
)는 (1) 이고 차원정리에 의해 nullity(
)는 (2) 이다. 따라서 (1)
(2) 는 다음과 같다.
sage
B=A.rref()
print A.rref()
print B.rank() + B.right_nullity()
(1) = 5, (2) = 3 이다.
|
답 : |
5+3 = 8 |
10. 다음 주어진 이차형식을
로 표현할 때, 대칭행렬
의
의 성분
은 얼마인지 아래에 기입하시오.
![]()
풀이

|
답 : |
-4 |
11. 다음은 행렬
를 대각화시키는 행렬
와 그에 대응하는 대각선행렬
를 구하는 과정이다. 아래 Sage 코드 부분의 밑줄 친 곳에 들어갈 명령어를 정확하게 기입하여라.

풀이. Sage를 이용하여 행렬
의 고유값과 고유벡터를 구하면 다음과 같다.
A=matrix([[4, -1, 0, -1], [-6, -3, 6, -1], [0, -2, 4, -2], [6, 5, -6, 3]])
print A.eigenvectors_right()
![]()
[(2, [(1, 1, 2, 1)], 1), (-2, [(0, 1, 0, -1)], 1),
(4, [(1, 0, 1, 0), (0, 1, 1, -1)], 2)]
행렬
의 각각의 고유값에 대한 대수적 중복도와 기하적 중복도가 같으므로 대각화가 가능한 행렬이다. 행렬
를 대각화시키는 행렬
를 구하면 다음과 같다.
x1 = vector([1, 1, 2, 1])
x2 = vector([0, 1, 0, -1])
x3 = vector([1, 0, 1, 0])
x4 = vector([0, 1, 1, -1])
P = column_matrix([x1, x2, x3, x4])
print P
![]()
[ 1 0 1 0]
[ 1 1 0 1]
[ 2 0 1 1]
[ 1 -1 0 –1]
sage
C = column_matrix([x1, x2, x3, x4])
P = column_matrix([C.column(i) / C.column(i).norm() for i in range(0, 4)])
print("P =")
print(P)
print()
print(P.transpose()*A*P)
그리고 이에 대응하는 대각행렬
는 다음과 같다.
print P.inverse()*A*P
![]()
[ 2 0 0 0]
[ 0 -2 0 0]
[ 0 0 4 0]
[ 0 0 0 4]
|
답 : |
P.inverse()*A*P |
12.
대칭행렬
,
상의 두 벡터
에 대하여
![]()
는
상의 새로운 내적이 된다.
,
에 대하여 내적
을 구하여라.
|
답 : |
4 |
http://matrix.skku.ac.kr/cal-lab/sage-grapher.html , http://matrix.skku.ac.kr/cal-lab/sage-grapher-para.html
Part 5. State or Define.
1. Choose 4 terminology or concept and state its meaning as much as you knows in your words.
① Newton’s Method ② Fundamental Theorem of Calculus ③ Definite Integral ④ Indefinite integral ⑤ Improper Integral (이상적분) ⑥ Integration by parts ⑦ Volume of a solid of revolution ⑧ The Arc Length Formula ⑨ Comparison Theorem for integral ⑩ Volume of a solid
that lies between
and
⑪ The method of cylindrical shells
① Newton’s Method
연속함수에서 최적화 문제를 푸는 계산방법으로 초기 근사해로부터 시작하여 특정한 반복단계를 거쳐 이전보다 나은 근사해들을 생성하는데 그래프를 그려본 다음 x축에 만나는 근을 소숫점 이하 몇 번 째자리까지든 원하는 대로 정확하게 구할 수 있다. 첫 번째 근사값(a1)을 지정한후 그 근사값에 접선의 방정식을 구하고 그 접선의 방정식이 x축과 만나는 점을 두 번째 근사값(a2)이라 하고 이와 같은 과정을 원하는 만큼 반복하면 an-a(n-1)의 값이 0으로 점점 수렴한다. 이런 방식으로 자신이 원하는 근사치를 얻는 방법이 뉴턴 방법이라 한다.
실숫값 함수의 근사값을 그래프와 도함수를 이용해 쉽게 구하는 방법이다. 구하는 방법은 다음과 같다.
1) 실제 구하려는 근이
이라 할 때,
에 적당히 가까운 값인
을 가정한다.
2)
으로
를 구한다.
3)
을 여러 번 반복하여
에 매우 가까운
을 구한다. 그것이 우리가 구하는 근사값이다.
④ Indefinite integral(부정적분)
어떤 구간에서 정의된 함수
에 대하여 이 구간의 모든
에 대해
를 만족하는 함수
가 존재할 때,
를
의 원시함수 또는 부정적분(indefinite integral)이라고 한다.
가 주어졌을 때 그 부정적분
를 구하는 것을
를 적분한다고 한다.
부정적분의 식을 간단히 하면 다음과 같다.
![]()
⑧ The Arc Length Formula
가
에서 연속인 함수일 때,
와
사이의
가 그린 곡선(혹은 직선)의 길이
은 다음과 같다.
![]()
⑨ Comparison Theorem for integral
변수
에 대한 함수
가 있다고 하자.
일 때 항상
을 만족하고
와
가 연속이라면, 아래의 항목은 참이 된다.
(1) 만약
가 수렴하면,
또한 수렴한다.
(2) 만약
가 발산하면,
또한 발산한다.
③ Definite Integral
어떤 구간에서 정의된 함수 f(x)에 대해 그 구간의 모든 x에 대해 F’(x)=f(x)를 만족하는 함수 F(x)가 존재할 때 F(x)를 f(x)의 부정적분이라 한다.
④ Indefinite integral
위 부정적분에서 특정한 구간을 지정해 적분하는 것을 정적분이라 한다.
⑥ Integration by parts
두 함수의 곱을 적분하는 방법이다. 두 함수(a(x), b(x))의 도함수가 연속 함수라면
가 성립한다.
Part 6. Find or Explain or Fill the blanks.
1.Use differential to approximate
.
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
-------------------------------
f(x) = x^(1/2)
x = 81
delta_x = -2
differ_f(x) = (1/2) * x^(-1/2)
delta_y = differ_f(81) * delta_x
delta_y + f(81)
---------------------------
80/9
-----------------------------
근사치를 구하는 문제임으로
를 설정했다. 엡실론과 델타의 개념을 이용하여 값을 구해보니
=8.888194417315589... 라는 값을 가지고 근사치로 나온 80/9의 값은 8.88888888888888.... 라는 값을 구했다.
New 1 Use differential to approximate
.
var('x')
f(x) = x^(1/3)
x = 27
delta_x = -2
differ_f(x) = (1/3) * x^(-2/3)
delta_y = differ_f(27) * delta_x
answer = delta_y + f(27)
print("answer is ", answer)
정답: answer is 79/27
설명:
는 무리수이므로 정확한 값을 구하는 것은 불가능하지만,
3개를 이용해 근사값을 구하는 것은 가능하다. 위의 코드가 그 방법이다.
1.Use differential to approximate
.
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
var('x')
f(x) = x^(1/2)
x = 49
delta_x = -2
differ_f(x) = (1/2) * x^(-1/2)
delta_y = differ_f(49) * delta_x
answer = delta_y + f(49)
print("answer is ", answer)
답은 48/7
2. (Sage) Sketch the region enclosed by
and find its area
① 주어진 문제의 숫자를 바꾸고 행렬의 크기를 늘려서 새로운 문제를 만든다.
② 수학 사이버랩 http://mathlab.knou.ac.kr 의 선형대수 실습실에 제시된 Sage 명령어또는 http://matrix.skku.ac.kr/2014-knou-la/cu04/ch00/le01/index.htm 의 명령어를 이용하여 해당 문제의 빈칸에 실습한 Sage 명령어와 결과를 복사하여 붙여 넣는다.
③ 자신이 풀이한 방법을 자신의 말로 설명하시오. (크롬 브라우저 이용)
|
f(x)=x-1 g(x)=5-x^2 show(plot(f(x), x, 0, 2) + plot(g(x), x, 0, 2)) print integral( g(x)-f(x), x, 0, 2 ) |
Answer : 22/3
var('x')
f(x)= x - 1
g(x)= 5 - x^2
show(plot(f(x), x, -1, 3) + plot(g(x), x, -1, 3))
print( integral(g(x)-f(x), x, 0, 2))
|
f(x)=ln(x) g(x)=exp(-x^2) show(plot(f(x), x, 0, 2) + plot(g(x), x, 0, 2)) print integral( g(x)-f(x), x, 0, 1 ) |
Answer : 1/2*sqrt(pi)*erf(1) + 1 ■

New 2. (Sage) Sketch the region enclosed by
and find its area
|
var('x') f(x)= x + 3 g(x)= 3 + 4*x - x^2 show(plot(f(x), x, -1, 4) + plot(g(x), x, -1, 4)) print( integral(g(x)-f(x), x, 0, 3)) |
Answer : 9/2 ■
3. Verify the formula
by Sage .
Proof)
![]()
=
=
= ![]()
Verify the above formula by Sage
|
var('x, a'); f(x) = sqrt(a^2 - x^2) print(integral(f(x), x)) |
=> RHS= LHS ■
4. Calculate the volume of the solid obtained by rotating the region bounded by curve
about the
-axis.
![]()
(Sage)


Answer: 128/7*pi
4. Calculate the volume of the solid obtained by rotating the region bounded by curve
about the
-axis.(식변경,수치변경)
![]()
(Sage)


■1/4*pi^(3/2)*sqrt(2)
5. A 8 ft chain weighs 24 lb and hangs from a ceiling. Find the work done in lifting the lower end of the chain to the ceiling so that it is levelled with the upper end.

So the work done raising the chain is
(in ft·lb) ■
5. A 8 ft chain weighs 24 lb and hangs from a ceiling. Find the work done in lifting the lower end of the chain to the ceiling so that it is levelled with the upper end.

So the work done raising the chain is
(in ft·lb) ■ )
6. Calculate the total area of A part and B part marked in the graph below. Here
and
.
(Sage)

answer : e^2 - 3.22424574744
7. (Exs 7-2-5) Write how you are going to show a formula
.
(Either by hand or Sage)
Sage를 이용하여 공식을 증명하려는 경우는 어떤 과정을 거치는지와 명령어만 서술하면 됩니다.)

■
![]()
Let
, then we have ![]()
Therefore, ![]()
![]()
Ans: 1/15*(15*cos(x)^4 - 10*cos(x)^2 + 3)/cos(x)^5
Check
Ans: 이 문제는 어떻게 변형해서 풀어야할지 모르겠습니다... 직접 손으로라도 증명할 식이 주어져야하는데 이 식을 그대로 손으로 증명한다는 것은 이미 기재되어있는 식을 그대로 베껴내는 무의미한 행위인 것 같습니다.
8. Find the length of the curve
from
to
.
Since
implies
,![]()
|
var('y') f(y) = sqrt(1+4*y^2) print integral(f, y, 0, 1) |
Ans: 1/2*sqrt(5) + 1/4*arcsinh(2)
![]()
Part 7. Prove or Explain .
1. Show
using
method.
∀
> 0 [ Find
] Let
If
,
then
=
=
=
.
즉,
이므로
의 값이 존재한다. 따라서
이다.
[Side calculation]
![]()
. ■
[Side Calculation]
![]()
■
2. Show
.
▸▹ Proof
: ![]()
|
var('x') f(x) = sech(x) print (diff(f(x), x)) |
3. Find
(You may use Sage in part, but I recommend you to solve it by hand.)
▸▹ Sol : Let
, than ![]()
Then, ![]()
|
var('x') f(x) = x*(e^(-x^2)) print (integral(f(x), x, -oo, -1)) |
■

4. Verify
by Sage .
Proof)
=> ![]()
![]()
![]()
![]()
Verify the above formula by Sage
|
integral((1/(x^3 + 1)), x)
|
1/3*sqrt(3)*arctan(1/3*(2*x - 1)*sqrt(3)) + 1/3*log(x + 1) - 1/6*log(x^2 - x + 1)
=> RHS= LHS ■
2. 이중적분
를 구하여라.
(여기서 영역
는 네점
을 꼭지점으로 갖는 정사각형의 내부이다.)
(풀이)
변수 변환을 이용, ![]()
그러면
이므로
![]()
![]()
![]()
![]()
![]()
■
Verify the above formula by Sage
var('x, y')
var('u, v')
T = ((1/2) * u + (1/2) * v, (1/2)*u - (1/2)*v)
J = jacobian(T, (u, v)).det()
f(x, y) = ((x+y)*e^(x^2))/e^(y^2)
integral(integral(f(T[0], T[1])*abs(J), u, 1, 3), v, -1, 1)
Answer: -1/2*(e^3 - e)*e^(-4) + 1/2*e^3 - 1/2*e ■


3. 다음을 구하여라.
![]()
(풀이)
![]()
■
Verify the above formula by Sage
var('x, t')
h = t*exp(-t^2)
integral(integral(h, t, 0, 2), x, pi/4, 7*pi/4)
-3/4*pi*(e^(-4) - 1) ■


4. 다음의 삼중적분을 구하여라.
, 여기서
는 밑면을
, 꼭지점을
로 가지는 원뿔의 내부이다.
(풀이)
여기서 ![]()
![]()
![]()
■
Verify the above formula by Sage
|
var('r, a, z') f = r^2 * (cos(a))^2 * r integral(integral(integral(f, z, 0, 1-r), r, 0, 1), a, 0, 2*pi)
|
Answer: 1/20*pi ■
Part 8 (통계)
1. 500개의 백열전구로부터 11개의 백열전구를 택하는 방법의 개수는?
[Sage code] [이항계수를 구하는 코드]
print(binomial(500, 11))
답. 10949744410266058033000
1. 100개의 백열전구로부터 12개의 백열전구를 택하는 방법의 개수는?
[Sage code] [이항계수를 구하는 코드]
print(binomial(100, 12))
답. 1050421051106700 ■
2. 주사위 1개를 던져서 홀수가 나타날 확률을 구하시오.
풀이. 주사위 1개를 던지는 시행에서 일어나는 전체 사건은 1, 2, 3, 4, 5, 6이고, 홀수가 나타나는 사건은 1, 3, 5 이므로, 구하고자 하는 확률은 다음과 같다.
[Sage code] http://mathlab.knou.ac.kr:8080/ http://sage.skku.edu/
S = Set([1, 2, 3, 4, 5, 6]) # 표본공간
A = Set([1, 3, 5]) # 짝수 사건
P_A = A.cardinality()/S.cardinality() # 짝수가 나타날 확률
P_A
1/2
3. 1000개의 제품 중에 불량품이 5개 있다. 이 제품 중에서 10개의 제품을 구입했을 때 다음 확률은?
(i) 구입제품 중 불량품이 한 개도 없는 경우
(ii) 구입제품 중 불량품이 적어도 한 개 이상 있는 경우
풀이.
(i) (1000개 중 정상제품인 995개 중 10개를 뽑는 경우의 수) x (불량품 5개 중 하나도 뽑지 않는 경우의 수) / (1000개의 제품 중 10개를 뽑는 경우의 수)
(ii) 1 - ((i)에서 구한 확률)
[R code] http://mathlab.knou.ac.kr:8080/ http://mathlab.knou.ac.kr/r/ http://sage.skku.edu/
# 모두 불량품이 아닐 확률
print(choose(997,10)* choose(3,0)/ choose(1000,10))
# 적어도 불량품이 1개 이상 있을 확률
1 - choose(997,10)* choose(3,0)/ choose(1000,10)
답:
[1] 0.9508937
[1] 0.0491063
# 모두 불량품이 아닐 확률
print(choose(995,10)* choose(5,0)/ choose(1000,10))
# 적어도 불량품이 1개 이상 있을 확률
1 - choose(995,10)* choose(5,0)/ choose(1000,10)
[1] 0.9508937
[1] 0.0491063
4. 우리는 Part 3에서 인공지능을 이해하기 위하여 필수적인 <기초 통계 및 확률>을 학습하였다. 통계적 방법은 인공 지능을 구현하는 구체적 접근 방식인 머신러닝 예측 모델링에서 매우 중요한 역할을 한다. 다음은 머신러닝 프로젝트를 수행할 때 따르는 통계적 방법의 적용 절차 를 잘 보여준다.
[출처] https://machinelearningmastery.com/statistics_for_machine_learning/
① 문제 구성 : 탐색적 데이터 분석 및 데이터 마이닝이 요구됨
② 데이터 이해 : 요약 통계 및 데이터 시각화가 필요함
③ 데이터 정리 : 이상치(outlier)를 탐지하고 결측값을 대치해야 함.
④ 데이터 선택 : 데이터 샘플링 및 특징선택(feature selection) 방법을 사용해야 함.
⑤ 데이터 준비 : 데이터를 변환하고, 스케일링, 인코딩 등을 사용해야 함.
⑥ 모델 평가 : 실험 설계 및 리샘플링 방법이 필요함.
⑦ 모델 구성 : 통계적 가설 검정 및 추정 통계를 사용해야 함.
⑧ 모델 선택 : 통계적 가설 검정 및 추정 통계를 사용해야 함.
⑨ 모델 제시 : 신뢰 구간과 같은 추정 통계를 사용해야 함.
⑩ 모형 예측 : 예측 구간과 같은 추정 통계를 사용해야 함.
여기서 포아송 분포 P(2) 를 따르는 모집단에서 표본 100개를 추출한다는 것의 의미가 무엇인가요?
-> 이는 ④데이터 선택에 해당하는 작업이다. 100회는 충분히 많은 횟수이므로 분포로서 충분한 횟수이다.
을 한없이 크게 할 때(상대적으로
는 한없이 작아짐) 이 확률분포는 포아송 분포가 된다.
데이터 선택에 과정이다. 포아송 분포는 단위 시간 안에 어떤 사건이 발생하는 횟수를 확률변수 X로 나타내는 확률분포인데 P(2)의 의미는 단위 시간에 평균적으로 2번 발생한다고 가정하는 것이다. 2라는 숫자는 람다의 값인데 람다=np의 값이 일정하다는 의미 인데 n이 커질수록 p는 작아지게 되는 것이다. 표본 100개를 추출했다는 것은 p가 의미있는 수준으로 작아지는 것이다.
5. 대수의 법칙(Law of large number)에 대해 아는대로 서술하시오.
시행 횟수를
, 특정 사건
가 일어날 횟수를
라 하면,
이 한없이 커질 때 통계적 확률 P(A) 는 일정한 값 a, 즉 (수학적 확률) a 에 가까워진다. 즉 다음이 성립한다.
![]()
6. 베이즈 정리(Bayes’ theorem) 에 대해 아는대로 서술하시오.
대수의 법칙은 특정 사건에 대한 수학적 확률이 있을 때 시행 횟수를 한없이 커지게 한다면 그때의 통계적 확률이 수학적 확률에 한없이 가까워 진다는 것이다. 카지노와 보험회사에서 이를 이용하고 있다. 베이즈 정리는 불확실성 하에서 의사결정 문제를 수학적으로 다룰 때 중요하게 이용된다. 특히, 정보와 같이 눈에 보이지 않는 무형자산이 지닌 가치를 계산할 때 유용하게 사용된다. {A1, A2, ... , An}이 표본공간 S의 분할을 이룰 때, 임의의 사건 B에 대해 다음이 성립한다.
B = B ∩ S = (A1 ⋃ A2 ⋃ ... ⋃ An) ∩ B
따라서 임의의 숫자 I에 대해 다음이 성립한다.
P(Ai | B) = P(Ai ∩ B) / P(B)
= P(Ai ∩ B) / ( P(A1)P(B|A1) + ... + P(An)P(B|An) )
베이즈 정리는 불확실성 하에 의사결정 문제를 수학적으로 다룰 때 사용된다. 사전확률과 사후확률의 관계를 조건부 확률을 이용해 계산하는 이론인데 여기서 핵심이 되는 건 표본공간이 분할을 이뤄야 된다는 것이다. {A1,A2,....,An}이 표본공간 S의 분할을 이룰 때 Ai(i=1,2,....n) 끼리 서로 배반이기 때문에 임의의 사건 B에 대해서 Ai
B(i=1,2,....n)도 서로 배반이다 그래서 P(B)=P(A1
B)+P(A2
B)+....+P(An
B) 이다. 따라서 임의의 숫자 (i=1,2,....n)에 대해 P(Ai | B) = P(Ai ∩ B) / P(B)= P(Ai ∩ B) / ( P(A1)P(B|A1) + ... + P(An)P(B|An) ) 가 성립한다.
7. 중심극한정리(Central Limit Theorem) 에 대해 아는대로 서술하시오.
중심극한정리는 통계학 역사상 가장 중요한 발견이라고 한다. 프랑스 수학자 라플라스(Laplace)는 1774년에서 1786년 사이 몇 개의 논문에서 이러한 정리의 발견과 증명을 시도하였다. 여러 통계분석기법에서 분석모형이 정규분포를 따른다는 가정을 하는 경우가 많다. 그 근거가 바로 중심극한정리이다. 이 정리는 확률, 통계 이론뿐만 아니라 실용적인 면에서도 의미가 크며, 품질관리에서도 많이 이용된다.
중심극한정리(Central Limit Theorem, CLT)란 동일한 확률분포를 가진 독립 확률변수 n개의 평균의 분포는 이 적당히 크다면 정규분포에 가까워진다는 이론이다. 즉, 평균이
이고 분산이
인 모집단에서, 추출한 크기 n이 증가할수록 모집단의 분포유형에 관계없이 근사적으로 정규분포
을 따른다는 것이다.
중심극한정리는 동일한 확률분포를 가진 독립 확률변수 n개의 평균의 분포는 n이 적당히 크다면 정규분포에 가까워 진다는 이론이다. 각각 모집단의 표본 평균들이 이루는 분포가 표본의 크기가 커질수록 정규분포로 가까워진다는 점이 중요한 것이다.
8. 데이터 사이언티스트가 되는 험난한 첫 관문을 통과한 주니어 데이터사이언티스트가 맨 처음 익혀야 할 가장 중요한 기예 중 하나는 데이터분석도 코딩도 아닌 git 사용법입니다. Git 에 대하여 아는대로 서술하시오.
깃은 프로젝트를 변경, 수정할 때 다른 유저와 겹치지 않게 프로젝트의 변경을 관리하는 버전관리 소프트웨어이다. Git은 Linux를 창시한 사람이 만든 것으로 개발자들의 공동 작업 공간이 필요했었음
그래서 기준이 되는 Master 공간, 개인 또는 공동으로 작업하는 Branch공간으로 나눠, 작업을 완료할 시에 Pull request를 함으로써 다른 작업자들에게 리뷰를 받는 형식
Git init(root) - head
Git add —> git commit 하는 순간 head가 바뀜
Conflict(commit하는 과정에서 library의 사용이 중복)
Prod —> production branch
Git diff —> ~사이에 작업들 변경사항을 보여줌
Git add —> local에서 stage로 올림
Git commit -v (verbose)
Remote(not local) push
PR : 나 push하려고 하니 최신 branch를 pull받으라고 얘기하는게 pull request
Rebase: 이전 commit을 기억하는 것
Git rebase master
Git log: 로그가 기록되어있음
Git reflow: 여태까지 했던 장난질 다 볼 수 있음
branch 바꾸기: git chekdout -b “branchname”
반영 사항이 있을 때, 버리고 싶다 할 때, Reset: head~1 —> 지워짐
Reset hard / soft —>
Git branch -d ~~ : deleted branch
Part 9. 다음에 답하여라.
1. 인공지능을 위한 기초수학 강의 Part 1, 2, 3 를 통하여 배우고 깨우친 수학적 내용 중 특히 기억나는 내용을 서술하시오.
제가 기억에 남는 내용은 SVD와 QR분해가 가장 기억에 남습니다. 처음에 보고 어렵게 느껴지고 앞서 처음 배웠던 내용들이 기초가 되어 이해하고 있어야지만 사용할수 있어서 처음엔 코딩으로 어떤 원린줄도 모르고 했었지만 몇 번 반복해서 보다보니 이해가 된거같습니다.
수학과 통계 – 그리고 빅데이터 분석, 데이터 사이언스 더 나아가 인공지능이 상당히 밀접한 연관이 있다는 것을 학습 흐름으로써 알게 되었습니다. 특히 기억나는 내용이라고 하면 역시 RREF를 손꼽을 수 있다. 기본행연산을 이용해 행렬을 간소화하는 개념이다. 이 개념을 익히는데 다른 개념들보다도 배로 시간을 많이 들였다. 그래도 그 덕분에 선형대수학의 개념들 중 행렬과 관련된 개념들을 익히는 데 큰 도움이 되었다. 실제로 이번 학기에 공부하고 있는 선형대수학에서도 매우 큰 도움이 되었다.
2. Q&A 참여와 PBL 과제를 완성하는 과정에서 배우거나 느낀 점은 무엇인가요?
Q&A에 참여하면서 제가 알지 못했던 것을 다른 사람들에게 물어보는 활동은 물론, 다른 사람들의 질문을 보면 미처 몰랐던 개념들을 알고 교수님께서 여신 토론에 참여하면서 개념에 대해 명확히 알 수 있는 기회가 되었습니다. 그리고 제가 푼 문제들을 공유하고, 다른 사람들의 풀이를 이해하며, 여러 문제에 대한 답과 그걸 구하는 과정을 알아갈 수 있었습니다. Q&A 참여를 통해, 모르는 지식은 물론 알고 있던 개념까지 명확히 하고 학우들과 같이 더불어 공부할 수 있었습니다.
또한 PBL 레포트를 쓰며, 지금까지 매달 ‘인공지능을 위한 기초수학’을 학습하며 배웠던 개념들을 총정리하는 기회를 가지게 되었습니다. 개념 정리부터 문제 해결, 그리고 스스로를 돌아볼 수 있는 기회를 가질 수 있었습니다. 이 활동을 통해 여러 과목에서 채택하는 시험이 아닌, 레포트 형식의 과제가 개념을 익히는데 큰 도움이 된다는 것을 깨달았습니다. 확실히 단순 코딩보다 Sage가 수학적 정의나 공식의 이해에 더 적합하다고 느꼈습니다. 학기가 거의 끝나가는 와중에 회사를 다니고 있어 활발한 참여가 힘들었는데, 현재 상황만 아니었으면 조금 더 인공지능을 위한 수학에 대해 깊은 이해를 할 수 있었지 않았나 하는 아쉬움이 있습니다.
6월 PBL
Part4
(1) State more than 10 Math Definitions and concepts what you learned in Part 1, 2, 3, 4.
1. 특정 변수들의 영향이 어떤지 분석하기 위해 변수들을 벡터로 표현했을 때 벡터의 차원이 크게 되면 시각적으로나 계산적으로나 분석하기 힘들기 때문에 차원축소를 해야 하는데 이 차원축소기법중 가장 많이 사용 되는 방법이 PCA임을 알았다.
2. PCA의 계산은 특이값분해를 사용하는 것이 중요함을 알았다.
3. 센터링을 하는 이유는 열의 평균이 0 임으로 E(X)값이 0 이 되는 걸 이용해서 식의 단순화를 시킬 수 있기 때문임을 알았다.
4. 라그랑주 승수법에 대해서 배웠다.
5. PCA를 실습하는 데 있어 기존 데이터를 센터링 시킨 후 R의 prcomp명령어를 사용하면 그 값을 쉽게 구할 수 있음을 배웠다.
6. 신경망이 사람의 뉴런의 프로세스를 모티브로 만들었고 뉴런의 성질중 임계값을 기준으로 출력의 유무를 결정하는데 주로사용되는 함수가 sigmoid임을 배웠다.
7. sigmoid 함수의 도함수는 f(x)(1-f(x))라는 성질을 가지고 있기 때문에 그 자체 만으로 큰 강점이 있음을 배웠다.
8. 신경망에서 은닉층이 여러 개 있을 때 그 신경망을 학습하기 위한 기계학습 기법이 평소에 많이 듣던 딥러닝임을 알았다.
9. 신경망 시스템에서 사용하는 key는 오차를 이용해 가중치를 조정하는 방법이고 이 방식이 경사하강법 문제와 같음을 알았다.
10. 규칙과 데이터를 알고 있을 땐 프로그래밍을 하면 정답이 나오고 정답과 데이터를 머신러닝을 하면 규칙을 구할 수 있음을 알았고 정답을 구하는 것도 중요하지만 일반적으로 수많은 데이터가 있는 현 상황에서 규칙을 아는 것이 앞으로 더 중요하다는 것을 알았다.
(2) State more than 5 things that you know/can/find ... after you studied the first Part 4.
1. PCA가 왜 사용되야 하는 지를 알았고 차원 축소를 할 때 데이터 보존이 얼마나 되나가 중요함을 알았다.
2. k-mean clustering에 대해서 찾아보고 알게 되었다.
3. 앞서 배웠던 선형대수학과 통계학이 데이터분석의 기본이(PCA) 되는 키 임을 알게되었다.
4. 데이터와 R 언어 코딩을 통해 PCA를 구할 수 있다.
5. 딥러닝의 기본 프로세스를 알게 되었고 규칙을 구하는 방식에서 경사하강법이 사용됨을 알게 되었고 할 수 있다.
Ch 3장. [Team Project 제안서 (TBA)] - 중간고사의 10점 부분 (10점)
Team Project Proposal (2~3 페이지)
인공지능을 위한 기초수학Basic Math for AI
Prof : Sang-Gu LEE
Tentative 임시팀장 ; 1팀장 신재열 2팀장 황인성 3팀장 김도현 4팀장 조완제 5팀장 홍태규 6팀장: 민재필/김예훈
Name / e-mail : 김예훈 kimyehoon7262@gmail.com
(Tentative) 본인이름/팀장/Team Members: 김예훈
( 6 )팀, 팀장/팀원: 김예훈(팀원이 정해지지 않은 상태임)
(Find your Team member (3~5) 팀장이 팀원 신청 받아서 그중에서 선정하여 임시 팀원 구성하세요^^ 중간고사 후 확정 예정.
* Team will be Fixed in Midterm period, after I grade your PBL and Project proposal.)

Team Project 제목 : 방수포(수포자양산을 방지하자)
Project 동기/목적: 수포자를 막기 위함
팀장/팀원/역할분담/팀원평가 :
팀장/팀원: 황인성
Team Project 제목: 방수포(수포자양산을 방지하자)
1. Introduction
수포자양산을 방지하고자 만든 프로젝트입니다.
Math & Coding을 활용해, 현재 고등학생들 중 수학을 포기하려는 사람들이 많아 그런 학생들을 돕기 위해 진행하고자 했습니다. 특히 인공지능 개발과 관련된 개념들을 쉽게 가르칠 자료들을 모아왔습니다.
2. 본론
Math & Coding 을 활용하였습니다.
Math4AI 인공지능 수학 목록
http://matrix.skku.ac.kr/math4ai-tools/
1. 인공지능 개발 시 알아야 할 개념들
○ 행렬 분해(Matrix decomposition)
http://matrix.skku.ac.kr/2018-album/LU-decom.html
http://matrix.skku.ac.kr/2018-album/LS-QR-decom.html
http://matrix.skku.ac.kr/2018-album/SVD.html
○ 최소제곱문제(least squares problem) : 최소제곱해, 선형회귀, 최소제곱직선
http://matrix.skku.ac.kr/2020-math4AI/LSS/
○ 경사하강법(Gradient Descent Algorithm)
http://matrix.skku.ac.kr/math4ai/gradient_descent/
○ 주성분 분석(Principal Component Analysis)
http://matrix.skku.ac.kr/math4ai/PCA/
2. Math & Coding 을 활용하여 . 개발 중 ( 중, 고등학교 수준)
http://www.polymath.co.kr/contents/list/020201
[폴리매스 인터뷰] (Math & Coding)
http://www.polymath.co.kr/contents/view/740?page=1
[폴리매스 Mathematics for AI] http://www.polymath.co.kr/contents/view/18134
Intro. 인공지능이란? http://www.polymath.co.kr/contents/view/18109?page=1
Mathematics for AI #1 행렬로 딥러닝 따라잡기
http://www.polymath.co.kr/contents/view/18142
코딩으로 '네트워크' 정복하기
http://www.polymath.co.kr/contents/view/5625?page=1
코딩으로 '수열' 정복하기 http://www.polymath.co.kr/contents/view/3154?page=1
코딩으로 '소수' 정복하기 http://www.polymath.co.kr/contents/view/1935?page=1
코딩으로 '함수와 그래프' 정복하기
http://www.polymath.co.kr/contents/view/1383?page=1
코딩으로 '순열과 조합' 정복하기
http://www.polymath.co.kr/contents/view/1330?page=1
코딩으로 '미분방정식' 정복하기
http://www.polymath.co.kr/contents/view/1186?page=1
코딩으로 '확률' 정복하기 http://www.polymath.co.kr/contents/view/1142?page=1
코딩으로 '그래프 이론' 정복하기
http://www.polymath.co.kr/contents/view/1076?page=1
코딩으로 '통계' 정복하기 http://www.polymath.co.kr/contents/view/1001?page=1
코딩으로 '연립방정식' 정복하기
http://www.polymath.co.kr/contents/view/872?page=1
코딩으로 '적분' 정복하기 http://www.polymath.co.kr/contents/view/763?page=1
3. 결론
수포자들이라고 할지라도 기초 개념을 가지고 있을 것이며, 그렇다는 가정 하에서 위의 Math & Coding을 통한 학습은 충분히 빛을 발할 것이라고 생각함. 나아가 인공지능에 대한 이해도가 높아지고 관련 분야에서 일하게 될 경우 Math & Coding을 통해 학습한 개념들과 응용법을 바탕으로 수많은 일들을 해낼 수 있을 것으로 기대함.
4. 참고문헌
Math4AI 인공지능 수학 목록
http://matrix.skku.ac.kr/math4ai-tools/
http://matrix.skku.ac.kr/SKKU-Calculus/
http://matrix.skku.ac.kr/SKKU-DM/
http://matrix.skku.ac.kr/SKKU-LA/
http://matrix.skku.ac.kr/SKKU-EM-2020/
http://matrix.skku.ac.kr/2020-MH/
http://matrix.skku.ac.kr/math4ai/
http://matrix.skku.ac.kr/2019-album/
http://matrix.skku.ac.kr/2019-Album/DM-PBL/index.htm
http://matrix.skku.ac.kr/2019-Album/MH-PBL/index.htm
http://matrix.skku.ac.kr/2018-album/Math-Coding.htm
5. Final comment
교수님 덕분에 이 프로젝트의 방향을 잡아 나아갈 수 있었습니다. 이 자료들을 통해 수포자들을 다시 한 번 일으킬 수 있으리라 생각합니다. 또한 참고문헌에는 만에 하나 수포자들이 이 자료로도 부족할 수 있음을 대비해 더 많은 자료가 쌓여져 있는 만큼 큰 도움이 되었습니다. 처음에는 수포자들을 위해 자료를 조사했지만 자료를 조사하면 조사할수록 오히려 제가 더 많은 도움을 받았습니다. 너무나도 유익한 자료들이었습니다.
비록 다른 팀원과 같이 활동하지는 못 했지만 그래도 유익한 프로젝트 활동이였으며 이 활동을 통해 얻은 자료들 역시 제 미래에 큰 도움이 될 것이라고 생각합니다. 정말 감사했습니다!
■ Team Project 제목 (Tentative, just idea now)
추천강의 알리미 고안하기
■ 동기
매 학기 학생들은 개강 전부터 수강신청이라는 지옥을 경험하게 되며, 수강신청에 성공한 학생들은 쾌재를 부르며 즐거운 학교생활을 하나, 실패한 학생들은 자칫하면 자기가 원하지 않은 과목들을 들으며 우울한 한학기를 보내는 수가 있다. 더군다나 대학교 수업은 본인이 선택해서 듣는 수업인데 수강과목에 대한 철저한 사전조사가 이루어져야 알찬 수업을 들을 수 있다. 이러한 부담과 번거로움을 방지하고자 이 프로젝트를 생각하게 되었다.
■ 초록
학생들이 수강신청을 원활히 할 수 있는 프로그램을 만들고자 이 프로젝트를 기획하였다. 인공지능을 위한 기초수학 수업에서 배운, 수집된 데이터에 대한 선형대수학적인 분석, 대안에 대한 최적의 해 찾기, 통계이론을 통한 경향 분석으로써 학생들에게 맞춤형 강의를 제공할 수 있을 것이다.
■ 연구방법
먼저, 프로그램을 어떻게 제작할 것인지, 구체적인 방향 설정이 필요하다. 구체적인 방향 설정 후에, 모의 수강신청 상황을 구현하여 기존의 수강신청방식으로 수강신청을 할 집단과 새로 개발한 프로그램으로 수강신청을 할 집단으로 나눈다. 수강신청 후, 수강신청에 대한 만족도 조사를 실시하여 이 프로그램에 대한 효과를 검증한다.
■ 참고문헌 :
패턴인식(오일석)
Artificial Intelligence Structures and Strategies for Complex Problem Solving(George F. Luger)
인공지능을 위한 기초수학(이상구 with 이재화)
(예시) Math & Coding
인공지능과 본인전공 인공지능관련 New & Interesting 주제 GitHub, TensorFlow PyTorch 기타 자유주제
Name / e-mail (이름과 이-메일): 안주현 / hhoojjkk1@naver.com
(Tentative) 본인이름/팀장/Team Members: 안주현 / 민재필/김예훈
■ Team Project 제목 딥 러닝에 대한 이해와 간단한 응용(가능하면)
■ 동기 : 처음 시작은 이세돌과 알파고의 바둑 대결이었지만, 그때 당시에는 그냥 대단하다는 생각밖에 없었다. 그런데 대결 직후, 다음으로는 전략 게임에 도전한다, 라는 발표가 나왔었다. 바둑은 결국 돌을 놓는 위치를 정하는 - 물론 경우의 수가 엄청나게 많기는 하지만 - 방식이었다. 그런데 전략 게임에서는 고려하고 정해야할 변수들이 많고, 바둑과는 다르게 게임의 모든 정보가 공개되어 있지도 않다. 그래서 이것이 정말 가능한 걸까라는 의문이 생겼고, 그렇게 대단한 기술이라면 왜 다른 분야에서는 사용되지 않고 있는 걸까라는 의문도 들어, 딥 러닝이 정확히 어떤 기술인지에 대해서 알아보고 싶어졌다.
■ 초록 : 딥 러닝을 간단히 설명하는 방법은 다음과 같다.
y=f(x) 인 x와 y가 있지만, x로부터 y를 유추해 낼 수 없을 때 대안으로 사용하는 방법이다. 수많은 x-y의 조합을 모으고 분석하며, 오차는 수정하는 방식으로 어떤 x가 주어졌을 때 그에 대한 가장 정답에 근접한 y값을 찾아내는 방식이다.
‘입력’과 ‘출력’ 사이에 정보를 전달하는 인공뉴런을 층층이 쌓아서 연결한 인공신경망을 여러 개 쌓은 방식을 딥 러닝이라고 한다. 이 인공신경망이라는 개념 자체는 과거부터 존재했지만, 당시의 컴퓨터로는 구현이 불가능했다. 허나 2000년대 후반에 들어서면서 주목을 받기 시작했고, 페이스북의 딥러닝 기반 얼굴인식 기술은 인식률 97%로 인간과 성능차이가 없을 정도가 됐으며, 구글의 알파고는 전 세계에 큰 충격을 가져왔다.
딥 러닝의 가장 큰 특징은, 데이터의 양이 많으면 많을수록 그만큼 성능이 뛰어나진다는 것이다. 이는 딥 러닝이 결국 스스로 학습하는 것은 아니며, 많은 데이터의 ‘입력’ 값과 ‘출력’ 값을 받아들이고 그를 통해 새로운 ‘입력’값이 들어왔을 때 그와 가장 유사한 데이터를 찾아내어 ‘출력’ 값을 출력하는 것이기 때문이다.
■ 연구방법 : 요즘 시대에 빅 데이터는 굉장히 발달되어 있다. 당장 최근의 코로나 사태에 대한 빅 데이터만 해도 정부에서 직접 공개하고 사용 가능하게 하는 사이트가 존재하며, 이와 같은 빅 데이터를 이용해 딥 러닝 기술을 활용해 보고자 한다. 물론 실제로 딥 러닝을 사용하는 것도 좋겠지만, 그를 위한 프로그래밍 능력이 충분하진 않기 때문에, 딥 러닝에 관련된 오픈소스 코드를 먼저 분석하면서 그에 대해 공부하고, 가능하다면 이를 활용해 간단한 딥 러닝 기반 기술을 활용하는 것이 목표이다.
■ 딥러닝(Deep Learning)을 위한 통합 라이브러리, Deepo
■ 동기 : 딥러닝 라이브러리(PyTorch, Tensorflow 등)와 부수적 프로그램(Jupyter, GPU 관련 프로그램 등)을 따로 설치하는 과정은 번거로울 뿐만 아니라, 새로운 버전이 나올 때마다 관리하기도 어렵다. 예를 들어 Python2에서 Python3로 갈아타려고 한다면, Python2에서 업데이트 하는 것이 아니라, Python2를 지우고 Python3를 다시 설치해야 한다. 사실상 Python2와 Python3는 별개의 라이브러리이기 때문에, 중복이 되지 않는다. 이렇게 한 컴퓨터에 다양한 라이브러리를 몰아서 설치하면, 불필요한 라이브러리가 생길 뿐만 아니라, 이전 라이브러리와 충돌할 가능성도 있다. 그래서 이러한 라이브러리를 효율적으로 관리하는 방법을 찾고자, 조사를 진행하였다. 조사의 결론은 Docker에서 Deepo를 이용하여 컴퓨터 자체에 설치하는 것이 아닌, 가상의 환경에서 딥러닝 라이브러리를 사용하는 방법이다.
■ 초록

1. Docker란?
Docker는 운영체제 자체를 리소스로 이용하여, 프로그램을 컨테이너(Container)라는 가상의 환경에서 구동시켜주도록 하는 프로그램이다. Docker를 사용하는 이유는 다양하나, 다음과 같이 정리 할 수 있다. 첫 번째, 프로그램이 컴퓨터에 흔적을 남기지 못 하도록 한다. Docker는 컨테이너라는 가상의 단위를 사용하여 프로그램을 구동하기 때문에, 컨테이너 내에서 실행되는 프로그램은 컴퓨터 내에 있는 데이터에 접근할 수 없다. 그리고 컨테이너만 삭제하면 프로그램 자체가 지워지므로, 컴퓨터에 직접 설치하는 것보다는 더 깔끔하다. 두 번째, 개발 환경을 다른 컴퓨터에 대해서도 동일하게 유지할 수 있다. Mac, Windows는 각각의 독립된 개발 환경을 지니고 있기 때문에, Mac에서 작동하는 코드가 Windows에서는 작동하지 않을 수도 있다. 만약 Docker를 사용한다면, 운영체제에 관계없이 동일한 개발 환경을 유지할 수 있어서, 호환성 문제를 해결할 수 있다. 이는 다양한 운영체제를 사용하고 있는 개발자들에게 있어서 중요한 것이다. 마지막 세 번째, 컨테이너로 프로그램을 관리하는 것이 수월하다. 컨테이너는 오직 하나의 프로그램을 위해 만들어진 단위이다. Docker는 컨테이너에 대한 세부적인 옵션을 지정할 수 있으므로, 특정 프로그램만을 위한 환경을 구축할 수 있다. 바로 이러한 점들이 Docker를 사용하는 이유라고 볼 수 있다.
Docker에 대하여 ‘가상’이라는 말을 많이 사용하여, 가상머신의 한 부류인 것처럼 보일 수 있으나, 사실은 그렇지 않다. 가상머신은 새로운 리소스를 가상의 환경에 설치해주어야 하지만, Docker는 리눅스 커널(Linux Kernel), 즉 컴퓨터 운영체제 자체를 리소스로 사용한다. 그래서 리눅스 사용자에 대하여, Docker는 최상의 성능을 발휘한다. 일반적으로 Windows와 Mac에서 Docker를 사용할 수 있으나, 리눅스를 기반으로 하므로, 리눅스를 가상머신으로 구동하여 Docker를 실행한다. 그렇기 때문에 리눅스를 설치한 컴퓨터에서 사용하는 것만큼이나 높은 성능을 발휘하지는 못 한다.

2. Deepo로 딥러닝 개발 환경 구축하기
Deepo는 Docker에서만 사용할 수 있도록 개발된 이미지 파일이다. 여기서 이미지 파일은 프로그램을 Docker의 컨테이너에서 구동할 수 있도록 개발된 파일이다. 이미지 파일만 설치하면, 여러 개의 컨테이너를 구동할 수 있으므로, 동일한 프로그램에 대해 다양한 개발 환경을 구축할 수 있다. 다음은 Deepo로 딥러닝 개발 환경을 구축하는 방법이다.
(1)Docker를 설치한다.
|
sudo apt-get install docker-io |
(2)Docker가 정상적으로 설치되었는지 확인한다.
|
sudo docker -v |
apt-get을 이용하면, Docker의 Repository에서 직접 받아오는 것이 아니라, Debian의 Repository를 사용하기 때문에 버전이 낮을 수도 있다. 또한, 따로 설정을 해 두지 않으면 apt-get은 latest가 아닌 stable 버전을 설치하므로, 버전이 더 낮아질 수 있다.
(3)Docker Hub로부터 Deepo이미지를 받아온다.
|
sudo docker pull ufoym/deepo |
Tensorflow만 해도 용량이 5.7GB이므로, 전체 라이브러리를 설치하는 데는 용량이 부족할 수도 있다. 그래서 자신이 원하는 라이브러리만을 선택하여 설치할 수 있다. 예를 들어, Tensorflow만 포함하고 있는 이미지를 설치하고 싶으면 다음과 같이 입력하면 된다.
|
sudo docker pull ufoym/deepo:tensorflow |
또한 Jupyter를 이용하여, GUI 환경에서 구동해보고 싶다면 다음과 같이 입력하여 설치하면 된다.
|
sudo docker pull ufoym/deepo:all-jupyter |
위에서 제시한 :[]에서 []은 태그(Tag)라고 하는데, 전체 옵션은 다음과 같다.
sudo docker pull ufoym/deepo:all-jupyter
sudo docker pull ufoym/deepo:Theano
sudo docker pull ufoym/deepo:Tensorflow
sudo docker pull ufoym/deepo:Sonnet
sudo docker pull ufoym/deepo:PyTorch
sudo docker pull ufoym/deepo:Keras
sudo docker pull ufoym/deepo:Lasagne
sudo docker pull ufoym/deepo:MXNet
sudo docker pull ufoym/deepo:CNTK
sudo docker pull ufoym/deepo:Chainer
sudo docker pull ufoym/deepo:Caffe
sudo docker pull ufoym/deepo:Torch
필요한 것만 적절히 선택하여, 설치하면, 용량을 크게 줄일 수 있다.
(4)Deepo를 위한 컨테이너를 제작한다.
|
sudo docker run –it –p 8888:8888 —name [컨테이너 이름] ufoym/deepo |
-i : interactive 모드, 명령줄을 입력할 수 있도록 함
-t : tty를 사용함, 일반 터미널을 사용하는 것과 동일하게 쓸 수 있도록 함
-p [A]:[B] : [A]에는 내부 포트를, [B]에는 할당할 외부 포트 입력하여 포트포워딩(Port Forwarding)함(Jupyter Notebook을 사용하기 위해서는 포트 할당이 필수적임, 기본적으로 Jupyter Notebook의 내부 포트는 8888이다)
--name : 컨테이너 자체의 이름을 지정함
만약 Jupyter Notebook을 구동하고자 한다면, 다음 명령어를 입력하면 된다.
|
sudo docker run –it –p 8888:8888 —name [컨테이너 이름] ufoym/deepo:all-jupyter jupyter notebook |
이렇게 실행하면 터미널 창이 Docker Container로 전환되는데, 이는 정상적으로 컨테이너가 구성되었음을 의미한다. 이제 내부에 있는 라이브러리 파일을 이용하여 작업을 수행하면 된다. 만약 컨테이너를 종료하지 않고 나가고자 한다면, Ctrl을 누르고 있는 상태에서 p와 q를 순서대로 누르면 된다.
(5)참고
*컨테이너 목록 조회
|
sudo docker ps -a |
*컨테이너 삭제
|
sudo docker container rm [컨테이너 이름] |
*컨테이너 가동 중지
|
sudo docker stop [컨테이너 이름] |
*컨테이너 가동 시작
|
sudo docker start [컨테이너 이름] |
*컨테이너 터미널로 이동
|
sudo docker attach [컨테이너 이름] |
*이미지 목록 조회
|
sudo docker image ls |
*이미지 삭제
|
sudo docker image rm [이미지 이름] |
(Docker에 Tensorflow 프로그램 컨테이너를 설치한 모습[왼쪽 아래])
(Jupyter Notebook 서버 구동 모습[왼쪽 위])
(서버 모니터링 프로그램 구동 모습(htop)[오른쪽]
■ 연구방법 : 이미 컴퓨터 운영체제가 리눅스이며, Docker를 설치하여 사용하고 있었기 때문에, 작업은 수월했다. 먼저, Github에 접속하여 Deepo가 어떤 형태로 구성되어 있는지 파악했다. 확인 결과, Docker를 위한 이미지 파일로 구성이 되어 있었다. 이 이미지 파일을 그대로 받아서 Docker에 올려도 되지만, Docker는 Docker Hub라는 저장소(Repository)를 지원하므로, 아마 거기에 올라와 있지 않을까 생각해 보았다. 그래서 Docker Hub에 들어가서 검색을 수행한 결과, Deepo가 있는 것을 확인하였고, 그 후에는 간단하게 터미널에 다음 명령어를 입력하여 설치를 진행하였다.
|
sudo docker pull ufoym/deepo:tensorflow |
처음에는 Deepo 전체를 설치하려고 했지만, 용량이 커서, Tensorflow만 설치하였다. 설치가 완료된 후, run을 이용하여 Tensorflow를 위한 컨테이너를 구축하여 컨테이너 터미널로 이동하였다. 터미널에서 Tensorflow를 구동하기 위해서는 Python이 필요하며, 컨테이너 내부에 이미 설치되어 있는 것을 확인했다. 그래서 Python을 실행한 후, import 함수를 이용하여, Tensorflow모듈을 불러들였다.

Tensorflow가 수입(import)되기는 했지만, 위의 사진처럼 몇 가지 오류가 떴다. 바로 GPU 관련 라이브러리를 찾지 못했다는 것인데, 사실 Nvidia 라이브러리를 설치하지 않았기 때문에 당연히 뜨는 오류였다. 사실상 사용하는 컴퓨터가 내장 GPU를 사용하고 있어서, 성능은 그다지 좋지 않을 것이라고 예측되기 때문에, CPU만을 사용하기로 결정했다. 이러한 설치 경험을 바탕으로 Deepo에 대한 탐구를 진행하였으며, 추후에도 Deepo를 이용하여 다른 환경도 구축해 보려 한다.
■ 참고문헌
Github : https://github.com/ufoym/deepo
Docker Hub : https://hub.docker.com/r/ufoym/deepo
Wikipedia : https://en.wikipedia.org/wiki/Docker_(software)
(예시)
Math & Coding
인공지능과 본인전공
인공지능관련 New & Interesting 주제
GitHub, TensorFlow
PyTorch
기타 자유주제
(참고자료)
NIMS에서 진행된 산업수학프로젝트
https://icim.nims.re.kr/post/result
◆ Comment after your Midterm PBL report ◆
(PBL 보고서를 마치고 ...) 2020/04/23
처음에는 Docker를 개발 환경이 아닌, 라이브러리를 많이 참조하는 프로그램을 깔끔하게 구동하기 위해서 사용하였다. 한 예로, Sagemath는 불필요한 부속 프로그램의 설치가 심하기에, Docker를 사용하여 그러한 문제를 해결하였다. 하지만 Deepo를 조사하면서, Docker를 개발 환경에도 쓸 수 있다는 것을 깨달았다. 아직까지는 기본적인 언어(C, Python)만 다룰 줄 알아서, Tensorflow나 PyTorch와 같은 딥러닝 모듈을 사용하는 환경을 다루는 데 어려움이 있다. 그래도 개발 환경은 구축했으니, 나중에라도 딥러닝 모듈을 학습하여 이를 잘 활용할 수 있을 것 같다.
2. [Project 초안] Your possible Team Project 제목, 동기, 방법론, 참고문헌 [아이디어와 Draft]
- 팀을 구성하면서 팀장 중심으로 교수님의 조언을 받아 수정/보완/확정됩니다. (본인 전공과 본 강좌를 연계하여 선택하고 좋은 최신의 참고문헌을 찾아서, 후속 문제를 생각하시면 됩니다!)
[Team Project 제안서 (TBA)] - 중간고사의 10점 부분
Team Project 초안
Basic Math for AI
Prof : Sang-Gu LEE
Due day : May 30th
Team Number and Team Leader + Members (Tentative):
1팀: 팀장/팀원 : 민재필/ 김예훈 + 신재열 , 딥러닝을 위한 통합 라이브러리, Deepo/판다스를 이용해서 과거 데이터를 분석해서 테스트
2팀: 팀장/팀원: 김승한/ 조완제, Team Project 제목 건축설계와 인공지능
3팀. 팀장/팀원: 김용훈 황인성/ 김원준, 이인창, 임형균, 진사우 Team Project 제목: 방수포(수포자양산을 방지하자)
로 3팀만 아주 간단하게 보고서 만들어 보세요^^
Team Project 제목 : 파이썬 판다스를 이용해서 투자 전략을 백테스트 하는 프로젝트
Project 동기/목적 : 대표적인 투자 분석 도구 및 전략인 모멘텀 전략, 조엘 그린블라트 마법공식, 저PBR 주식이 실제로 성립하는지를 검증하기 위함이다.
팀장/팀원/역할분담/팀원평가 : 조완제, 신재열, 민재필, 김예훈
<모멘텀 전략>
모멘텀 전략(Momentum Strategy)은 가장 원시적이면서도 보편화된 투자 분석 기술로, 장기적인 지표 또는 자료에 근거하여, 미래의 전망을 예측한다. 즉, 장기간에 걸쳐서 수익률이 증가세였다면 그 후에도 증가세를 이어갈 것이고, 수익률이 감소세였다면 그 후에도 감소세를 이어갈 것이라고 예측하는 것이다. 모멘텀(Momentum)은 물리 용어인 운동량(Momentum)에서 영감을 얻은 것이다. 운동량은 고립계라는 전제하에, 물리적으로 보존되는 물리량이다. 바로 이러한 성질을 경제적인 현상에 적용하여, 외부적인 요인(사건, 재난)이 없는 한 경제적인 지표는 일정하게 유지된다고 보는 것이다. 엄밀히 말하면 물체가 본래의 운동 상태를 유지하려는 성질, 즉 관성(Inertia)의 정의를 차용한 것이다. 약 1800년대에 나온 전략인 점을 감안하면, 당시에 뉴턴의 방정식이 F=ma가 아닌 F=dP/dt로 표현되었으므로, 관성이 모멘텀으로 연관이 된 것이라고 볼 수 있다.
이제 2016년 12월 29일부터 한 달 간격으로 측정된 582개의 주식 가격 데이터를 이용해서, 초기에 상위 10%에 속하는 주식을 하위 90%에 속하는 주식과 기간별로 비교/대조하여 모멘텀 전략이 실질적으로 유효한지를 확인해보려 한다.


(위 그림은 주어진 데이터에 대한 모식도이다. 왼쪽 부분에서 빨간색으로 표시된 행은 상위 10% 자료를 의미한다.)
0. 사전 처리
상위 10% 주식을 선별하기 위해서, 2016.12.29.~2017.02.28. 동안의 값들의 합을 이용하여, 내림차순으로 행을 배치하는 작업을 진행하였다. 또한 582개의 주식 중, 상위 10%의 주식의 수는
, 약 58개이다. 상위에 있는 58개의 자료를 A군으로, 하위에 있는 524개의 자료를 B군으로 분류하여, 분석을 진행한다.
1. F-검정을 이용한 분석
F-검정은 두 집단의 유사도를 검증하는 방법으로, 분산을 이용하여 두 집단의 유사도를 분석한다.
|
기간 |
F-value |
유의확률(단측) |
기각치(단측) |
|
2017.03.31. ~ 2017.08.31. |
3.185482328 |
0.114642052 |
5.050329058 |
|
2017.03.31. ~ 2018.02.28. |
1.657625213 |
0.20751204 |
2.81793047 |
|
2017.03.31. ~ 2019.02.28. |
1.452034651 |
0.188845309 |
2.014424842 |
|
2017.03.31. ~ 2020.02.28. |
2.565031908 |
0.003282169 |
1.757139526 |
(이전에 상위 10%를 분류하기 위해 사용했던 기간 이후를 기점으로 계산하였다. 비교적 최신의 정보를 더 사용할 수 있도록 하기 위함이다)
주어진 유의확률이 단측에 대한 것이므로, 2를 곱하여 양측으로 값을 구할 수 있다. 이는 유사도를 나타내는 확률로 0.5보다 작으므로, 두 집단의 자료는 유사도가 매우 낮다. 이는 A군과 B군의 값 양상이 서로 반대되는 방향으로 진행된다는 것을 보여준다. 또한 F-value의 가설값을 임의로 설정하여 자료를 검증하는 방법이 있는데, F-value를 1.5로 설정하였을 때, 2017.03.31. ~ 2019.02.28. 기간의 자료를 제외하면, 나머지 모두 귀무가설(Null Hypothesis)을 만족하지 못한다.
2. 신뢰구간(Confidence Interval)을 이용한 분석
95%의 신뢰도로 자료의 신뢰구간을 계산하였다. 두 집단의 신뢰구간은 다음과 같이 구한다.
![]()
아래 자료에서 LHS는 위 식의 좌변을, RHS는 위 식의 우변을 의미한다.
|
기간 |
LHS |
RHS |
|
2017.03.31. ~ 2017.08.31. |
-0.608877803 |
2.240081856 |
|
2017.03.31. ~ 2018.02.28. |
-0.438950507 |
1.154486785 |
|
2017.03.31. ~ 2019.02.28. |
-0.571861505 |
0.639516121 |
|
2017.03.31. ~ 2020.02.28. |
-0.482743343 |
0.384171424 |
신뢰 구간의 길이가 측정 기간이 길어질수록, 감소한다는 것을 확인할 수 있다. 신뢰 구간이 좁혀진다는 것은 두 집단값의 차가 존재할 수 있는 구간도 좁혀진다는 것으로, A집단과 B집단의 값이 서로 수렴하는 방향으로 진행한다는 것을 알 수 있다.
3. Two Sample Mean을 이용한 분석

|
기간 |
TSM( |
|
2017.03.31. ~ 2017.08.31. |
3.698066587 |
|
2017.03.31. ~ 2018.02.28. |
3.624543088 |
|
2017.03.31. ~ 2019.02.28. |
0.303509428 |
|
2017.03.31. ~ 2020.02.28. |
-2.138089118 |
(Z은 1.645로 값을 정하였다)
기간이 길어짐에 따라, 두 집단의 샘플 평균 차의 값이 작아지는 것을 확인할 수 있다. 그러다가 2017.03.31. ~ 2020.02.28. 기간의 자료에서는 두 집단의 샘플 평균 차가 역전된다. 즉, 값의 부호가 변화하게 된다. 이것은, 하위 집단인 B군이 상위 집단인 A군을 추월했다는 의미로 해석할 수 있다.
4. 결론
초기에 상위 10%에 있던 주식들은 대부분 하위 90% 주식과 유사하거나, 그 이하로 감소하였다. 이렇게 보면, 상위 10%에 있던 주식이 유망할 것이라는 모멘텀 전략이 성립하지 않는 것처럼 보인다. 하지만 여기에 모멘텀 전략을 적용하는 것은 잘못된 것이다. 상위 10% 주식을 선정하기 위해 활용한 자료의 기간이 짧기 때문에, 장기적인 자료를 전제한 모멘텀 전략은 사실상 적용할 수 없다. 여기서는 6개월, 1년, 2년, 3년에 걸친 값을 장기적인 자료로 사용하여, 이전 상위 10%의 주식은 유망성이 떨어진다고 결론지을 수 있다. 또한 모멘텀 전략은 외부적 요인이 없어야 한다는 전제 조건이 있다. 하지만 2020년 초에 COVID-19로 인한 경제적 영향이 지속되고 있으므로, 사실상 모멘텀 전략을 적용하여 주식의 유망성을 보기는 어렵다. 정리하면, 모멘텀 전략은 이상적인 경제 상태(외적 간섭요인이 없는 상태)에서 사용할 수 있는 투자 전략으로, 불확실한 현실에서 모멘텀 전략을 실용적으로 사용하기 위해서는 다른 분석 메커니즘과 결부하여 사용할 필요가 있다.
Team Project 제목: Best Investment Strategy
팀장: 민재필
팀원: 조완제, 신재열, 김예훈
Project 동기/목적: 프로젝트의 동기는 대학 재학시절 주식투자를 하면서 손해를 입어 본 경험입니다. 고등학교때부터 경제 과목을 공부하면서 주식과 투자에 대해 어렴풋이 공부를 했고 마침 대학교 학과도 글로벌경제학과로 진학하게 되면서 경제와 투자에 대해 깊이 있는 공부를 하게 되었습니다. 고등학교와 대학 수업 때 익혔던 지식을 바탕으로 저 개인적으로 투자를 결심하게 되었는데 생각보다 쉽지 않았고 지식이 많이 부족하다는 것을 느꼈습니다. 그로 인해서 투자에 대해 더 깊이 있게 공부를 해야겠다는 결심을 하게 되었고 이 프로젝트도 투자에 대해서 더 깊이 있게 공부해보자는 마음에 의해서 진행하게 되었습니다.
Introduction: 프로젝트의 내용은 파이썬의 판다스 분석 툴을 활용해서 대한민국 코스피 주식에 대한 퀀트 전략을 백테스트 하는 것입니다. 퀀트 전략이란 주식이 가지고 있는 수치, 혹은 multiple을 가지고 그 주식의 상대적인 가치를 매겨서 포트폴리오를 구성하는 것을 말합니다. Multiple 의 예로는 PER(price earnings ratio), ROE(return on equity), PBR(price book value ratio) 등이 있습니다. 백테스트는 주어진 퀀트 전략을 가지고 그 퀀트 전략을 과거에 도입해보면서 약 3년의 time frame을 놓고 그 전략이 유효한지 안한지 테스트 해보는 것입니다.
이 프로젝트에서 테스트 할 전략은 총 2가지입니다. 조엘 그린블라트의 마법공식, 모멘텀 전략, 그리고 저 PBR 전략입니다. 조엘 그린블라트의 마법공식의 기본적인 개념은 돈을 잘 버는 주식을 싼 값에 사자는 전략입니다. 돈을 잘 버는 것을 알려주는 척도는 ROE(return on equity), 자기자본이익률이 있습니다. 이 지표는 투자자들이 투자한 돈을 가지고 몇 퍼센트의 이익을 남겼는지 알려줍니다. 주식이 싼지 안 싼지 알려주는 지표는 PER(price earnings ratio), 주가수익비율입니다. 이 지표는 기업이 버는 이익에 비해서 주가가 몇 배인지를 알려줍니다. 마법공식은 전체 주식에 대해서 주식의 PER이 낮을수록 높은 랭킹을 매기고 ROE가 높을수록 높은 랭킹을 매겨서 총 합산 랭킹이 높은 주식들에 투자하는 것이 수익률이 좋다는 내용의 공식입니다. 종합 랭킹 상위 10% 주식들과 하위 90%의 주식들의 수익률을 비교해 보았습니다.
모멘텀 전략은 이름 그대로 모멘텀이 좋은 주식을 사자는 전략입니다. 모멘텀 전략의 내용은 과거 3개월동안 수익률이 좋은 주식이 앞으로 수익률이 높다는 것입니다. 코스피 전체 주식의 최근 3개월 수익률을 비교해서 수익률이 가장 좋았던 상위 10% 주식과 하위 90% 주식의 3년간 수익률을 테스트 했습니다.
통계적 분석: 이 프로젝트에서 사용하는 통계적 분석 방법은 총 3가지입니다. Two sample mean test, F test, 그리고 confidence interval입니다.
Two sample mean test: Two sample mean test는 각 전략으로 랭킹을 매긴 상위 10% 주식의 수익률과 하위 90% 주식들의 수익률에 있어서 상위 10% 주식의 수익률이 하위 90% 주식의 수익률 보다 큰지 안 큰지 통계적 유의성을 테스트 하는 것입니다. Null hypothesis 는 상위 10%주식의 수익률과 하위 90% 주식의 수익률이 같다는 것이고 alternative hypothesis는 상위 10% 주식의 수익률이 하위 10% 주식의 수익률보다 크다는 것입니다. One-tailed test입니다.

D 값이 정규분포 z table의 alpha level = 0.05 보다 크다면 null hypothesis를 reject 할 수 있습니다.
F test: F test 는 상위 랭킹 10% 주식과 하위 랭킹 90% 주식의 분산을 비교해서 하위 랭킹 90% 주식의 분산이 상위 랭킹 10% 주식의 분산 보다 큰지 안 큰지 통계적 유의성을 테스트 하는 것입니다. 분산을 테스트 하는 이유는 투자에 있어서 절대적인 수익률 보다 수익률의 분포가 고른 것을 중요시 하기 때문입니다.

이 프로젝트에서는 one tailed test를 시행하였습니다.
Confidence Interval: 상위 랭킹 10% 주식과 하위 랭킹 10% 주식의 수익률의 차이를 confidence interval 로 나타내 보았습니다. confidence level은 95%입니다.
Sample: 이 프로젝트를 위해서 선택한 샘플은 코스피 주식입니다. 코스닥 주식을 선택하지 않은 이유는 코스피 주식이 코스닥 주식보다 행보가 안정적이라고 인식되기 때문에 그렇습니다. 전체 코스피 주식에 대해서 PER, ROE, PBR을 구할 수 있는 583 개의 주식에 한해서 테스트 했습니다.
Assumption: 통계적 분석에 있어서 이 샘플은 정규분포를 따른다고 가정하였습니다. 그 이유는 sample size가 583으로 충분히 크기 때문입니다.
Time Frame: 2016년 12월부터 2020년 3월까지를 테스트 했습니다. 각 전략에 있어서 상위 랭킹 10%와 하위 랭킹 90%의 6개월, 1년, 2년, 3년 수익률을 비교했습니다. Time Frame을 2016년 12월을 시작으로 정한 이유는 더 먼 과거의 데이터가 존재하지 않는 경우가 많기 때문이고 6개월, 1년, 2년, 3년의 수익률을 비교하는 이유는 단기, 중기, 장기 수익률을 확인하기 위해서입니다.
데이터 크롤링 작업: 이 프로젝트를 진행하기 위해서는 무엇보다 데이터가 중요했습니다. 전체 코스피 주식에 대한 PER, ROE, PBR 수치와 2016년부터 2020년까지의 가격데이터를 직접 가져오는 것은 불가능하기 때문에 대용량의 데이터를 분석하는데 좋은 도구인 판다스를 활용했습니다.
1.
코스피 상장종목 코드 가져오기:
모든 코스피 주식에 대해서 데이터를 가져올 것이기 때문에 나중에 판다스를 활용할 때 종목코드를 for 문을 통해서 함수화시키기 위해서 코스피 전체 종목코드를 엑셀파일로 가져왔습니다.
2. 재무비율, 투자지표 데이터 가져오기: 모든 코스피 종목에 대해서 PER, ROE, PBR 값을 2016년부터 2020년 까지 가져올 것이기 때문에 이 모든 데이터를 가지고 있는 Company Guide 홈페이지를 활용하였습니다.


3. 가격데이터 가져오기 : 모든 코스피 종목에 대해서 2016년 12월부터 2020년 3월까지 월 기준 가격데이터를 가져오기 위해서 네이버 금융 페이지를 활용하였습니다.

코딩:
#재무데이터 구하기
import pandas as pd
import requests
def make_fr_dataframe(firm_code):
fr_url='http://comp.fnguide.com/SVO2/ASP/SVD_FinanceRatio.asp?pGB=1&cID=&MenuYn=Y&ReportGB=D&NewMenuID=104&stkGb=701&gicode='+firm_code
fr_page=requests.get(fr_url)
fr_tables=pd.read_html(fr_page.text)
temp_df = fr_tables[0]
temp_df = temp_df.set_index(temp_df.columns[0])
temp_df=temp_df.loc[['ROE계산에 참여한 계정 펼치기']]
return temp_df
Pandas를 import 하고 request 모듈을 활용해서 Company Guide의 홈페이지에 request를 보내서 ROE 데이터만 가져오는 것을 make_fr_dataframe(firm_code)로 함수화 시켰습니다. 여기서 firm_code는 앞서 한국거래소 홈페이지에서 가져온 코스피 종목코드를 넣었습니다.
모든 종목에 대한 데이터 가져오기:
import time
for num, code in enumerate(code_data['종목코드']):
try:
print(num, code)
time.sleep(1)
try:
fr_df=make_fr_dataframe(code)
except requests.exceptions.Timeout:
time.sleep(60)
fr_df = make_fr_dataframe(code)
fr_df_changed= change_df(code,fr_df)
if num==0:
total_fr=fr_df_changed
else:
total_fr=pd.concat([total_fr,fr_df_changed])
except ValueError:
continue
except ValueError:
continue
모든 종목에 대한 데이터를 가져올 때는 한번에 하면 에러가 생길 수 있기 때문에 time 모듈을 import 해서 한번에 한 데이터씩 가져오게 했습니다.
이런 방식으로 PER, ROE, PBR 데이터를 가져왔습니다.
가격 데이터 가져오기:
가격 데이터는 앞서 언급했듯이 네이버 금융 페이지를 활용했습니다. 구글 크롬에서 F12 버튼을 누르면 웹 페이지에 있는 정보를 코딩 형태로 볼 수 있는데 이 코드를 판다스의 BeautifulSoup 모듈을 활용해서 원하는 정보만 가져올 수 있도록 하였습니다.
코딩:
import requests
import bs4
import pandas as pd
import time
#가격을 홈페이지에서 가져와 데이터프레임으로 만드는 함수
def make_price_dataframe(code, timeframe, count):
url= ‘https://fchart.stock.naver.com/sise.nhn?requestType=0’
price_url= url+ ‘&symbol=’ +code+ &timeframe=’ +timeframe+’&count=’+count
price_data= requests.get(price_url)
price_data_bs= bs4.BeautifulSoup(price_data.text,‘lxml’)
item_list=price_data_bs.find_all(‘item)
date_list=[]
price_list=[]
for item in item_list:
temp_data=item[‘data’]
datas=temp_data.split(‘|’)
date_list.append(datas[0])
price_list.append(datas[4])
price_df= pd.DataFrame({code:price_list},index=date_list)
return price_df
#가격 데이터 다 가져오기
for num,code in enumerate(code_data[‘종목코드’]):
try:
print(num,code)
time.sleep(1)
try:
price_df= make_price_dataframe(code, ‘month’, ‘42’)
except requests.exceptions.Timeout:
time.sleep(60)
price_df=make_price_dataframe(code,‘month’,‘42’)
if num == 0:
total_price = price_df
else:
total_price=pd.merge(total_price,price_df,how=’outer’,right_index=True,left_index=True)
except Value Error:
continue
excpet KeyError:
continue
네이버 금융 홈페이지에서 가져온 가격데이터를 BeautifulSoup 모듈을 이용해서 데이터 분석에 적합한 데이터로 변형시키고, make_price_dataframe 함수를 만들어서 앞서 언급한 모든 코스피 종목에 대한 종목코드를 url에 추가하면서 time 모듈을 활용하여 가격데이터를 하나 하나씩 가져온다. 여기서 가져올 데이터는 날짜와 월봉 종가이다.
데이터 정렬: 이렇게 request 모듈과 BeautifulSoup 모듈을 활용해서 얻은 재무비율, 투자지표, 가격데이터를 파이썬의 sortvalues 함수를 사용하여 코스피 종목에 대한 랭킹을 매겼다.
Raw Data:
마법공식 랭킹 + 가격(분기별)
가격테이터

실제 분석
마법공식 전략 통계적 분석 by 조완제
조엘 그린블라트 마법공식은 저PER 주식과 고ROE 주식이 장기적으로 수익률이 높다는 내용의 전략입니다. PER이란, 기업의 현재 주가와 EPS와의 비율을 나타낸 값입니다. 일반적으로 PER이 작다는 것은 기업이 내는 순이익에 비해 주가가 저평가 되어있다는 뜻입니다. 또 ROE란 기업이 자본을 이용하여 얼마만큼의 이익을 냈는지를 나타내는 지표이고 당기순이익에다가 자본총액을 나눈값입니다. 위의 공식을 이용해서 주식데이터를 분석해 보았습니다.
마법공식을 이용해 순위를 나누고 상위10퍼센트의 주식와 하위90퍼센트의 주식의 상승률을 시간에 따라 분석해보았습니다.
Two sample mean test
코딩:import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
magic=pd.read_excel('종합랭크(마법공식)+가격데이터(분기단위).xlsx')
len(magic)
high=magic[:58]
low=magic[58:]
high_copy=high.iloc[:,2:]
low_copy=low.iloc[:,2:]
date_list=['20170630','20171228','20181228','20191230']
def investigation(data,date):
gap_data=data[date]/data['20161229']
return gap_data.mean()
def investigation_all(data,date_list):
for i in date_list:
print('20161229대비',i,'상승률:',investigation(data,i))
위의 파이썬 코드를 이용했습니다.
1. 마법공식 이용해서 상위10센트 주식과 하위90퍼센트주식 평균상승률 two sample mean test 해보기(alpha=0.05,one-tail)
z value one tailed value 값 1.645을 사용했습니다.
def get_t(data1,data2,date_list):
t_list=[]
for i in range(len(date_list)):
a=(investigation(data1,date_list[i])-investigation(data2,date_list[i]))
b=math.sqrt(get_std(data1,date_list[i])**2
/len(data1)+get_std(data2,date_list[i])**2/len(data2))
z=a/b
t_list.append(z)
return t_list
for i in range(len(date_list)):
if abs(get_t(high_copy,low_copy,date_list)[i])<1.645:
print('20161229 대비',date_list[i],'값은 reject null hypothesis')
else:
print('20161229 대비',date_list[i],'값은 cannot reject null hypothesis')
Results:
20161229 대비 20170630 값은 reject null hypothesis
20161229 대비 20171228 값은 cannot reject null hypothesis
20161229 대비 20181228 값은 reject null hypothesis
20161229 대비 20191230 값은 reject null hypothesis
F Test
2.F-test(variance)해보기
F 테스트는 F- 분포를 사용하는 모든 테스트에 대한 포괄적 인 용어입니다. 대부분의 경우 사람들이 F- 테스트에 대해 이야기 할 때 주로 이야기하는 것은 두 가지 샘플을 비교 하는 F- 테스트입니다. variance에 관해서 F Table for alpha=0.05일때 right tailed F-test를 해보았습니다.
deegrees of freedom1의값은 57
deegress of freedom2의값은 523이므로 아래의 표에서 f value 근사치를 구해서 계산해보겠습니다. 근사치 값으로 df1=500, df2=60, f value를 1.41로 잡고 계산을 해보겠습니다.

def get_std(data,date):
data=data[date]/data['20161229']
return data.std()
def get_vars(data,date_list):
var_list=[]
for i in range(len(date_list)):
std=get_std(data,date_list[i])
var=std**2
var_list.append(var)
return var_list
high_vars=get_vars(high_copy,date_list)
low_vars=get_vars(low_copy,date_list)
var_list=[]
for i in range(len(high_vars)):
if high_vars[i]>low_vars[i]:
var_list.append(high_vars[i]/low_vars[i])
else:
var_list.append(low_vars[i]/high_vars[i])
for i in range(len(var_list)):
if var_list[i]<1.41:
print('20161229대비',date_list[i] ,'평균 상승률: we cannot reject the null hypothesis')
else:
print('20161229대비',date_list[i] ,'평균 상승률: we can reject the null hypothesis')
Results
20161229대비 20170630 평균 상승률: we cannot reject the null hypothesis
20161229대비 20171228 평균 상승률: we can reject the null hypothesis
20161229대비 20181228 평균 상승률: we cannot reject the null hypothesis
20161229대비 20191230 평균 상승률: we cannot reject the null hypothesis
Confidence Interval
각 그룹의 confidence interval 찾기
평균 수익률 차이는 confidence interval base로 이용하고 아래의 z value는 1.96을 이용해서 구했습니다.
import math
def confidence(data1,data2,date_list):
confidence_list=[]
for i in range(len(date_list)):
a=investigation_all(data1,date_list)[i]
b=investigation_all(data2,date_list)[i]
sp=(len(data1)-1)*get_std(data1,date_list[i])**2+(len(data2)-1)*get_std(data2,date_list[i])**2/(len(data1)+len(data2)-2)
sp=math.sqrt(sp)
p=a-b+1.96*sp*math.sqrt(1/math.sqrt(len(data1))+1/math.sqrt(len(data2)))
n=a-b-1.96*sp*math.sqrt(1/math.sqrt(len(data1))+1/math.sqrt(len(data2)))
confidence_list.append((n,p))
return confidence_list
for i in range(len(date_list)):
print('20161229대비',date_list[i],'값의 confidence interval')
print(confidence(high_copy,low_copy,date_list)[i])
Results:
20161229대비 20170630 값의 confidence interval
(-1.3044730692336792, 1.3409295928512435)
20161229대비 20171228 값의 confidence interval
(-1.7712828395436837, 1.532220009353388)
20161229대비 20181228 값의 confidence interval(-3.612891880952966, 3.3897543478747876)
20161229대비 20191230 값의 confidence interval
(-3.9258580973565174, 3.85098536397836)
모멘텀 전략 통계적 분석 by 김예훈
모멘텀 전략(Momentum Strategy)은 가장 원시적이면서도 보편화된 투자 분석 기술로, 장기적인 지표 또는 자료에 근거하여, 미래의 전망을 예측한다. 즉, 장기간에 걸쳐서 수익률이 증가세였다면 그 후에도 증가세를 이어갈 것이고, 수익률이 감소세였다면 그 후에도 감소세를 이어갈 것이라고 예측하는 것이다. 모멘텀(Momentum)은 물리 용어인 운동량(Momentum)에서 영감을 얻은 것이다. 운동량은 고립계라는 전제하에, 물리적으로 보존되는 물리량이다. 바로 이러한 성질을 경제적인 현상에 적용하여, 외부적인 요인(사건, 재난)이 없는 한 경제적인 지표는 일정하게 유지된다고 보는 것이다. 엄밀히 말하면 물체가 본래의 운동 상태를 유지하려는 성질, 즉 관성(Inertia)의 정의를 차용한 것이다. 약 1800년대에 나온 전략인 점을 감안하면, 당시에 뉴턴의 방정식이 F=ma가 아닌 F=dP/dt로 표현되었으므로, 관성이 모멘텀으로 연관이 된 것이라고 볼 수 있다.
이제 2016년 12월 29일부터 한 달 간격으로 측정된 582개의 주식 가격 데이터를 이용해서, 초기에 상위 10%에 속하는 주식을 하위 90%에 속하는 주식과 기간별로 비교/대조하여 모멘텀 전략이 실질적으로 유효한지를 확인해보려 한다.


(위 그림은 주어진 데이터에 대한 모식도이다. 왼쪽 부분에서 빨간색으로 표시된 행은 상위 10% 자료를 의미한다.)
0. 사전 처리
상위 10% 주식을 선별하기 위해서, 2016.12.29.~2017.02.28. 동안의 값들의 합을 이용하여, 내림차순으로 행을 배치하는 작업을 진행하였다. 또한 582개의 주식 중, 상위 10%의 주식의 수는
, 약 58개이다. 상위에 있는 58개의 자료를 A군으로, 하위에 있는 524개의 자료를 B군으로 분류하여, 분석을 진행한다.
1.. Two Sample Mean을 이용한 분석

|
기간 |
TSM( |
|
2017.03.31. ~ 2017.08.31. |
3.698066587 |
|
2017.03.31. ~ 2018.02.28. |
3.624543088 |
|
2017.03.31. ~ 2019.02.28. |
0.303509428 |
|
2017.03.31. ~ 2020.02.28. |
-2.138089118 |
(Z은 1.645로 값을 정하였다)
기간이 길어짐에 따라, 두 집단의 샘플 평균 차의 값이 작아지는 것을 확인할 수 있다. 그러다가 2017.03.31. ~ 2020.02.28. 기간의 자료에서는 두 집단의 샘플 평균 차가 역전된다. 즉, 값의 부호가 변화하게 된다. 이것은, 하위 집단인 B군이 상위 집단인 A군을 추월했다는 의미로 해석할 수 있다.
2. F-검정을 이용한 분석
F-검정은 두 집단의 유사도를 검증하는 방법으로, 분산을 이용하여 두 집단의 유사도를 분석한다.
|
기간 |
F-value |
유의확률(단측) |
기각치(단측) |
|
2017.03.31. ~ 2017.08.31. |
3.185482328 |
0.114642052 |
5.050329058 |
|
2017.03.31. ~ 2018.02.28. |
1.657625213 |
0.20751204 |
2.81793047 |
|
2017.03.31. ~ 2019.02.28. |
1.452034651 |
0.188845309 |
2.014424842 |
|
2017.03.31. ~ 2020.02.28. |
2.565031908 |
0.003282169 |
1.757139526 |
(이전에 상위 10%를 분류하기 위해 사용했던 기간 이후를 기점으로 계산하였다. 비교적 최신의 정보를 더 사용할 수 있도록 하기 위함이다)
주어진 유의확률이 단측에 대한 것이므로, 2를 곱하여 양측으로 값을 구할 수 있다. 이는 유사도를 나타내는 확률로 0.5보다 작으므로, 두 집단의 자료는 유사도가 매우 낮다. 이는 A군과 B군의 값 양상이 서로 반대되는 방향으로 진행된다는 것을 보여준다. 또한 F-value의 가설값을 임의로 설정하여 자료를 검증하는 방법이 있는데, F-value를 1.5로 설정하였을 때, 2017.03.31. ~ 2019.02.28. 기간의 자료를 제외하면, 나머지 모두 귀무가설(Null Hypothesis)을 만족하지 못한다.
3. 신뢰구간(Confidence Interval)을 이용한 분석
95%의 신뢰도로 자료의 신뢰구간을 계산하였다. 두 집단의 신뢰구간은 다음과 같이 구한다.
![]()
아래 자료에서 LHS는 위 식의 좌변을, RHS는 위 식의 우변을 의미한다.
|
기간 |
LHS |
RHS |
|
2017.03.31. ~ 2017.08.31. |
-0.608877803 |
2.240081856 |
|
2017.03.31. ~ 2018.02.28. |
-0.438950507 |
1.154486785 |
|
2017.03.31. ~ 2019.02.28. |
-0.571861505 |
0.639516121 |
|
2017.03.31. ~ 2020.02.28. |
-0.482743343 |
0.384171424 |
신뢰 구간의 길이가 측정 기간이 길어질수록, 감소한다는 것을 확인할 수 있다. 신뢰 구간이 좁혀진다는 것은 두 집단값의 차가 존재할 수 있는 구간도 좁혀진다는 것으로, A집단과 B집단의 값이 서로 수렴하는 방향으로 진행한다는 것을 알 수 있다.
4. 결론
초기에 상위 10%에 있던 주식들은 대부분 하위 90% 주식과 유사하거나, 그 이하로 감소하였다. 이렇게 보면, 상위 10%에 있던 주식이 유망할 것이라는 모멘텀 전략이 성립하지 않는 것처럼 보인다. 하지만 여기에 모멘텀 전략을 적용하는 것은 잘못된 것이다. 상위 10% 주식을 선정하기 위해 활용한 자료의 기간이 짧기 때문에, 장기적인 자료를 전제한 모멘텀 전략은 사실상 적용할 수 없다. 여기서는 6개월, 1년, 2년, 3년에 걸친 값을 장기적인 자료로 사용하여, 이전 상위 10%의 주식은 유망성이 떨어진다고 결론지을 수 있다. 또한 모멘텀 전략은 외부적 요인이 없어야 한다는 전제 조건이 있다. 하지만 2020년 초에 COVID-19로 인한 경제적 영향이 지속되고 있으므로, 사실상 모멘텀 전략을 적용하여 주식의 유망성을 보기는 어렵다. 정리하면, 모멘텀 전략은 이상적인 경제 상태(외적 간섭요인이 없는 상태)에서 사용할 수 있는 투자 전략으로, 불확실한 현실에서 모멘텀 전략을 실용적으로 사용하기 위해서는 다른 분석 메커니즘과 결부하여 사용할 필요가 있다.
Conclusion

결과를 요약하자면, 마법공식을 통해 고를 주식과 모멘텀 전략을 활용해 고른 주식 모두 전략을 사용하지 않았을 경우에 비교해서 좋은 성과를 보인다. Two Sample Mean Test에서 두 주식 모두 각 각 1년, 2년 기간을 제외하고는 Null Hypothesis를 Reject 할 수 있었다. 분산 같은 경우에는 마법공식과 모멘텀 전략을 활용해 고른 주식들의 수익률의 분산은 전략을 활용하지 않은 주식들의 분산과 크게 다르지 않았다. 양 전략 모두 각 각 1기간 빼고 Null hypothesis를 reject 할 수 없었다. 마지막으로 confidence interval을 보면 두 전략 모두 그 전략을 택한다고 해서 반드시 그 전략을 택하지 않았을 때 보다 수익을 보는 것을 아니었다. 양 전략 모두 confidence interval 이 0을 포함하고 있기 때문이다. 수익률의 변동성에 있어서는 마법공식 전략이 모멘텀 전략보다 수익률의 변동성이 더 컸다.
참고 문헌
퀀트전략 파이썬으로 세워라, 박준규 저자
Pandas 모듈을 위한 Docker 이미지 구축
Tensorflow나 PyTorch는 Deepo라는 통합 라이브러리를 구축하여, Docker Hub에서 배포되고 있다. 하지만, Pandas는 Docker Hub에 등록된 공식적인 이미지가 없다. 이 부분에 영감을 받아, Deepo처럼 Pandas를 위한 Docker 이미지를 구축해보려 한다. 이미지를 구축하는 목적은 다양하나, 대표적인 목적은 개발 환경 유지와 라이브러리 관리를 위함이다.
1. 임베디드(Embed) 운영체제를 Docker Hub로부터 받기
Embed OS는 최소한의 것으로 구성된 운영체제를 의미한다. 그렇기에 가장 기본적인 것(ls, cd 명령어 등)을 제외하고는 아무것도 없다. 대표적으로 Busybox와 Debian이 있다. 사실상 Debian에서는 패키지를 관리할 수 있는 강력한 도구인 dpkg가 내장되어 있기 때문에, Debian을 Pandas의 기반 운영체제로 선택하였다. Debian 이미지를 설치하기 위한 명령어는 다음과 같다.
|
sudo docker pull debian |
이미지의 목록을 보면 debian이 정상적으로 설치된 것을 확인할 수 있다.

2. 컨테이너 구축하기
이제 이 이미지를 기반으로 컨테이너(Container)를 만들려고 한다. 컨테이너 구성 명령어는 다음과 같다.
|
sudo docker run –i –t —name pandas debian |
위 명령어에서 –i는 interactive를 의미하며, 이는 터미널에서 입력과 출력을 하도록 설정하는 옵션이다. 또한 –t는 tty로 리눅스 터미널 환경을 사용하도록 하는 옵션이다. 사실상 이 두 옵션을 활성화해야지 다음 작업을 수행할 수 있다.

위의 사진의 오른쪽을 보면, Pandas라는 이름의 컨테이너가 형성된 것을 볼 수 있다.
이제 이 컨테이너의 내부 터미널에서 Pandas 모듈을 설치하기 위한 작업을 진행하자. “apt-get update”라는 명령어를 입력하여, 패키지 목록을 업데이트한다.

“apt-get install python”이라는 명령어를 입력하여 python을 설치한다.

또한 “apt-get install python-pip”도 같이 설치한다. pip는 python의 패키지 또는 모듈 관리 프로그램으로, pandas 모듈을 설치하기 위해서 필요하다. 원래는 Github에서 소스를 직접 받아서 컨테이너 내부에 포팅(Porting)하는 것이 맞지만, 모듈 관리의 용이성을 위해 pip를 사용하였다. pip를 설치하였다면, 이제 pip 패키지 관리자를 사용할 수 있게 된다. 명령줄에 “pip”를 입력하여 정상적으로 설치가 되었는지를 확인한 후, “pip install pandas”를 입력하여 Pandas 모듈을 설치한다.

“pip list”를 명령줄에 입력하여, Pandas가 정상적으로 설치가 되었는지를 확인해본다. 이제 “python”을 입력하여, Python을 실행한 후, Pandas 모듈이 Import되는지를 확인해본다.
다행히 정상적으로 Import되었으며, 이제 컨테이너 터미널을 종료한다. Python은 “exit()”을 입력하여, 컨테이너 터미널은 “exit”를 입력하여 종료할 수 있다. 지금 상태에서 Python이 먼저 실행되고 있는 상태이기 때문에 “exit()”를 입력하고, 그 후에 “exit”을 입력해야 한다.
약간 몇 가지 아쉬운 점은, 이러한 구축 방식은 최적화가 부족하다는 것이다. 아래를 보면, RAM의 리소스를 약 100Mib정도 사용하고 있다. 아마도 pip로 인해, 메모리 리소스를 좀 많이 차지하는 것 같다.

3. 이미지 추출하기


위 사진은 Docker의 옵션인 commit과 save를 소개한다. commit은 Docker의 컨테이너를 이미지의 형태로 변환하는 기능이며, save는 이러한 이미지를 파일의 형태로 저장하는 기능이다. Pandas라는 컨테이너를 파일의 형태로 추출해내기 위해서는, 먼저 commit으로 Pandas 컨테이너를 Docker 내부에 저장되는 이미지로 변환시킨 후, 그 이미지를 외부 디렉터리로 할당하여 저장해야 한다.
위에서 제시한 순서대로 작업을 진행해보자. 먼저 commit 명령어를 다음과 같이 입력하여 컨테이너를 이미지로 변환한다.
|
sudo docker commit –a “발행자 이름” -m “설명란” pandas |
명령어를 입력하고 나면, 다음과 같은 내용이 나타난다. SHA256은 암호화 키로 아마도 파일의 진위여부를 확인하기 위해 사용되는 코드인 것 같다. 이러한 경우에는 주로 MD5를 사용하는데, SHA256을 사용한 것을 특이한 점으로 볼 만하다.
![]()
이제 “sudo docker image list”를 입력하여, 이미지가 정상적으로 형성되었는지를 확인해보자.

약간의 문제가 있다면, 이미지의 Repository(저장소)와 Tag가 지정하지 않았기 때문에, <none>이라는 문자를 출력한다는 것이다. 이것은 이전 명령어에서 Repository와 Tag를 지정하여, 다시 이미지를 만들면 해결된다.
이미지가 정상적으로 Docker에 존재하기 때문에, 이 이미지를 로컬 디렉터리에 저장해보자. 이미지를 저장하기 위한 명령어는 다음과 같다.
|
sudo docker save –o “파일명” “컨테이너 이름 또는 컨테이너 고유 ID” |
입력 결과 다음과 같이 로컬 디렉터리에 이미지가 저장된 것을 확인할 수 있다.
![]()
이제 이 파일을 배포함으로써, 다른 환경에서도 동일하게 컨테이너를 구동할 수 있게 되었다. 만약 이것을 좀 더 최적화시킨다면, Deepo와 같은 훌륭한 라이브러리 이미지가 될 수 있을 것이다.
Participation [참여 평가 2] Ch 2장. Participation (20점)
자기 평가와 본인의 Project (Term paper) Proposal 에 대해 아래를 채우시오.
1. (20점) 본인이 그간 Q&A, 동료학생, “본"강좌 등에 기여한 내용을 간단히 서술하세요!
(1) QnA 참여 회수 <QnA에서 직접 확인하세요> : 각 주별 (토요일에서 금요일)
(1) 1주차 : 총 3회, 2주차: 총 2 회, 3주차: 총 7 회, 4주차: 총 3 회
(2) 5주차 : 총 6회, 6주차: 총 1 회, 7주차: 총 26 회, 8주차: 총 3 회
9주차 : 총 1 회, 10주차: 총 0회, 11주차: 총 6회, 12주차: 총 8회
13주차 : 총 회, 14주차: 총 회, 15주차: 총 회.
총 48 회 (질문: 29 회, 답변/수정/Final: 35 회)
(3) 온라인 출석 회수 : ( 45 ) 회 / 총 ( 45 ) 회
(4) WebEx OH 출석 회수 : 9회 / 10회
* 기타 본인이 학습과정/활동에 기여하였다고 생각하고, Bonus 점수를 원하는 내용 기술. * WebEx OH 단 한 번외 모두 참석하였습니다. 그리고 오타 하나 찾아서 공유했습니다. 보너스 점수 부탁드립니다. 오류나 오타 수정을 2번 건의하였습니다.
(2) 다음 밑줄 친 곳에 들어갈 내용을 고르시오.
(위 박스 안의 키워드에서 자신이 충분히 이해하고 있는 것을 표시하시면 됩니다.)
나는 확률과 통계, 대수의 법칙 , 인공지능의 학습 종류들, 딥러닝 의 개념을 이해하고 설명할 수 있으며 (간단한 것은 손으로, 복잡한 것은 컴퓨터를 이용하여) 계산하여 그 의미를 설명할 수 있다.
의 최소제곱해란 normal equation인
의 해이다. 여기서
가 가역행렬이라면
가 그 해가 된다. 그렇다면
의 역행렬을 구하는 것이 최소제곱해 문제를 해결하는 가장 중요한 열쇠가 된다. 이를 QR 분해를 이용하여 구해본다면,
가 full column rank를 가지면, 다음과 같이 QR 분해된다.
![]()
그러면
![]()
(양변에
를 취해주자.)
이제 (
이 가역행렬이므로) 여기에 후진대입법(backward substitution)을 적용하면,
(유일해)

행렬의 거듭제곱법, Gauss 소거법과 Gauss-Jordan 소거법, 역행렬 구하기, 첨가행렬, 기본행연산, 행렬식, 수반행렬, 고윳값과 고유벡터, 행렬의 대각화와 직교대각화, 선형변환, pseudo-inverse, 이차형식, 함수의 극한의 엄밀한 정의, 미분계수의 정의, 도함수, 편도함수, 극대 극소 판정법, 헤시안 행렬, 중적분 등등
임의의 양수
에 대하여
가 되게 하는 적당한 양수
가 존재하면,
가
에 접근할 때
는
에 수렴한다고 하고 이 때
을
가
에 접근할 때의
의 극한이라고 부른다. 기호로는 다음과 같이 표시한다.
수렴하지 않으면 발산한다고 한다.

(위 박스 안의 키워드에서 자신이 충분히 이해하고 있는 것을 표시하시면 됩니다.)
R 언어 / Sage 언어 / 통계 분포(베르누이 분포, 이항 분포, 포아송 분포, 균등 분포, 정규 분포, 지수 분포, 코시 분포 등) / 통계 함수(확률질량함수(Probability Mass Function), 확률밀도함수(Probability Density Function), 누적분포함수(Cumulative Distribution Function), 적률생성함수(Moment Generating Function))
시행 횟수를 n, 특정 사건 A가 일어날 횟수를 k라 하면, n이 한없이 커질 때 통계적 확률 P(A)는 수학적 확률 a에 가까워진다. 이를 식으로 나타내면 다음과 같다.
![]()
지도학습: 어느 정도의 기준이 주어진 상태에서 자료를 분류해가며 기준을 보완하며 학습하는 것
비지도학습: 기준이 주어지지 않은 상태에서 자료들을 분류해가며 새로운 기준을 찾아내 그 기준을 바탕으로 학습하는 것
강화학습: 학습을 진행하면서 현재 할 수 있는 행동들 중 최대의 보상을 얻거나 최소의 위험을 감수하는 방향으로 학습하는 것
딥러닝은 데이터를 분석하여 다음상황을 예측하는 일을 하는 일종의 기계학습이다. 주어진 초기 파라미터를 설정해주면, 여러 겹의 처리 계층을 사용하여 패턴을 인식하면서, 컴퓨터 스스로가 학습하도록 훈련한는 것이다.
(3) 개인/동료와 같이 “본” 강좌를 학습하면서 배우거나 느낀 점은?
어려운 부분을 다른 학우와 공유하고 교수님으로부터 피드백을 받는 부분이 마치 github에서 pull request가 open되었을 때, 수정 사항에 대해서 commit, comment하고 마지막으로 approve받고 merge하는 프로세스 같았습니다. 나름 체계적인 학습 과정이 좋았습니다 ...
다른 수업들을 추천하는 이유가 ‘저 교수님은 학생들을 열정적으로 가르치신다.’라면, 이 수업을 추천하는 이유는 ‘이 수업에서는 내가 열정적으로 배울 수 있어.’이다. 또, 토론을 적극적으로 권장하고 있기 때문에 다양한 전공과 학년의 학우 분들과 함께 토론하면서 교수님이 아니라 학우분들께도 배움을 얻을 수 있다는 점도 좋다. ‘들으면 잊는다. 보면 기억한다. 그리고 행동하면 이해한다.’라는 말이 있다. 지속적으로 QnA게시판에서 활동하면서 새로운 수학적 지식들을 ‘이해하게’ 되었다고 느낀다.
꾸준하고 성실한 평소학습이 가장 중요한 강좌인 것 같습니다. 밀리게 되면 겉잡을 수 없고 쫓아가기 좀처럼 힘들다고 여겨집니다. Part 2 미적분학을 다소 급하게 수강했는데 선형대수학을 꾸준히 학습하면서 와닿았던 깨달음보다는 덜한 것 같아서 아직은 더 배워야 할 것 같습니다. 이 강좌는 평소학습이 꾸준하고 성실하게 되면 극도의 효과를 볼 수 있으며 토의를 통해 얻은 지식을 나의 지식으로 삼을 수 있다고 확신합니다. 이 수업을 배우면서, 가장 마음 속 깊이 다가온 것은 열정이었다. 다른 수업들과는 다르게, 이 수업은 학생뿐만 아니라 교수님도 매우 열정적이시다. 학생들은 여러 개념들을 이해하고 익히며 실제로 활용할 수 있도록 노력하고, 교수님은 그러한 학생들에게 전폭적인 지지를 해주신다. QnA 활동을 적극적으로 활용하시면서 더 많은 학생들이 공부하는 데 도움이 되도록 노력해주신다. 이 과목이야말로, 다른 학생들에게 꼭 추천하고 싶은 과목이다.
대학 1학년인 새내기에게 있어서, 수학에 대한 전반적인 입문으로 강의를 듣기에 적합한 것 같다. 또한 Sage와 R 언어를 같이 학습한다는 것도 이 수업의 크나큰 장점이라고 생각한다. 실제로 Sage 언어를 배우고 나서, 활용하는 빈도가 늘었다. 반복적인 계산을 수행할 때, 처음에는 Python을 사용하였지만, Sage가 원래 사용하던 Python을 기반으로 하고, Python보다 수학적 표현이 더 풍부하기에, Sage를 사용하고 있다. 이렇게 실생활에서 유용하게 쓸 수 있는 Sage를 학습할 수 있다는 것은 이 수업의 중요한 부분이라고 본다. 아직 R 언어는 통계를 많이 다루지 않아서, 사용 빈도가 낮지만, 후에 Sage 언어처럼 유용할 것이라는 점은 확신한다.
교수님께서 이번 학기동안 보여주신 모습은 정말 존경해야 할 자세였다. 언제나 적극적으로 학생들을 도와주시고 부족한 정보를 채워주셨기 때문이다. 앞으로 다른 동료들은 물론 후배와의 활동, 선배와의 활동 등 여러 활동을 하면서 큰 도움이 될 자세입니다. 이번 학기 정말 많은 것들을 배우고 갑니다.
가장 인상깊은 부분이자 효과적이라고 생각되는 부분은 QnA였다. 이런 형태의 수업을 처음 접해보았는데 다른 수업에 비해 학생들이 수업에 참여하는 열정도 굉장히 높았다. 또, 교수님께서 학생들의 의견과 글들에 댓글을 열정적으로 달아주시는 모습이 인상깊었다. 그리고 매주 금요일 오전에 Webex를 통해 실시간으로 질문사항들에 답해주시고, 공지사항을 전달해주시는 모습을 보면서 수업전체가 하나의 축구팀 같았다. 코치와 선수들이 서로 의견을 나눠가면서 하나의 골을 향해 나가는 모습을 보는 것 같아 인상깊었다.
Ch 5장. [5 pt] After your PBL (PBL보고서를 마치고)
◆ Final comment after your report ◆
(PBL보고서/Project 를 마치고 ...)
1st Month: 아이캠퍼스에 대한 관심이 없어서 시스템에 대한 이해가 전혀되지 않았고 교재학습도 전혀 하지 않았다. 따라서 결국은 QnA활동 또한 전혀 하지 않았다.
Mid Term:...정말 낯설고 어려운 개념도 많지만 단지 시간의 문제인 것 같습니다.
이제라도 관심을 가지고 참여하였으니 꾸준함을 발휘하여 더욱 흥미를 가지고 매진하겠습니다!!
3rd Month: 중간고사 이후에 활발한 활동을 펼쳤기에 나의 활동들을 모두 모아서 정리하는데만 엄청난 시간이 소요된 것 같다. 평소에 미리미리 해두어야함을 절실히 느낀다.
이번 학기에는 23학점을 수강중이라 그런지 중간. 기말고사 기간이 아니어도 평소의 적지 않은 과제에 시달린다는 핑계 하에 문의게시판 활동에 편차가 생기는 것 같다. 한결같을 수는 없더라도 비교적 꾸준히 참여하여 이 과목에서 좋은 학점을 받을 것이라 다시 한 번 각오를 다진다.
Last Month (Final): 5월 PBL보고서를 제출한 이후 6월부터는 전과목에서 무더기로 과제가 쏟아지고 기말고사에 대한 공지 및 상당히 많은 중간 퀴즈 등이 겹치면서 학습 밸런스가 완전히 무너져버렸다. 또한 개인적으로 해야할 여러 일들까지 쏟아지는 바람에 생활패턴이 6월부터는 매우 엉망이 되어버렸다. 그 와중에도 꼭 책상 앞이 아니어도 대중교통을 이용한 이동 중에도 교재를 보면서 질문을 남기는 등 QnA활동의 꾸준함을 잃지 않으려 했다.
하지만 코딩에 대한 이해력은 여전히 제자리 걸음인 것 같다. 늘 다른 학생들의 글을 보며 스스로에 대한 자책감(?)에 답답한 마음이지만 받아들이고 인정해야한다고 생각한다.
지금 주어진 환경과 나 자신의 현 상태에서 최선을 다해 이 보고서를 마무리 짓는다.
1st Month: 아직 부족한게 많아서 보완하고 자신감을 가져 QnA에 적극적으로 참여해야됨을 다짐하게 되는 계기가 되었다.
Mid Term: 첫달 보단 나아졌지만 아직 부족한 부분이 많은거 같다. 그래도 QnA에 참여를 시작하게 돼서 답글을 달고 의견을 제시하는 데 용기를 얻었다.
3rd Month: QnA 참여에 있어서 아직 부족한 부분이 많았다. 첫쨋달과 중간고사와 비교했을땐 나름 활동적이 였지만 절대적인 숫자는 많이 부족했다. 기말고사를 잘 준비해야 겠다.
Last Month (Final): 1강 2강 3강을 아우르는 내용을 통해 나오는 결과라는 생각이 들었다. 내용의 전문성이 있는 부분이라 가장 중요한 PCA와 신경망을 배웠다. 하지만 내용자체가 앞서 배운 내용을 완벽하게 이해하고 사용할 수 있어야 하는 부분 때문에 앞강의를 많이 찾아보는 계기가 되었다. 멀게만 느껴졌던 인공지능이 점점 가까워 지는 것을 느꼈고 자기주도학습과 Qna를 통해서 새로운 학습방식을 체화 한 거 같다. 아직 부족한 부분이 많지만 배움에 있어 재미를 느낀 좋은 시간이였고 교수님의 적극적인 피드백과 독려를 통해 성장하는 계기가 되었다. 다음에 다시 교수님의 수업을 듣고 처음부터 잘 참여하고 싶다는 생각이 들었다. 프로젝트를 끝내지 못한 아쉬움이 남지만 아쉬움보단 많은 배움을 얻고 가는 시간이였다. 온라인 강의의 장점을 열정이 넘치는 교수님 덕에 느낄 수 있었다.
1st Month: 이렇게 정리된 보고서를 보니 흩어진 개념들이 정리가 되는 느낌입니다.
Mid Term: 도함수부터 이중적분까지 Part 1보다 더 심화된 내용을 학습했는데, 확실히 어려운 부분에 대해서 코딩과 시각화를 통한 학습이 곁들여져 보다 더 의미 있는 학습이 되지 않았나 싶습니다. 2020/04/25
어마어마한 작업이 드디어 끝이 났다. 애초에 질문이 많아서 주저없이 물어보는 편인데, 평소에 부지런히 Finalize를 안시켜놨더니 이렇게 쌓여서 고생할줄은 꿈에도 생각지 못했다. 더군다나 저번까지는 캡처로 따오는 것에 그쳤지만, 이번에는 텍스트로 따오고 양식도 통일성 있게 유지하느라 몇배는 고생하였다. 하지만 고생한만큼 보고서를 쓰는 요령에 대해서 더 터득하게 되었고, 시작한 토론에 대해 책임감을 갖고 끝마무리를 해야 한다는 의식도 갖게 되었다.
개인적으로는 통계학 단원이 기대가 된다. 고등학교 때는 일변수 통계학만 맛보기처럼 다루었는데, 통계라는 학문이 어떻게 수학과 연결되어 우리에게 유용한 정보를 가져다 주는지 매우 궁금하고 기대가 된다. 앞으로의 PBL 준비는 미리미리 Finalize 시키고 미리 PBL에 정리하고 타 학우들과 더 의사소통하면서 준비해야겠다.
더불어 이번에 느낀 것은, 수십명이 되는 학생들에 대해 일일이 코멘트 해주시고 피드백 해주시는 교수님이 참 대단하다는 생각이 들었다. 이 수업 말고도 바쁘신 일이 참 많으실텐데 한 명 한 명 세심하게 신경써주시는 일이 결코 쉽지 않으실텐데 어떻게 시간을 활용하시는지도 궁금하고, 학습 성취를 위해 많은 신경을 써주시니 항상 고마운 부분이다. 도와주시는만큼 더 열심히 학습활동에 참여해야겠다.
1st Month: 오랜만에 수학을 배우는 것이라서 생소하고 어려웠지만 계속 교재를 보고 강의를 들으면서 수학과 친숙해지려고 노력했습니다
Mid Term: 중간고사에서 풀어야 될 문제의 양이 많아서 힘들었지만 실제로 Sage에서 코딩을 해보고 다양한 문제를 풀면서 수학실력이 향상된 것 같습니다.
3rd Month: 과거 통계 수업을 재밌게 들은 경험이 있고 CFA 공부를 하면서 통계 문제를 많이 풀어봤기 때문에 통계 섹션이 재밌게 다가왔습니다.
Last Month (Final): 마지막 PBL 보고서인데 내용도 길고 문제도 많고 해서 힘든 부분이 있었지만 그래도 한학기 동안 배운 것을 정리하면서 좋은 시간이 되었던 것 같습니다.
1st Month:
‘인공지능을 위한 기초수학’을 학습하는 것은 매주 새로운 경험이었다. 다른 과목들보다도 QnA를 자주 했으며 다른 과목들과 달리 이 과목은 원래부터 온라인강의였기에 그 체계가 잘 짜여져 있음을 매주 보면서 놀라워했다. 그리고 이번 보고서를 작성하면서 내가 잘 몰랐던 개념들과 잘 알았지만 정작 응용을 못 했던 개념들을 명확히 알게 되었고 잘 다룰 수 있게 되었다. 그리고 앞으로 온라인강의를 듣는 데 있어 어떤 자세와 마음가짐을 갖고 임해야 하는지 깨닫게 되었다. 앞으로 남은 3달동안 더욱 더 발전된 나와 함께 열심히 학습할 것이다.
Mid Term:
이번 중간고사는 다행히 심각하게 어려운 대체 과제는 아니었다. 3월 때와 마찬가지로 보고서를 작성하며 TakeHomeExam에 실린 문제를 변형시켜 푸는 것이었다. 하지만 그것 말고도 이번에 추가된 것은 바로 팀프로젝트였다. 팀프로젝트라는 말을 들으면 난 자연스럽게 겁을 먹게 된다. 팀프로젝트는 팀장과 팀원이 서로 열심히 노력해도 달성하기 어려울 것이라는 막연한 두려움 때문이었다. 심지어 조별과제는 단기적일지 몰라도 팀프로젝트는 장기적인 측면의 의미가 더 강하기 때문에 더 두려워했던 것일지도 모른다. 하지만 이번 강의를 더 잘 이해하기 위해, 팀프로젝트를 피하는 것보다는 도전해보는 것도 나쁘지 않을 것이라는 생각이 들었다.
또한 이번 달 강의들을 들으면서, 이미 알고 있던 개념들은 다시 한 번 복습하며 더 확실하게 개념을 이해할 수 있었고 새롭게 배운 개념들은 이해하기 위해 여러 번 보고 강의를 들으며 이해할 수 있었다. 특히 미분적분학에서 배우는 개념은 인공지능의 학습에 있어 가장 중요하다고 해도 과언이 아닐 정도로 중요하니 더욱 열심히 학습할 것이다.
3rd Month:
이번 달에 배운 개념들은 ‘확률과 통계’의 개념들이다. 이 개념은 인공지능이 가치 판단의 기준을 세우는 데 큰 도움이 되기 때문에 반드시 학습해야 하는 것이다. 그렇기에 그 개념들을 정리하면서 레포트 작성에 주의를 많이 기울였다. 문제를 풀 때 변수들을 변형시키면서, 어떻게 하면 답을 도출할 수 있는지보다 어떤 방식으로 답이 도출되는 것인지를 더 집중적으로 탐구했다. 다른 과제들에 밀려 이 과목의 학습을 미루지 않기 위해 매주 OH에 참여하며 내가 배웠던 개념들을 상기시키는 것은 물론, 앞으로 이 과목의 학습을 게을리하지 않도록 스스로를 다그쳤다.
확률과 통계에서 가장 인상깊었던 개념은 ‘공분산’이다. 1학년 2학기 때 확률과 통계 과목을 학습했었는데, 낯선 개념들이 우후죽순 쏟아져 나오면서 상당히 고생했었고 그 때 고생했던 개념 중 하나가 바로 ‘공분산’이였다. 여러 확률변수 사이의 상관계수를 보여주는 공분산을 다시 한 번 학습하니 이해하기 쉬웠다. 과거에 배운 개념들 덕분에 이번 과목에서 큰 도움이 되었다. 다음에 배울 개념들은 완전히 새로운 것으로 알고 있는데, 지금과 같은 마음가짐이라면 학습하는 데 있어 큰 어려움이 되지 않을 것이다.
Final:
시간 안배와 효율성에 있어 막판에 크게 실패했다. 뒤로 갈수록 더욱 스퍼트를 올리고 따라갔어야 하는데 몸이 안좋다는 핑계로 하루 이틀 미뤄두게 되고 했더니 내용은 쌓일대로 쌓여서 초반에 하던만큼, 교수님께서 기대하신만큼 성과를 보이지 못한 것 같아 많이 아쉽다. 더군다나 마감이 임박한 시점인데 또 욕심 상으로는 완벽한 PBL을 내고 싶어서 하나하나 다듬고 있었는데, 아무래도 퍼펙트한 보고서는 시간을 좀 두고 수정, 보완해야할 것 같다.
Final PBL을 하면서 보였던 한가지 아쉬운 것은, 앞에서 물어봤던 내용을 뒤에서 또 물어보고 같은 내용을 쓰게끔 되어서 분량상으로 효율이 조금 떨어지는 측면도 있었다는 생각이 든다. 어쩌면 반복적인 서술을 통한 숙달을 하라는 교수님의 의도일 수도 있을 것 같은데..
여러모로 많이 쌓이고 해서 힘들었지만, 가장 좋은 공부방법인 것만큼은 확실하다. 그래서 앞으로 어렵고 방대한 공부를 할 때, PBL에서 하였던 것처럼 나만의 노트를 만들어서 내 성취를 눈으로 직접 확인하는 것이 공부의 재미를 올릴 수 있는 길이 아닐까 한다.
3월 첫 PBL보고서를 낼 당시에는 코로나 19사태로 너무나도 어수선한 시국에 수강변경기간 또한 연장되어 여유를 가질 수 있는 시간이 많았는데다가 기존에 선형대수학을 확실히 배웠던 바가 있어서 어렵지 않게 보고서를 작성하였다. 4월 중간 PBL때는 쌓아뒀다가 몰아서 작성하지 않고 꾸준히 보고서를 채워나가리라 생각했었다. 그런데 본격적으로 학기에 돌입하니 기존에 마음먹은 계획들이 잘 이루어지지 못했고 결국에는 임박해서 모든 것을 정리하게 되어 개인적으로 참 아쉬운 4월이었다.
아쉽긴 하지만, 기존에 3월에 열심히 참여하여 노하우를 쌓아왔기에 어떻게 중간 보고서를 준비해야 할지는 대략적으로 알고 있어서 비교적 유리한 고지에 있다고도 생각이 된다. 3월 PBL보고서에 비해서 더욱 더 다듬은 양식으로 세련된 PBL보고서를 작성하고자 노력하였고, 한치의 어설픔과 오류가 없는 PBL보고서가 되기 위해 노력하였다. 웹페이지에서 복사하니 아래한글에 통일성 있는 양식이 되지도 않고 중구난방으로 복사 붙여넣기가 돼서 일일이 수작업하느라 고생도 엄청 많이 했다.. PBL을 준비해 가면서 개인적으로 많이 놀랐던 것은 학생들의 이 PBL보고서가 채점 후 그냥 사라지는 것이 아니라, 교수님께서 계속 보관하고 계신다는 것이다. 선형대수학을 수강할 당시 작성했던 PBL보고서에 대한 소감을 접하고 알았다. 이처럼 학습의 소중한 기록이 되고 추억이 될 PBL보고서, 이 강좌가 끝나더라도 스스로 더욱 성실하게 잘 쓰리라 다짐해본다.
1st Month: 도중에 수강 신청을 하여, 일주일동안 진도를 맞추는데 초점을 두었습니다. 그러다보니, Q&A 활동에는 소홀해진 부분이 있었습니다. 최선을 다해 PBL 보고서를 작성하였지만, 약간 뭔가가 부족한 느낌입니다. 이제부터라도 Q&A 활동에 적극 참여하여, 질 좋은 PBL보고서를 만들도록 노력하겠습니다.
Mid Term: 이 수업에서 가장 유익했던 것은, Sagemath를 학습하는 것이었습니다. 처음에는 명령줄을 입력하여 수학을 한다는 것은 생각지도 못했습니다. 하지만 Sagemath를 배우면서, Python이 수학을 다룰 수 있는 언어라는 것을 깨달았습니다. 실제로, 이러한 생각 덕분에 Python으로 실생활 문제를 처리해 본 적도 있었습니다. 한 예로, 물리실험 결과에서 결과값을 계산하기 위해, 측정값을 리스트에 넣고 코딩을 하였습니다. 10분 정도 걸리는 작업을 약 3분 정도로 단축시킬 수 있는 놀라운 일이었습니다. 확률/통계 단원에서도 최선을 다하여, 더 좋은 결실을 맺도록 하겠습니다.
3rd Month: 처음에는 확률과 통계 단원을 학습하면서 접한 R 언어에 익숙하지 않았습니다. Python 기반도 아닌 완전히 새로운 언어라서, R 언어의 구조와 특성을 잘 이해하지 못하였습니다. 교재에 있는 R 언어를 분석해보고, 그것을 실행해보면서, 코드가 의미하는 바를 기억해두기 위해 노력하였습니다. 또한 부수적인 옵션도 학습하기 위해, R 콘솔에서 볼 수 있는 help() 기능도 적극적으로 이용하였습니다. 그 결과 Sage만큼은 아니지만, R 언어를 자연스럽게 이해하기 시작하였고, 그 후에도 몇몇 통계자료를 R 언어로 분석해보았습니다. 아직 보완해야할 부분은 많지만, 계속해서 코딩 실력을 향상시키도록 하겠습니다.
Last Month (Final): 과제와 시험이 많이 겹치면서, 4단원에 신경을 많이 쓰지 못한 점이 아쉽습니다. 그래도 4단원의 두 가지 핵심 내용인 주성분 분석(PCA)과 인공 신경망을 이해하기 위해 많은 노력을 기울였습니다. 지금까지 학습하였던 내용이 이렇게 큰 그림을 완성할 수 있다는 것이 참으로 놀라웠습니다. 지금까지의 수업을 되돌아보면서, 가장 도움이 된 부분은 역시 Sage와 R 언어를 학습하는 것이었습니다. 실제로 그 부분에 관심이 많았기 때문에, 많은 노력을 기울였고, 그 결과 코딩 실력이 이전보다 많이 향상되는 결실을 맺었습니다. 이 수업으로부터 얻은 깨달음을 바탕으로, 더 큰 일을 할 수 있도록 노력하겠습니다.
1st Month:
‘인공지능을 위한 기초수학’을 학습하는 것은 매주 새로운 경험이었다. 다른 과목들보다도 QnA를 자주 했으며 다른 과목들과 달리 이 과목은 원래부터 온라인강의였기에 그 체계가 잘 짜여져 있음을 매주 보면서 놀라워했다. 그리고 이번 보고서를 작성하면서 내가 잘 몰랐던 개념들과 잘 알았지만 정작 응용을 못 했던 개념들을 명확히 알게 되었고 잘 다룰 수 있게 되었다. 그리고 앞으로 온라인강의를 듣는 데 있어 어떤 자세와 마음가짐을 갖고 임해야 하는지 깨닫게 되었다. 앞으로 남은 3달동안 더욱 더 발전된 나와 함께 열심히 학습할 것이다.
Mid Term:
이번 중간고사는 다행히 심각하게 어려운 대체 과제는 아니었다. 3월 때와 마찬가지로 보고서를 작성하며 TakeHomeExam에 실린 문제를 변형시켜 푸는 것이었다. 하지만 그것 말고도 이번에 추가된 것은 바로 팀프로젝트였다. 팀프로젝트라는 말을 들으면 난 자연스럽게 겁을 먹게 된다. 팀프로젝트는 팀장과 팀원이 서로 열심히 노력해도 달성하기 어려울 것이라는 막연한 두려움 때문이었다. 심지어 조별과제는 단기적일지 몰라도 팀프로젝트는 장기적인 측면의 의미가 더 강하기 때문에 더 두려워했던 것일지도 모른다. 하지만 이번 강의를 더 잘 이해하기 위해, 팀프로젝트를 피하는 것보다는 도전해보는 것도 나쁘지 않을 것이라는 생각이 들었다.
또한 이번 달 강의들을 들으면서, 이미 알고 있던 개념들은 다시 한 번 복습하며 더 확실하게 개념을 이해할 수 있었고 새롭게 배운 개념들은 이해하기 위해 여러 번 보고 강의를 들으며 이해할 수 있었다. 특히 미분적분학에서 배우는 개념은 인공지능의 학습에 있어 가장 중요하다고 해도 과언이 아닐 정도로 중요하니 더욱 열심히 학습할 것이다.
3rd Month:
이번 달에는 확률과 통계의 개념들에 대해서 배웠다. 이 단원을 학습하면서 확률과 통계과 인공지능과 어떤 연관이 있는지에 대해 곰곰이 생각해보았다. 앞에서 배운 part1과 part2에 비해 좀더 실생활과 관련이 있는 단원이기에 재밌게 공부할 수 있었다. 단순히 코딩으로 이해하는 것을 넘어서서 어떤 방식을 거쳐서 답이 도출되는지에 대해 탐구했다. 다만, 어려웠던 부분은 코드가 sage에서 R코드로 바뀌었기 때문에 코드에 대해서도 새롭게 공부해야하는 부분이였다. 또, 아쉬운 부분은 이 과목의 학습은 꾸준히 했으나 매주 OH와 QnA를 성실히 참여하지 못한 부분이였다. 마지막 남은 Last Month에는 이 부분을 보충하도록 노력해야겠다.
이번 달에 배운 개념들은 ‘확률과 통계’의 개념들이다. 이 개념은 인공지능이 가치 판단의 기준을 세우는 데 큰 도움이 되기 때문에 반드시 학습해야 하는 것이다. 그렇기에 그 개념들을 정리하면서 레포트 작성에 주의를 많이 기울였다. 문제를 풀 때 변수들을 변형시키면서, 어떻게 하면 답을 도출할 수 있는지보다 어떤 방식으로 답이 도출되는 것인지를 더 집중적으로 탐구했다. 다른 과제들에 밀려 이 과목의 학습을 미루지 않기 위해 매주 OH에 참여하며 내가 배웠던 개념들을 상기시키는 것은 물론, 앞으로 이 과목의 학습을 게을리하지 않도록 스스로를 다그쳤다.
확률과 통계에서 가장 인상깊었던 개념은 ‘공분산’이다. 1학년 2학기 때 확률과 통계 과목을 학습했었는데, 낯선 개념들이 우후죽순 쏟아져 나오면서 상당히 고생했었고 그 때 고생했던 개념 중 하나가 바로 ‘공분산’이였다. 여러 확률변수 사이의 상관계수를 보여주는 공분산을 다시 한 번 학습하니 이해하기 쉬웠다. 과거에 배운 개념들 덕분에 이번 과목에서 큰 도움이 되었다. 다음에 배울 개념들은 완전히 새로운 것으로 알고 있는데, 지금과 같은 마음가짐이라면 학습하는 데 있어 큰 어려움이 되지 않을 것이다.
- Midterm 2020/04/23: 오랜만에 다시 배우는 선형대수학과 미적분 내용을 보면서 반갑기도 하고, sage를 이용하여 이미 알고있던 것을 실험해보고 답을 구하는 것이 신선한 경험이었습니다. 기억하실지 모르겠지만, 전 예정돼있던 지난 학기에 졸업을 못 해서 한 학기를 더 다니는 중입니다. 코로나 사태로 인해 온라인 수업이 많아지고, 중학교 고등학교 학생들이 학원에 있는 시간이 많아지면서 굉장히 바쁜 2달 정도를 보냈습니다. 틈틈이 수업은 들었는데, qna에 참석한다던가 이런 활동은 전혀 못 했네요. 심지어 중간고사 기간도 착각하여 놓쳐버렸습니다. 앞으로라도 최대한 열심히 참여해보려고 합니다. 이런 기회를 주셔서 감사합니다.
- Final - 중간고사 보고서를 쓸 때 까지만 해도 이제부터라도 열심히 해야겠다는 마음이 작심삼일처럼 바쁜 생활속에 사라져 버렸습니다. 그러다 과목을 포기하기 까지 이르렀는데요. 보내주신 메시지를 보고, 제출이라도 할려고 합니다. 한 학기동안 잘 참여하지 못하여 죄송합니다. (D)
Last Month (Final):
이번 2학년 1학기를 온라인 강의로 지내면서, ‘인공지능을 위한 기초수학’을 학습해온 시간은 정말 의미 있는 시간이 되었다. 6월에 배운 ‘빅데이터와 인공지능’ 파트는 지금까지 배워온 것들을 모두 동원해야 학습할 수 있었다. 선형대수학을 학습할 때 배웠던 특잇값 분해와 적분은 물론, PCA까지 사용되는 것은 물론 그 안에서도 새로운 개념을 학습해야지 인공지능 개발을 이해할 수 있게 된다.
인공지능 파트를 학습하면서 놀라웠던 것은 크게 두 가지였다. 첫 번째는 인공지능을 학습시키는 방법이 단순히 한 가지가 아니었다는 것이다. 지도학습은 물론 비지도학습, 그리고 강화학습까지 정말 다양한 학습 방법이 있음을 알았다. 그리고 두 번째는 인간의 뉴런을 완벽하지는 않지만 그 구조를 구현해 낸 후 이를 바탕으로 인공지능을 개발했다는 것이다. 단순히 엄청나게 많은 코드로 이루어졌다고 생각했는데, 상당히 과학적으로 만들어졌다는 것이 놀라웠다.
앞으로 인공지능 개발에 참여하고 싶은 나로서는 매우 중요하고 평생 기억해야 할 것들을 이번 학기에 원없이 배웠다. 물론 전부 배운 것은 아니겠지만 충분하다 못해 넘치도록 많은 지식들을 얻었다고 생각한다. 다른 친구들에게도 꼭 추천하고 싶다.
이때까지 배워왔던 것을 종합하여 마지막 단원을 학습한 시간은 정말 의미 있는 시간이었다. 이제야 flip-flop 의 수업방식에 대해 감을 잡아가는 데 벌써 마지막 달이 되어버려서 아쉬웠다. 동료 분들이 문의 게시판에 올려 놓은 글들을 읽어보면서 여러 수준높은 지식들을 접해서 신기했고, 한편으로는 놀라웠다. 그리고 이번에 가장 놀라운 것은 나랑 같은 20학번이면서 A+학점을 노리는 학우분이 있는 것이였다. 만약 다음에 이런 형식의 수업을 듣게 된다면 이번경험을 잘 살려서 좋은 학점을 받도록 노력해야겠다. 다른 일반적인 수업과 달리 단순히 수업을 듣고 과제를 해결하는게 아니라 함께 지식을 공유해 나간다는 점이 의미있었다. 그리고 인공지능에 대한 전반적인 지식들을 배울 수 있어서 굉장히 좋은 수업을 골랐다고 생각한다. 마지막으로, 끝까지 이 수업을 놓지 않게 격려해준 교수님께 감사의 말을 전하고 싶다.
Last Month (Final): 참여를 많이 하지 못한 것이 가장 안타까웠다. 특히 후반부에 개인적인 일들이 생겨서 참여와 질문을 많이 하지 못했다. 예제들을 풀면서 이해가 쉬워졌다는 느낌을 받았다. 그래서 PBL 보고서를 쓸 때마다 빈칸 채우기에 급급한 느낌이 드는 것 같아서 아쉬웠다. 하지만 그때마다 내가 지금까지 무엇을 배워왔고 무엇을 해왔는지 다시금 새길 수 있는 시간들이었다.
Last Month (Final):
인공지능은 현재 세대들한테 매우 중요한 문제이자 기회입니다. 인공지능을 잘 이용하는 사람들이 결국 생존할 수 있다고 생각합니다. 그렇기에 위의 강좌는 저에게 도움이 많이 되었습니다. 인공지능의 기본 수학적인 원리에 대해서 알게 되었고 또 이것들을 어떻게 활용하는지도 알게 되었습니다. 물론 기초적인 내용들만 배운것이기 때문에 아직 배워야 할것들이 매우 많지만 인공지능을 위한 기초수학이라는 강좌가 앞으로 배울것들에 대한 발판이 되어서 더 잘 공부할 수 있으면 좋겠습니다.
3rd Month: 제가 이 수업을 듣게 된 이유였고 평소에 관심이 있던 빅데이터, 통계 부분에 대해서 다시 복습하는 느낌이었습니다. 그래서 훨씬 더 주의 깊고 또 Sage, R을 통해서 풀이 과정을 확인하는 단계가 유익했던 것 같습니다. 또한 이를 Report 형식으로 재구성하여 다시 확인을 하는 과정 또한 좋았습니다.
Last Month (Final): 기계학습, 딥러닝 등 실생활에서 많이 쓰이고 있는 기술들에 대해서 수학적으로 접근할 수 있는 기회가 된 것 같습니다. 앞으로 이 수업에서 배운 것을 토대로 현업에서 제대로 활용할 수 있으면 좋을 것 같습니다. 수업에 많이 참여를 못해서 아쉬운 부분도 있었지만, 좋은 교수님 지도하에 학기를 끝마칠 수 있어서 감사했습니다. [The End]
Basic Math for AI 2020년 1학기 (i-campus) 강의 목록 [기록]
http://matrix.skku.ac.kr/math4ai/ http://matrix.skku.ac.kr/math4ai-tools/
KMS-AI-Talk-인공지능이란무엇인가? by SGLee (30분) 2020-06-05 https://youtu.be/8oTM9n5OUBY
Math4AI 인공지능 수학 목록 http://matrix.skku.ac.kr/math4ai-tools/

01|1주차 (0주차 + 1주차)
0주차-0차시 - Preview : Math4AI- 교재 입니다^^PDF
0주차-1차시 : 인공지능을 위한 기초수학 0-1강 (강좌소개)
0주차-2차시 : 인공지능을 위한 기초수학 0-2강 (강의운영-강의계획서-평가방법 소개) https://youtu.be/BlOMeZZqq7I 16분
0주차-3차시 : 인공지능을 위한 기초수학 0-3강 (교재소개, 서문, 목차, Math & Coding 실습)
0주차-4차시 : 인공지능을 위한 기초수학 0-4강-개론
0주차-5차시 : 인공지능을 위한 기초수학 0-5강-선형대수학 개념정리 (Big Picture) https://youtu.be/3tBXcnxZb8M 39분
1주차-1차시 : 인공지능을 위한 기초수학 1-1강 (선형대수학 1)
1주차-2차시 : 인공지능을 위한 기초수학 1-2강 (선형대수학 2 벡터, 정사영, 최단거리)
1주차-3차시 : 인공지능을 위한 기초수학 1-3강 (선형대수학 3 선형연립방정식, 행렬)
02|2주차
1차시 : 인공지능을 위한 기초수학 2-1강 (선형대수학 3 역행렬, 행렬식)
2차시 : 인공지능을 위한 기초수학 2-2강 (선형대수학 3 기저, 차원)
3차시 : 인공지능을 위한 기초수학 2-3강 (선형대수학 4 최소제곱해, QR분해)
4차시 : [필독] Math4AI-인공지능-강의계획서-설명 5차시 : Math-Coding 설명 1 (풀이) Math-Coding-HW 설명 1
6차시 : [참고 only] Google 검색 엔진속의 수학, 6차시 [참고 only] Google 검색 엔진 속의 수학
03|3주차
1차시 : 인공지능을 위한 기초수학 3-1강 (6강) (선형대수학 5 선형변환)
2차시 : Math4AI 3-2강 (7강) (선형대수학 6 행렬의 대각화)
3차시 : Math4AI 3-3강 1st Month 과제 (Sample) : PBL 보고서 Sample (3-최진호)
5차시 : 참고자료 [심화 : 최소제곱법], 5차시 참고자료 [심화 : 최소제곱법] 6차시 : [참고자료] 최적화 이론의 역사공개
04|4주차
1차시 : Math4AI 4-1강 (8강) (선형대수학 7 SVD, 특잇값분해)
2차시 : Math4AI 4-2강 (9강) (선형대수학 8 이차형식)
3차시 : Math4AI 4-3강 (9-1강) TensorFlow 소개 [10-Project-샘플-6-박지원팀]
4차시 : 인공지능-강의계획서-설명-03-20
5차시- Part 1 (복습 1) 1-2주-강의-요약과 HW공개, Math4AI, WebEx Office Hour 20200327 학생과의 질문과 답변
행렬과 데이터 https://youtu.be/HTtQCP3r1j4 34분
05|5주차
1차시 : 인공지능을 위한 기초수학 10강 (미적분 1 극한과 도함수)
2차시 : 인공지능을 위한 기초수학 11강 (미적분 2 미분의 응용)
3차시 : 인공지능을 위한 기초수학 12강 (미적분 3 적분)
4차시 : 1st Month 과제 (Sample) : PBL 보고서 Sample [1학년-엄지민-Final-PBL]
5차시 : 1st Month 과제 (Sample) : PBL 보고서 Sample [5-송소영-Final-PBL], Math4AI-Part2-Preview
6차시 : 4월 3일 금요일 10시반 WebEx OH Math4AI WebEx OH https://youtu.be/mUj2PZdNKzk
7차시 : Math4AI-Part2-Preview, https://youtu.be/RwTb4ltUwA0
06|6주차
1차시 : 인공지능을 위한 기초수학 13강 (미적분학 4 다변수함수)
2차시 : 인공지능을 위한 기초수학 14강 (미적분학 5 편도함수와 그래디언트)
3차시 : 인공지능을 위한 기초수학 15강 (미적분학 6 함수의 극대, 극소)
4차시 : 인공지능-GitHub 소개 [Project-5-황태식팀]
5차시 : 1st Month 과제 (Sample) : PBL 보고서 Sample [2-최준오-Final-PBL]
6차시 : WebEx OH 4월 10일 10시반 - 11시 40분 (시작 8초 후부터), https://youtu.be/qxea3Z_mG1g
07|7주차
1차시 : 인공지능을 위한 기초수학 16강 (미적분 7 Gradient Descent Algorithm)
2차시 : 인공지능을 위한 기초수학 17강 (미적분 8 중적분)
3차시 : 인공지능을 위한 기초수학 29강 최진호 1팀: Final ProjectWEB LINK
4차시 : 인공지능을 위한 기초수학 29강 김두영 2팀: Final PBL Project AI WEB LINK
5차시 : Math4AI-OH-2020-4-17, 중간고사 대비 복습과 추가 설명 https://youtu.be/1tOsyIKGzGs
08|8주차 [중간고사 -시험] 1차시 : [중간고사] 시험
2차시 : [참고자료] 동아시아의 위대한 수학자
3차시 : [참고] 동아시아 수학사
4차시 : [읽을거리] 인공지능(Artificial Intelligence)과 대학수학교육PDF
5차시 : Week 7 2020년 4월 24일 금요일 OH 토론 (동영상)입니다. https://youtu.be/uGWZZHWJDD8
09|9주차
1차시 : 인공지능을 위한 기초수학 18강 (통계 1 통계학과 R)
2차시 : 인공지능을 위한 기초수학 19강 (통계 2 순열, 조합, 확률)
3차시 : Project-1234-AI
4차시 : 고등학교 인공지능 수학 교과서-정책과제-WebEx-회의-2020-5-1
10|10주차
1차시 : 인공지능을 위한 기초수학 20강 (통계 3 확률변수)
2차시 : 인공지능을 위한 기초수학 21강 (통계 4 이산확률분포)
3차시 : 4-황태식-Final-PBL (10분6초) 4차시 : 5-김두영-Final-PBL (11분)
5차시 : 교육부/한국과학창의재단 <인공지능 고등학교 수학 교과서> 시안 회의
6차시 : 2020-S-AI-Midterm-채점 - 결과PDF
7차시 : Math4AI 2020 05 08 OH, https://youtu.be/S3xT1_SXH2c
11|11주차
1차시 : 인공지능을 위한 기초수학 22강 (통계 5 연속확률분포)
2차시 : 인공지능을 위한 기초수학 23강 (통계 6 공분산과 상관계수, 데이터 활용의 실제)
3차시 : Math4AI, WebEx OH 2020-5-15 https://youtu.be/GnOyEOduEOc
12|12주차
1차시 : 인공지능을 위한 기초수학 24강 + 25강 (빅데이터와 인공지능 1-2, 개론, PCA)
2차시 : 29강-PBL-설명 https://youtu.be/vVEEBUaHgfA
3차시 : 인공지능 고등학교 수학 교과서 (시안) 모습은 어떻게 되는 것이 바람직 할 것인가?
4차시 : [5월 29일(Friday) WebEx OH AM 10:30 - (1시간), [OH] https://youtu.be/tMk37SNJVeE
13|13주차
1차시 : 인공지능을 위한 기초수학 26강 (빅데이터와 인공지능 3, 신경망)
2차시 : 인공지능을 위한 기초수학 26-1강 part 2, 인공신경망(은닉망의 수학)
3차시 : [보충설명] 확률론의 역사 4차시 : [보충설명] 통계학의 탄생
5차시 : WebEx Math4AI-2020-5-22-OH, https://youtu.be/vVEEBUaHgfA
6차시 : 2020-06-05, 오늘 학생 면담 동영상입니다. Final Exam 준비에 대하여 ... https://youtu.be/ba7LXrCS5dw
14|14주차
1차시 : 인공지능을 위한 기초수학 28강 (빅데이터와 인공지능 5, Project)
2차시 : [보충설명] 최적화 이론
3차시 : 참고 : PBL(Project/Problem Based Learning) 수업이란? (대학교육센터)
4차시 : KMS-AI-Talk2-인공지능에 필요한 수학-SGLee
15|15주차 [기말고사 -TakeHome exam, Final PBL 발표]
1차시 : 특강-BigData-ML-AI
2차시 : [교육부] 인공지능 수학- 교과서 - 개발 과제 - WebEx - 회의 - 2020-4-16
3차시 : STRONG KOREA Forum 2020 – YouTube WEB LINK
4차시 : Final PBL 7분 발표 <안주현> 등 [기말고사 –Take Home exam, Final PBL 발표] https://youtu.be/IQXmWGu5hhI
5차시 : Final-PBL-발표-2020학번-1학년-신입생-김예훈 발표 https://youtu.be/3e0VybhOS1U
6차시 : Final-PBL-발표-한병욱 발표 https://youtu.be/w2bw7I-jVEM
[Matrixtopia] Math4AI PBL 보고서 발표 2학년 김용훈 https://youtu.be/kNFxp8SP5Rc
KMS-AI-Talk2-인공지능 에 필요한 수학은? by SGLee (33분) 2020-06-08 https://youtu.be/KP1WSi69Mu0
Copyright @ 2020 SKKU Matrix Lab. All rights reserved.