저는 수학의 즐거움에서 사람들과 수학 공부를 하고 있습니다. 수학 공부를 하다 보면 같은 내용도 사람마다 다르게 설명하는 흥미로운 순간들이 옵니다. 그리고 처음 만나는 개념은 레퍼런스를 찾아보고 다양한 설명을 보면서 정체를 파악하기도 합니다. 수학 공부 자료를 한 곳에 모아두고자 이 글을 작성합니다. 이 글의 목록은 지속적으로 업데이트 됩니다. 1. 유튜브 채널, 유튜브 playlist Mathemaniac MathemaniacHi, I am Trevor. This channel discusses maths (or physics) concepts that I am passionate about, and tackles them in a novel perspective. For example, most p..
위 3차원 그래프를 보자. 매트랩의 peaks를 이용하면 간단히 그릴 수 있는 곡면이다. 점 $A$에서 움직일 수 있는 방향 중 경사가 가장 가파른 방향은 아래와 같이 주어진다. $$\nabla f = \left[ \frac{\partial f(x,y)}{\partial x}, \frac{\partial f(x,y)}{\partial y} \right]^T$$ 좋은 것에는 이름이 있다. $\nabla f$는 $f$의 gradient라고 부른다. 이름을 봐도 확실히 경사와 연관은 있어보인다. 그런데 왜 하필이면 각 방향 편미분을 성분으로 갖는 벡터가 가장 가파른 방향이 될까? 다루기 좋은 "이쁜" 함수라면 한 점을 계속 확대하다보면 언젠가 평면이 된다. 확대해도 평면이 되지 않는 "못생긴" 함수 또는 점..
(어디까지나 저 개인의 의견을 적은 것일 뿐입니다. 다른 의견이 있을 수 있고, 제 주장이 틀렸을 수도 있습니다. 감안하여 읽어주시기 바랍니다. 일부 표현이 다소 불편할 수 있다는 점 미리 양해 드립니다.) 기계공학 전공생분들이 자격증 취득에 공들이는 모습을 종종 봅니다. 어떤 자격증을 따는 것이 좋은지 고민 및 질문하기도 하고요. 결론부터 말씀드리면, 테크니션(기능공)이 인생의 목표라면 자격증 취득을 말리지는 않겠습니다. 다만 정말 인생의 목표가 테크니션인지 진지하게 생각해봤으면 좋겠습니다. 자격증은 소위 지식을 얼마나 잘 외우고 있는지 기억력을 테스트하는 것입니다. 물론 기억력이 중요한 업무도 세상에는 존재하겠죠. 하지만 사회생활에서 진짜 중요한 것은 기억력보다는 사고력과 판단력입니다. 통상 '일머..
5. CPU 성능 향상 기법나의 학부생 시절에는 컴퓨터 부품을 직접 사서 조립하는 것이 유행이었다.사실 완제품 말고는 그것밖에 방법이 없었다.조립 서비스 같은 것이 없었기 때문이다.특히 서멀 그리스 바르는 것이 정말 쉽지 않았던 기억이 난다.그 와중에 CPU를 더 빠르게 하겠다고BIOS 들어가서 오버클럭 활성화시키고그랬다가 컴퓨터 안 켜지기도 했던 기억도 난다.뭐 대단한 걸 하겠다고 그 난리를 쳤을까 싶다.CPU는 이미 빠르다.작업 수행의 최소 단위가 나노초 단위이다.하지만 인간의 욕심은 끝이 없다.더 잘 굴리고 싶다!이번 장의 주제는 멀티코어, 멀티스레드이다.5.1 빠른 CPU를 위한 설계 기법클럭을 높인다고 장땡이 아니다.발열 때문이다.더 좋은 방법이 있으면 좋겠다.한 가지 방법은 뇌를 여러 개 만드..
4. CPU의 작동 원리CPU의 작동 원리에 대해서는 이미 1장에서 살펴보았지만,이번 4장에서 보다 자세히 알아본다.좀 어렵다.안전띠 꽉 매라고, 친구들.4.1 ALU와 제어장치4.1.1 ALUALU는 이렇게 생겼다.출처: https://huimang2.github.io/etc/computer-architecture인터넷에서 ALU를 찾아보면 많은 그림들이 나오는데,이 그림이 책의 그림과 가장 비슷해보인다.레지스터로부터 피연산자(오퍼랜드)를,제어장치로부터 제어신호를 받아서,무언가 연산한 후에,상태 플래그를 상태 레지스터로,연산 결과를 누산기로 보낸다.상태 플래그는 아래의 정보들을 담고 있다.부호 플래그: 연산 결과가 양수인지 음수인지?제로 플래그: 연산 결과가 0인지 아닌지?캐리 플래그: 연산 중 올림수..
사놓고 귀찮아서(...) 안 읽고 있던 수학귀신 책을 읽었다. 그냥 뭐 어린이 책이겠거니~하고 읽었으나 의외로 재밌는 내용들이 있었다. 몇 가지 기록으로 남겨두고 싶은 것들을 적어둔다. 1. 임의의 자연수는 최대 3개의 삼각수의 합이다. (증명) 몇 가지 예시들:\begin{align}51 &= 15 + 36\\83 &= 10 + 28 + 45\\12 &= 1 + 1 + 10\\\end{align} 우선 $8n+3$ 꼴의 자연수는 항상 3개의 홀수 제곱수의 합으로 나타낼 수 있다.[1][2] 증명[3]은 너무 어려워서 이해를 포기했다(...). 이것을 받아들이면, $8n+3$은 아래와 같이 쓸 수 있다. \begin{align}8n+3 &= (2a+1)^2 + (2b+1)^2 + (2c+1)^2 \\&..
2변수 함수의 극값의 2계도함수 판정법에 대해 아주 재미없는 글을 쓴 적이 있다. Positive-definite matrix니 eigenvalue니 하는 것들을 죄다 가져와서 설명했었는데, 그럴 필요가 없음을 오늘 깨달았다. 이 글의 아이디어는 칸 아카데미에서 가져왔으나, 논증 과정 일부는 변형했다. • 2변수 함수의 점 $(x_0, y_0)$에서의 quadratic approximation은 아래와 같다. \begin{align}f(x, y) \cong f(x_0, y_0) &+ (x-x_0, y-y_0) \nabla f(x_0, y_0) + \\& \frac{1}{2} (x-x_0, y-y_0) H_f(x_0, y_0) (x-x_0, y-y_0)^T\end{align} • 여기서 $H_f$는 He..
재밌는 글을 봤다. list.extend와 list.iadd는 표면적으로는 동일해 보인다. 그런데 함수 내에서 global 변수를 바꾸려고 하면 동작이 달라진다. 에러는 global 변수를 바꾸려고 했다는, 흔히 볼 수 있는 에러이다.문제는 왜 두 개가 다르냐는 것인데, x += something은 객체의 iadd 메서드를 호출하는 것인데, 사실 아래의 코드가 실행된다. x = x.__iadd__(something) 여기서 assignment가 문제가 된다. 흥미로운 점은, 아래 코드는 문제 없이 잘 돈다. 여기에는 assignment가 없기 때문이다. x += something은 __iadd__를 호출하고, __iadd__는 self를 반환하므로, x += something은 x의 객체가 바뀌..
3. 명령어컴퓨터가 다루는 정보는 데이터와 명령어로 구성된다.이번 장은 명령어다.데이터만 있어서는 아무것도 할 수 없다.100과 200만 주면, 이걸 더해야 할지 곱해야 할지 알 수 없다.무언가 시켜야 한다. 이것을 우리는 명령어라고 부른다.3.1 소스 코드와 명령어CPU가 일을 하기 위해서는 모든 것이 0과 1로 변환되어야 한다.데이터는 물론 명령어도 마찬가지이다.분명 파이썬 코드는 영어로 쓰여 있다.그렇다면 파이썬 코드도 어떤 과정을 거쳐 2진수로 변환될 것이다.그런데 뭔가 좀 묘하다.데이터든 명령어든 2진수로 변환되는데CPU는 이것이 데이터인지 명령어인지 어떻게 알까?그것을 알기 위해 명령어의 번역 과정에 대해 알아보자.3.1.1 저급 언어와 고급 언어두 줄 요약저급 언어: 기계어, 어셈블리어고급 ..
2. 데이터컴퓨터는 하드웨어이고, 전기와 소프트웨어로 돌아간다.소프트웨어는 정보이다.정보는 명령어와 데이터로 구성된다.명령어는 "이거 해"라는 문장이고,데이터는 "이거"에 해당하는 재료이다.이번 챕터는 데이터에 대해 다룬다.챕터 제목이 참 짧다.작가 김훈의 간결한 문장이 떠오른다.나 역시 만연체를 쓰지 않도록 항상 조심하고 있다.2.1 0과 1로 숫자를 표현하는 방법"컴퓨터에서 모든 것은 0과 1로 표현된다."분명이 누구나 한번쯤 들어봤을 법한 말이다.그런데 이상하다.지금 내가 쓰고 있는, 여러분이 읽고 있는 이 글씨는 0과 1이 아닌데?파이썬 코드는 영어인데?모든 것이 0과 1이라는게 무슨 말일까?0과 1이 2진수binary임은 어려운 내용이 아니다.책에도 전구로 잘 설명되어 있다.하지만 진짜 궁금한 ..