
심심해서 매트랩으로 게임을 하나 만들어봤습니다. Coin Sort라는 게임을 하다가 "이거 매트랩으로 비슷하게 만들 수 있겠는데?" 싶었거든요. 코드는 깃헙 페이지에서 받으실 수 있습니다. 룰은 간단합니다. ● number_stack_game을 실행하면 게임이 시작됩니다. ● 아래 중 하나를 입력할 수 있습니다. ○ 엔터: 숫자가 내려와서 보드를 채웁니다. ○ 숫자숫자(예: 12, 53): 첫 번째 숫자 열에서 두 번째 열로 숫자를 옮깁니다. ■ 첫 번째 열의 맨 위와 두 번째 열의 맨 위는 같은 숫자여야 합니다. ■ 같은 숫자들의 덩어리 단위로만 옮깁니다. ■ 그냥 한번 해보시면 압니다. ○ m: merge를 뜻합니다. 한 가지 숫자로 꽉 찬 열이 있다면 1만큼 높은 숫자 2개로 바꿉니다. ■ 열이 4..

이 글은 성공기보다는 실패기에 더 가깝다. 어쨌든 삽질의 기록이라도 남겨두고자 한다. 인터넷 기사를 읽다 보면 "오, 이 사람 글 재밌는데?"라는 생각이 들 때가 있다. 그래서 그 사람이 쓴 글을 검색해서 찾아 읽는다. 그런데 이 검색이 잘 되지 않아 종종 답답하다. 동아사이언스에서 재밌는 글을 읽었다. 하버드 의대생도 틀리는 문제?라니... 일단 기사 제목부터 낚시성이 짙은 것이 확 끌리지 않는가? 제목을 보아하니 시리즈물인 것 같다. 글쓴이는 정신과 전문의 박한선 씨라는데, 꽤 오랫동안 글을 올리고 있는 듯 하다. 이 분의 글을 더 읽고 싶어서 기사 맨 밑에 있는 "모든기사보기"를 클릭했으나 동작하지 않는다. 안되잖아? 이럴 땐 뭐다? 어... 만족스럽지 않다. 일단 이 분, 글을 너무 많이 썼고 너..

(참고: quantifier를 양화사라고 부르기도 하는데, 개인적으로 한정사라고 부르기를 더 좋아한다.) 아래 두 명제를 보자. For x,y∈R, 1) ∀x,∃y,x+y=02) ∃y,∀x,x+y=0 둘 중 하나만 참이다. 어느게 참일까? 명제는 앞에서부터 읽어야 한다. 그리고 각각의 한정사는 뒤의 모든 내용을 한정짓는다. 1) ∀x,∃y,x+y=0 임의의 실수 x에 대해서 뒤의 내용이 참이라는 뜻이다. 즉,임의의 실수 x에 대해 어떤 실수 y가 존재하여 x+y=0을 만족한다.라는 뜻이다. 간혹 아래와 같이 번역되는 경우가 있다.임의의 실수 x에 대해 $x+y=0..

간단한 예제를 통해 K-최근접 이웃 알고리즘(K-Nearest Neighbor; KNN)에 대해 알아보고자 한다. 본 예제의 내용은 한빛미디어의 책 혼자 공부하는 머신러닝+딥러닝의 내용 일부를 매트랩으로 구현한 것이다. 본 예제 실행을 위해서는 Statistics and Machine Learning Toolbox가 필요하다. 1. 데이터 준비 % 빙어(smelt)의 길이와 무게 smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]; smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7..

수치해석 강의 중 굉장히 좋은 질문을 받았다. 왜 fprintf를 쓸 때에는 뒤에 세미콜론을 안 붙여도 되나요? 관찰력이 좋거나 호기심이 많은 사람이라면 한번쯤 가져봄직한 의문이다. 이 질문에 대한 힌트는 함수의 반환값 존재 여부와 반환값 무시 여부에 있다. 우선 세미콜론은 연산 결과를 출력하지 않을 때 사용한다. >> e = exp(1) e = 2.7183 >> e = exp(1); >> 등호 =도 대입연산자라는 연산자이므로 대입연산의 결과가 출력된다. 그 결과를 보고 싶지 않다면, 즉 변수 e에 값을 대입만 하고 그 결과를 보고 싶지 않다면 세미콜론을 붙이면 된다. 반환값이 없는 함수를 호출하면 세미콜론 여부와 무관하게 아무것도 출력되지 않는다. function fun(x) x = x^2; end >..

(본 글은 수학의 즐거움 직문수 4강을 참고하여 작성한 것입니다.) 아래와 같은 함수 f:A→B가 있다. 함수가 갖춰야 할 조건을 모두 갖췄으므로 분명히 함수가 맞다. f:A→B의 역함수 g:B→A는 아래 조건을 만족해야 한다. g∘f=idA f∘g=idB idA와 idB는 각각 A에서 A로 가는 항등함수, B에서 B로 가는 항등함수를 말한다. 합성 함수의 결과가 항등함수가 되어야 한다고 하니, 그냥 심플하게 뒤집어서 붙여보자. 아차, g가 함수가 아니다. g가 함수이려면 어떻게 해야 할까? 우선 2와 3이 모두 b를 가리..

매트랩의 fprintf와 파이썬의 f-string 문법은 닮은 부분이 많다. 사실 거의 같다고 봐도 무방할 정도이다. f-string 문법이 제대로 정리된 페이지가 의외로 없는 듯하여, fprintf와 비교할 겸 만들어보았다. 아래에서 프롬프트가 >>인 것은 매트랩, >>>인 것은 파이썬이다. f-string 문법은 본 문서에 소개한 것 외에도 더 있는데, fprintf와 1:1로 매칭되는 것들만 본 문서에 정리하였다. 1. 그냥 출력 >> disp(256) 256 >>> print(256) 256 2. 정수 >> fprintf('%d\n', 256) %10진수 256 >> fprintf('%o\n', 256) %8진수 400 >> fprintf('%x\n', 256) %16진수 100 >>> print..

수학에서 공리는 왜 필요할까? 수학의 모든 명제는 근거가 있어야 한다. 명제 A를 증명하기 위해서는 근거가 되는 다른 명제 B가 있어야 한다. 즉, "B에 의해 A가 참이다."라는 문장으로 서술되어야 한다. 그런데 명제 B 또한 참이기 위한 근거가 필요하다. 명제 B가 참이 되는 이유를 명제 C라고 하자. 그렇다면 수학의 각 명제는 아래와 같은 논리로 연결될 것이다. 그런데 우리는 아래와 같은 순환논리에 빠지기는 원치 않는다. A가 참인 이유는 B 때문이고, B가 참인 이유는 C 때문이고, C가 참인 이유는 A 때문이다…와 같은 순환논리는 결국 "A가 참인 이유는 A가 참이기 때문이다"라는 항진식tautology에 지나지 않기 때문이다. 아래 대화를 보자. Q. 여기 이디야 커피 어디 있어요? A. 본죽..

함수 핸들에 대해 얘기해보고자 한다. 함수를 어떤 동작function을 하는 동사verb로서가 아니라 객체object로 다룰 수 있는 명사noun로서 취급하는 것은 개념의 전환이 필요한 부분이다. 이는 프로그래밍뿐만 아니라 수학에서도 모두 필요한 아이디어이다. 우리에게 익숙한 함수의 모양은 아래 그림과 같다. 물론 경우에 따라서는 입력이나 출력, 또는 둘 다 없을 수도 있다. 어쨌든 함수는 일동의 동작이다. 그런데 종종 함수를 동작이 아니라 객체로 다루고 싶을 때가 있다. 예를 들어 아래와 같은 질문을 생각해보자 함수 myadd는 입력 인자를 몇 개 받는가? 이 기능을 함수로 만든다면 이런 모양이 될 것이다. 함수명: num_input_args 입력: 함수 myadd 출력: myadd의 입력 인자 개수 ..