본문 바로가기

전체 글24

정규 표현식 (Regular expression) 1 정규 표현식 (Regular expression, Regex) 이란? 정규 표현식은 문자의 패턴을 나타내는 '메타 문자'입니다. '메타(Meta)'라는 단어에서 느낄 수 있듯, 문자를 나타내는 문자라는 뜻입니다. 어떤 특정 텍스트의 특정 패턴을 파악하고자 등장한 문자들로, 1951년 미국의 수학자 Stephen Cole Kleene에 의해 처음 고안되었으며, 1968년에 1. 텍스트 에디터의 특정 패턴을 찾기 위해, 2. 컴파일러의 어휘적 분석을 위해 사용되면서, 크게 유행하기 시작했습니다. 앞으로 파이썬을 이용한 정규 표현식을 다뤄보도록 하겠습니다. Python을 이용한 정규 표현식의 간단한 예제 예를 들어 'Hello, world!'라는 문자열에서 문자가 아닌 부분을 찾고 싶다고 해봅시다. Pytho.. 2023. 12. 3.
전기장과 전기 선속 (Electric Field and Electric Flux) 이전 포스팅 참조 : 전기력, 쿨롱의 법칙과 중첩의 원리 이전에 우리는 원천 전하와 실험 전하 시이에 작용하는 힘, 전기력을 쿨롱의 법칙과 중첩의 원리를 통해 구해봤습니다. 두 물체 사이에 작용하는 힘을 구하기 위해서는 두 물체가 존재해야만 한다는 점은 아주 당연한 일입니다. 하지만, 만약 하나의 물체가 어떤 분포를 가지고 있는지만 알고 있을 때, 아직 배치하지 않은 실험 전하에 작용하는 힘을 알 수 있다면 어떨까요? 이 생각에서 나온 개념이 바로 '전기장 (Electric Field)'입니다. 전기장 (Electric Field) 이전 포스팅에서 진공에서 어떤 전하 밀도($\rho$)를 가지는 원천 전하와 실험 전하($Q$) 사이에 작용하는 전기력은 다음과 같다는 걸 알아봤습니다. $$ \mathbf{.. 2022. 12. 21.
전기력, 쿨롱의 법칙과 중첩의 원리 (Electric Force and Superposition Principle) 전기력 (Electric Force) '전기력(Electric force)'이란, 질량을 가진 두 물체가 만유인력으로 서로를 끌어당기듯, 전하를 가진 두 물체 사이에서 나타나는 힘을 말합니다. '전하(Charge)'라는 물리량은 +, - 두 극성으로 나뉘며, 같은 극성끼리는 서로 밀어내고 다른 극성끼리는 서로 잡아당기는 성질을 가지고 있습니다. 전자기학이라는 학문은 크게 두 가지 경우로 나뉘는데, 첫 번째는 전하가 정지한 상태를 기술하는 것 (정전기학), 두 번째는 전하가 움직이는 상태를 기술하는 것입니다.(전기 역학) 오늘은 전하가 정지한 상태를 먼저 공부해 보도록 하겠습니다. 쿨롱의 법칙 (Coulomb's Law) 진공상태에서 원점으로부터 $\mathbf{r}_1$만큼 떨어진 위치에 전하량 $q_1.. 2022. 11. 26.
파이썬으로 Hotstring 기능 구현하기 2 이전 포스팅 참조 : 파이썬으로 Hotstring 기능 구현하기 1 파이썬으로 Hotstring 기능 구현하기 1 파이썬으로 'Hotstring' 기능을 구현해보겠습니다. 여기서 Hotstring 기능이란, 예를 들어 'hw'만 입력하고 스페이스를 치면, 'Hello, world!'와 같이 완성된 단어나 문장을 만드는 방법이라고 정의하겠습 idiqpnm.tistory.com 이전 시간에 Hotstring의 기본 기능을 만들었습니다. 이번엔 해당 코드를 사용하면서 발생할 수 있는 불편한 점들을 개선해볼까 합니다. 이전 시간에 만들어놨던 코드를 기본 소스 코드로 사용하겠습니다. 다른 문장 타이핑 도중 hotstring 기능 동작으로 인한 문제 이전에 우리는 키워드와 해당 키워드로부터 저장된 완성된 문장을 출.. 2022. 9. 3.
파이썬으로 Hotstring 기능 구현하기 1 파이썬으로 'Hotstring' 기능을 구현해보겠습니다. 여기서 Hotstring 기능이란, 예를 들어 'hw'만 입력하고 스페이스를 치면, 'Hello, world!'와 같이 완성된 단어나 문장을 만드는 방법이라고 정의하겠습니다. 하나의 키, 혹은 동시에 두 개 이상의 키를 눌러 특정 기능을 수행하는 'Hotkey' 기능과 차이점을 명확히 하기 위함입니다. 기본 코드 from pynput import keyboard def on_press(key): try: print('alphanumeric key {0} pressed'.format( key.char)) except AttributeError: print('special key {0} pressed'.format( key)) def on_releas.. 2022. 8. 15.
왜 파이썬인가? 오늘은 본격적으로 파이썬을 공부하기 전에 파이썬이란 무엇인가에 대해서 간략하게 짚고 넘어가겠습니다. 누가, 왜 만들었나? 파이썬(Python)은 1991년 귀도 반 로섬(Gudi Van Rossum) 이 발표한 '범용 프로그래밍 언어(General-purpose programming language, GPL)'입니다. GPL이란, 어떤 소프트웨어를 만들 때, 어느 한 영역에만 국한되지 않고, 다양하고 넓은 분야의 영역에서 사용할 수 있는 소프트웨어를 만들 수 있는 프로그래밍 언어라는 뜻입니다. 파이썬 말고도 C, C++, C#, Java, JavaScript, Kotlin, Scala,... 등등 수많은 GPL들이 존재합니다. 이와 반대로 '도메인 특화 언어(Domain-specific programmi.. 2022. 7. 10.
확률 변수의 선형 변환 함수 이전 포스팅 참조 : 확률 변수와 확률 분포, 오늘은 확률 변수의 선형 변환 함수에 대해서 이야기해보겠습니다. 확률 밀도 함수 $f_X(x)$를 따르는 확률 변수 $X$가 있을 때, $X$와 상관성이 보이는 $Y$가 있다고 합시다. 주어진 $X$의 값들을 적절하게 변환하여 $Y$로 표현할 수 있는 선형 함수 $g(X)$가 있을 때, $Y$가 가지는 확률 밀도 함수 $f_Y(y)$는 어떤 모습일지를 구하는 것이 오늘 포스팅의 목적입니다. 이산형 확률 변수의 선형 변환 이산형 확률 변수의 선형 변환은 아주 간단합니다. 예를 들면서 설명해보겠습니다. 값이 -1, 0, 1인 어떤 확률 변수 $X$에 대한 선형 변환 함수 $g(X) = Y = 2X + 1$가 있다고 합시다. 각 값들에 대한 확률 값이 아래와 같을.. 2022. 6. 27.
확률 분포 함수 : 정규 분포(Normal Distribution) 정규 분포 소개 확률 변수 $X$가 평균이 $\mu$, 분산이 $\sigma^2$이고 다음과 같은 정규 분포 확률 밀도 함수 $f(x)$를 가질 때, $$ f(x) = \frac{1}{\sigma \sqrt{2\pi} } e^{\frac{-(x-\mu)^2}{2\sigma^2}}, \quad -\infty < x < \infty \tag{1} $$ $X$를 정규 분포 확률 변수라고 부르고 다음과 같이 표기합니다. $$ X \sim N[\mu, \sigma^2] \tag{2} $$ 정규 분포 확률 밀도 함수 유도 과정 위의 정규 분포 확률 밀도 함수 $f(x)$를 유도해봅시다. 원점이 (0,0)인 2차원 평면상에서 원점을 향해 다트 던지기를 하는 상황을 생각해봅시다. 이 때, 3가지 가정이 필요합니다. 1.. 2022. 6. 18.
2진법의 정수 표현 우리는 실생활에서 10진수(Decimal)에 굉장히 익숙합니다. 10진수란 0~9 사이의 문자들을 이용해 수를 기록하는 방법입니다. 하지만 컴퓨터는 2진법(Binary System)을 이용해 수를 표현합니다. 2진법은 0과 1만으로 수를 표현하는 방법을 말하고, 이때 표현된 수를 이진수(Binary number)라고 부릅니다. 컴퓨터에서 0 혹은 1의 값을 가질 수 있는 하나의 칸을 '비트(Bit)'라고 부르며, 1bit는 자료를 저장하는 가장 작은 단위입니다. 오늘은 컴퓨터가 이루고 있는 자료의 형태인 2진수 체계에 대해서 얘기해보겠습니다. 유래 2진법은 16~17세기 유럽에서 여러 학자들에 의해 연구되었는데 특히 라이프니츠(Gottfried Wilhelm Leibniz)에 의해서 정립되었습니다. 라이.. 2022. 5. 5.
확률 분포 함수 : 지수 분포(Exponential Distribution) 이전 포스팅 참조 : 확률 분포 함수 : 포아송 분포(Poisson Distribution) 이전 포스팅에서 포아송 분포를 유도해보았습니다. 특정 기간 안에서 발생한 사건의 횟수를 기록하기 위해, 이항 분포에서 시간 간격을 촘촘히 잘라 ($n \rightarrow \infty$) 하나의 베르누이 시행을 만들었고, 발생률 $\frac{\lambda}{n}$을 통해 기간 내에 발생한 사건의 횟수를 나타내는 분포를 구할 수 있었습니다. 하지만 때때로 우리는 사건 발생의 횟수가 아닌 얼마나 자주 발생하느냐에 관심이 있습니다. 오늘은 이를 나타내는 '지수 분포(Exponential Distribution)'에 대해서 알아봅시다. 포아송 분포와의 연관성 오늘 우리는 두 사건 사이의 시간 간격에 관심이 있습니다. 이.. 2022. 4. 13.
확률 분포 함수 : 연속 균등 분포(Continuous Uniform Distribution) 이전 포스팅 참조 : 확률 변수와 확률 분포 / 기댓값, 분산, 표준편차, 분위수 연속 균등 분포(Continuous Uniform Distribution) 연속형 확률 분포에서 비교적 간단한 형태를 가진 분포입니다. [a, b] 사이의 값을 가지는 연속형 확률 변수 $X$가 연속 균등 분포를 따른다면, 아래와 같이 표기하고 $$ X \sim U(a, b) $$연속 균등 분포의 확률 밀도 함수 $f(x)$는 다음과 같습니다.$$ f(x) = \left\{ \begin{array}{cc} \frac{1}{b-a} & \text{for }a \leq x \leq b, \\ 0 & \text{for }x b. \end{array} \right.$$면적의 넓이가 1이 되도록(.. 2022. 4. 12.
확률 분포 함수 : 포아송 분포(Poisson Distribution) 이전 포스팅 참조 : 확률 분포 함수 : 베르누이 분포, 이항 분포 베르누이 실험에서 각 베르누이 시행은 성공(1) 혹은 실패(0)로 나뉩니다. 여기서 문제가 발생하는데, 만약 우리가 성공과 실패를 1시간 간격으로 기록한다면, 1시간 내에서 발생한 성공의 횟수를 표현할 수가 없다는 겁니다. 예를 들어 손뼉을 치면 1, 안치면 0을 1시간 간격으로 기록하는 실험이 있다고 합시다. 1시간 안에 손뼉을 한 번 친다면 1을 기록하면 그만이지만, 두 번 이상 치면 1을 기록하기 찜찜해진다는 것이죠. 이를 해결하기 위해선 각 베르누이 시행을 기록하는 시간 간격을 더 잘게 쪼개야 합니다. 1분 간격, 1초 간격,... 가능한 잘게 쪼갤수록 더 좋겠죠. 결국 베르누이 시행의 간격은 무한히 작아지고 총 시행 횟수는 무한.. 2022. 4. 11.
반응형