C++7 1차원 슈뢰딩거 방정식 시뮬레이션 일단 만들었음. https://github.com/hydrogendeuteride/Schrodinger_1D/tree/master GitHub - hydrogendeuteride/Schrodinger_1D: C++ schrodinger equation solver with opengl graph C++ schrodinger equation solver with opengl graph. Contribute to hydrogendeuteride/Schrodinger_1D development by creating an account on GitHub. github.com 슈뢰딩거 방정식을 컴퓨터로 푸는 건 꽤 간단함. $H\psi = E\psi$에서 $\psi$는 슈뢰딩거 방정식의 고유 벡터이고 $\psi$.. 2023. 8. 28. 조금 더 깔끔한 이중진자 시뮬레이션 https://youtu.be/k2oe_A52pk0 전보다 더 완벽해진 이중 진자 시뮬레이션 더 깔끔한 코드와 여러 개의 진자를 동시에 굴릴 수 있게 작성했음(영상에서는 하나밖에 안보이지만 진자를 추가하는 것 자체는 아주 쉬움). 저번에 짠 코드는 좀 많이 더럽긴 함. 원래는 그냥 SFML 기술 실증 프로젝트였는데 막상 손대다 보니 아예 중소규모 프로젝트가 되버림. 깃헙 주소: https://github.com/hydrogendeuteride/DoublePendulum_Continued Visual Studio 깃은 처음 써봐서 아직 많이 미숙함. 그리고 파워셸 너무 불편함. 코드(클릭하면 나옴) 더보기 #ifndef _PENDULUM_H_ #define _PENDULUM_H_ #include #incl.. 2023. 2. 17. N체 시뮬레이션 #include #include #include #include #include #include #include "point.h" typedef point Vector; typedef std::vector container; typedef std::vector mass; constexpr double G_const = 6.67430e-11; struct position { const mass &masses; position(const mass &masses) : masses(masses) { } void operator()(const container &p, container &dqdt) const { for (int l = 0; l < p.size(); ++l) { dqdt[l] = p[l] / mas.. 2021. 3. 4. 고속 푸리에 변환 이산 푸리에 변환 이산 푸리에 변환의 C++ 코드이다. #define M_PI 3.14159265358979323846 void DFT(const std::vector &input, std::vector > &output) { int N = input.size(); std::complex img(0.0, 1.0); for (int i = 0; i 1) { n = k; k >>= 1; phiT = phiT * phiT; T = 1.0L; for (int i = 0; i < k; ++i) { for (int a = i; a < N; a += n) { int b = a + k; std::complex t = x.at(a) - x.at(b); x.at(a) += x.at(b); x.at(b) = t * T; }.. 2021. 1. 28. 이산 푸리에 변환 푸리에 해석을 모른다면 슬쩍 보고 오자 푸리에 해석 테일러 급수를 아는 사람들은 알겠지만, 어떤 임의의 함수는 멱급수 형태로 전개할 수 있다. 그럼 반대로 생각해보자 어떤 임의의 주기함수는 사인함수의 합으로 이루어질 수 있는가? 어떤 함수 ellipsoid.tistory.com 이산 푸리에 변환의 C++ 코드이다. #define M_PI 3.14159265358979323846 void DFT(const std::vector &input, std::vector &output) { int N = input.size(); std::complex img(0.0, 1.0); for (int i = 0; i < N; ++i) { std::complex tmp(0.0, 0.0); for (int j = 0; j <.. 2021. 1. 28. 진자 --이 글은 이전에 쓰던 워드프레스 블로그에서 그대로 가져온 것임 워드프레스 블로그는 곧 공개하겠음-- SFML을 배우고 있고 배웠던 거 복습도 할 겸 해서 여러 가지 물리 시뮬레이션을 만들어 볼까 한다. 오늘은 진자를 만들어 봤다. 단진자는 운동방정식을 간단히 풀 수 있지만 진자는 특수함수인 베타함수를 이용하여 진동의 주기를 구해야 해서 좀 복잡하다(나중에 글 쓰겠다.) 오늘은 일단 미분방정식을 수치적으로 풀어서 화면에 나타내 보았다. 오랜만에 코드를 짜서 그런지 개판이다. 정리 좀 해야겠다. #include #include #include #include double f(double theta) { return -9.806/1.0 * sin(theta); } template double deg2rad.. 2021. 1. 14. 이중 진자(double pendulum) 23.02.17 추가 이중진자 시뮬레이션의 새 코드가 나왔으므로 식 유도가 아니라 코드에 관심있는 사람들은 아래 글 참고 바람. https://ellipsoid.tistory.com/entry/%EC%A1%B0%EA%B8%88-%EB%8D%94-%EA%B9%94%EB%81%94%ED%95%9C-%EC%9D%B4%EC%A4%91%EC%A7%84%EC%9E%90-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98 조금 더 깔끔한 이중진자 시뮬레이션 https://youtu.be/k2oe_A52pk0 전보다 더 완벽해진 이중 진자 시뮬레이션 더 깔끔한 코드와 여러 개의 진자를 동시에 굴릴 수 있게 작성했음(영상에서는 하나밖에 안보이지만 진자를 추가하는 것 자체는 ellipsoid.. 2021. 1. 14. 이전 1 다음