공부/프로그래밍
-
스프링의 위치와 속도 구하기공부/프로그래밍 2017. 6. 11. 15:39
import numpy as np import math g = 9.81 N = 1000 tau = 20.0 dt = tau/float(N-1) SHOstate[0] : 늘어난거리, 위치 state[1] : 속도dv_dt 유도식 F = -mg -kx (탄성력) F = ma (뉴턴 제2법칙 가속도법칙) ma = -mg -kx a = -g -(kx/m) x(늘어난 거리)를 이용해서 가속도를 구해주는 것euler 함수에 들어갈 [속도, 가속도]를 구해준다def SHO(state, time): dx_dt = state[1] dv_dt = -k/m * state[0] - g return np.array([dx_dt, dv_dt]) euler1차 일반 미분 방정식의 해를 근사시켜준다… 결국 Yn+1을 Yn을 이용해서..
-
몬테카를로법으로 원주율 근사값 구하기공부/프로그래밍 2017. 6. 11. 15:31
from random import random, seed from math import sqrt Monte Carlo Method난수를 이용해 함수의 값을 확률적으로 계산하는 알고리즘 참고 url 몬테카를로 법을 이용해 pi의 근사값을 구해보자 반지름이 1인 원이 있다고 생각하자 ( $x^2 + y^2 = 1$ )이제 그 원안에 점들을 찍는다. 이때 난수가 사용된다. (점의 좌표 범위 : $ 0 \leq x \leq 1 , 0 \leq y \leq 1 $ )random 함수의 값은 float으로 0~1 사이의 값이 리턴된다. 원의 넓이는 $\pi r^2$이고 정사각형의 넓이는 $4r^2$이다. 따라서 원의 넓이를 정사각형의 넓이로 나누게 되면 $\frac{\pi}{4}$가 된다. 3번에서 구한 값에 4배..
-
binary 관련 간단한 정리공부/프로그래밍 2017. 3. 9. 21:46
binary 관련 간단한 정리 정수표현 정수타입에서 대부분 최상위 비트(Most Siginificant Bit)가 음수인지 정수인지를 구분한다는 것은 알고있을 것 이다. 나도 그냥 그렇게만 알고 음수표현은 양수에서 최상위 비트만 반전되는줄 알고 있었다. (하지만 그게 아니다..) 그러다 학교에서 친구가 파이썬에서 ‘~’ 가 뭐냐고 물어봐서 not이라고 대답해 주다가 이상한 부분을 발견했다. 0b101 을 not연산을 하게 되면 -0b110이 나오는 이상한 일이 일어난거다. 5 : 0b0101 !5 : 0b1010 내 생각으로는 최상위 비트가 1이고 나머지가 정수라면 -2가 되야한다고 생각했지만 음의 정수는 그렇게 표현하지 않는다. source code 0을 0b0000으로 두고 -1부터는 0b000에서 ..