본문 바로가기

Studying

C/C++ 원주율 계산 프로그램 여기서는 수학 상수 중 하나인 원주율을 계산하는 간단한 프로그램을 소개해볼까 하는데요. 물론 원주율의 값은 이미 잘 알려져 있고 C언어 수학 함수 라이브러리에도 있지만, 단순히 값만 외우는거랑 직접 계산해보는 것은 다르다고 생각했기 때문에 이 포스팅을 하게 되었습니다. 원주율을 계산하기 위한 방법으로는 무한 급수나 몬테-카를로 (Monte-Carlo) 방법등 여러가지가 있습니다만, 여기서는 정적분을 통해서 원주율을 구해 보겠습니다. 이는 역삼각함수 중 하나인 아크탄젠트 함수가 특정한 값을 인자로 받는 경우에, 원주율에 비례하는 값을 돌려준다는 사실을 이용한 방법인데요. 원주율과 삼각함수에 대한 자세한 내용이 궁금하시다면, 다음 포스팅을 참고하면 도움이 되리라 생각합니다. 수학 상식 : 원주율과 삼각함수 .. 더보기
수학 상식 : 원주율과 삼각함수 여기서는 기하학에 관련된 중요한 상수인 원주율과, 과학 및 공학 분야에서 가장 흔하게 접할 수 있는 주기함수인 삼각함수에 대해 얘기해볼까 합니다. 원주율과 호도법 먼저 유클리드 공간에서 원주율을 정의하는 방법과, 각도를 나타내는 방법인 호도법에 대해 알아봅시다. 유클리드 공간이란 간단히 말하자면 두 점 사이의 직선거리를 피타고라스 정리로 구할 수 있는 평탄한 공간을 이야기합니다. 피타고라스 정리가 통하지 않는 비유클리드 공간의 대표적인 예시로 구면이 있죠. 유클리드 공간에서 원을 그렸을 때, 원의 둘레와 지름 사이의 비율은 원의 크기와 무관하게 일정한 값을 가지는데요. 원의 둘레를 지름으로 나눈 일정한 비율의 값이 바로 원주율입니다. 보통 그리스 문자 파이 (pi)로 표시하며, 그 값을 소수점 10번째 .. 더보기
물리학 상식 : 파동-입자 이중성 이번 포스팅에서는 양자역학에서 언급되는 물질과 파동의 이중성 (wave-particle duality)에 대해 이중 슬릿 실험과 함께 짚어봅시다. 입자의 파동인 물질파를 기술하기 위한 파동방정식과 불확정성의 원리에 대해서도 한번 알아보겠습니다. 입자가 가진 운동량 같은 것들을 물질파라는 파동의 파장, 주파수 등과 연관지어서 짚어볼텐데요. 이러한 개념들이 낮설게 느껴지거나, 파동이라는 현상에 대해 좀 더 자세하게 알아보고 싶으시다면 다음 포스팅을 읽어보는 것도 좋습니다. 물리학 상식 : 파동의 이해 이번 포스팅에서는 파동과 이를 구성하는 주파수, 파장, 진폭 등의 기본 개념들을 자세하게 짚어보겠습니다. 파동은 자연계에서 매우 흔하게 발견되는 패턴인데요. 우리가 일상생활에서 가장 swstar.tistory... 더보기
물리학 상식 : 파동의 기본개념 이번 포스팅에서는 파동과 이를 구성하는 주파수, 파장, 진폭 등의 기본 개념들을 자세하게 짚어보겠습니다. 매개체가 주기성을 가지고 변하는 패턴인 파동은 자연계에서 매우 흔하게 발견되는 현상인데요. 우리가 일상생활에서 가장 흔하게 접하는 파동으로는 소리 (음파)가 있습니다. 소리가 전달되는 경로 상에 있는 공기분자들이 주기성을 가지고 운동을 하면서, 공기의 밀도가 증가와 감소를 반복하게 됩니다. 이러한 밀도의 변화에 귀에 있는 고막이 반응을 하고 이 자극이 뇌에 전달되면, 우리가 소리를 인지하게 되죠. 파동의 또 다른 예시로는 빛의 전달이 있습니다. 이는 맥스웰 방정식으로부터 유도가 되는것이지만 간단히 말하자면, 전기장과 자기장의 크기와 방향이 주기성을 가지고 변하는 패턴이 바로 빛이라고 불리는 전자기파입.. 더보기
C++ 문제풀이 - 나무 재테크 (백준 16235) 심심풀이로 인터넷에서 찾은 프로그래밍 문제들을 좀 풀어보고 있습니다. 여기서 소개할 것은 나무 재테크라는 문제로서, 나무들의 인구 역학을 이산수학 모형을 통해 알아보는 내용을 담고 있죠. 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 정사각형 모양의 격자 구조를 상정하고, 각 칸에 있는 나무들의 갯수가 연도별로 어떻게 달라지는지 계산하는 프로그램을 만들어야 합니다. 나무가 성장하기 위해 토양으로부터 소모하는 양분의 개념이 도입되어 있는데요. 나이만큼 양분을 소모하여 1살 더 먹을 수 있지만, .. 더보기
OpenMP C/C++ 를 이용한 병렬 프로그래밍 개요 여기서는 여러개의 CPU 코어를 동시에 사용하는 병렬 프로그램을 만들기 위한 방법 중 하나인 OpenMP에 대해 알아봅시다. OpenMP는 여러 개의 명령문들이 동시에 실행되는 프로그램을 작성하기 위한 인터페이스 (API)로서, 여러 전처리기 및 함수들로 이루어져 있습니다. Home Latest News View Monthly Archives Tweets by OpenMP_ARB Get all the latest API specifications, technical report drafts and proposals. All the latest books, examples and tutorials to start you on www.openmp.org OpenMP로 만들어진 병렬 프로그램은 메모리를 .. 더보기
MPI C/C++ 를 이용한 병렬 프로그래밍 개요 프로그램이 여러 개의 CPU 코어에서 돌아갈 수 있게 소스 코드를 작성하면, 생산성을 높이는 데 도움이 됩니다. 필요한 연산을 여러 개의 코어들이 나누어서 수행하기 때문에, 프로그램 실행에 소요되는 시간이 줄어드는 효과가 있는 것이죠. CPU에서 구동되는 프로그램을 병렬화 하는데 있어서 MPI (Message Passing Interface)와 OpenMP가 많이 사용되는데요. 이번 포스팅에서는 MPI를 이용한 병렬 프로그래밍에 대해 다뤄볼까 합니다. MPI는 C언어, C++ 및 포트란 프로그램 내에서 프로세스 간의 데이터 전달을 정의함으로써, 병렬 프로그래밍을 가능하게 하는 인터페이스입니다. MPI와 OpenMP의 가장 큰 차이점 중 하나는 메모리를 공유하는지의 여부가 될 것입니다. OpenMP의.. 더보기
푸리에 변환과 (C++) 스펙트로그램 스펙트로그램의 개요 목소리나 음악 등의 소리를 수학적으로 기술하는 방법으로는, 크기를 나타내는 시그널을 시간에 대한 함수로 구하는 것이 있는데요. 이를 직접 들여다보는 것 보다 주파수 별로 그 크기가 어떻게 달라지는지를 분석하면, 소리의 패턴을 과학이나 공학적으로 이해하기가 더 쉬워집니다. 스펙트로그램 (spectrogram)은 서로 다른 주파수의 기여분이 시간에 따라 어떻게 달라지는지를 이미지로 나타낸 것입니다. Spectrogram - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Visual representation of the spectrum of frequencies of a signal as .. 더보기
stb : C/C++ 이미지 처리 라이브러리 라이브러리 소개 이번에는 C언어 또는 C++ 프로그램에서 이미지 파일을 다루는 데 유용한 stb 라이브러리에 대해 얘기해볼까 합니다. JPEG, PNG, TGA, BMP 등의 이미지 포맷을 지원하며, 각 픽셀의 256 컬러 RGB 값들이 저장되는 배열을 통해서 이미지 파일의 입출력이 가능합니다. 256 컬러 RGB는 간단히 말하자면 빛의 원색인 빨강 (Red), 녹색 (Green), 파랑 (Blue) 세 개의 가산혼합으로 각 픽셀에서 출력되는 색상을 결정하는 방식인데요. 각 원색의 세기를 0과 255사이의 숫자로 나타내기 때문에 256이라는 숫자가 등장합니다. 이는 16진법으로 썼을 때 두 자리수로 나타낼 수 있는 범위이고 원색이 3개이므로, 결과적으로 RGB 색상코드는 16진법으로 6자리 숫자가 되죠... 더보기
vcpkg로 비주얼 스튜디오 라이브러리 설치하기 여기서는 vcpkg를 사용해서 라이브러리를 설치하고 이를 MS 비주얼 스튜디오에서 사용하는 법에 대해 알아봅시다. vcpkg는 C언어 및 C++ 라이브러리를 편리하게 관리할 수 있도록 도와주는 프로그램입니다. GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS C++ Library Manager for Windows, Linux, and MacOS. Contribute to microsoft/vcpkg development by creating an account on GitHub. github.com 윈도우에서 vcpkg를 사용하면, macOS의 Homebrew와 비슷한 방식으로 라이브러리를 설치하는 것이 가능합니다. .. 더보기