물체의 자유낙하 거리 계산

2025. 3. 20. 04:16함수계산기

이번에는 함수계산기를 사용하여 과학 공식을 계산하는 함수를 만들어봅시다.

물리의 속도와 거리 중력가속도 등의 관계를 이용해 물체가 일정시간동안 자유낙하할 때 떨어진 거리를 계산하는 함수를 만들도록 하겠습니다.

코딩스크립트는 함수계산기 전용으로 쓰이는 자바스크립트와 흡사하게 생긴 SimpleMath를 사용하여  코딩합니다.

공식을 함수화 하는 코딩은 비교적  간단합니다.
그냥 공식을 쓰는 것과 코딩이 거의 같습니다.

수식에서 = 대신 return을 쓰거나 함수이름 앞에 def  같은 코딩용어를 덧붙이는 정도의 차이가 있을 뿐입니다.

일정한 시간 동안 어떤 물체가 떨어질 때 떨어진 자유낙하 거리를 계산하는 함수를 코딩해달라고 AI에게
요청했고 아래와 같이 함수를 만들어 주었습니다.

def freeFallDistance(time) {
    return 9.81 * time * time / 2;
}


기호 * 는 코딩에서 쓰는 곱셈기호이고 기호 / 는 코딩에서 쓰는 나눗셈 기호이며 return 은 수식에서 = 과 비슷한 기능을 한다는 점을 감안하고 코딩을 읽으면 이해가 쉬울 것입니다. 그냥 물리공식입니다.
위 코딩은  아래와 같이 짤 수도 있습니다.

def freeFallDistance(time) =
    9.81 * time * time / 2;


실행하면 동일한 값을 산출합니다.
둘 중의 하나만 복사해서 공장페이지에 붙여넣으세요.

이제 한글로 알아보기 쉽게 위 함수를 이용하여 한글이름 함수를 하나 더  만듭시다.

def 자유낙하거리(떨어진시간)=freeFallDistance(떨어진시간);

위 함수도 공장페이지 코드창에 복사해서 붙여넣고 run 버튼을 눌러 코드를 실행하고 save 버튼을 눌러 함수를 저장하세요.

계산기 페이지로 돌아가서 F2 버튼을 눌러 방금 만든 함수를 아래 그림처럼 계산에 사용할 수 있습니다.


5초간 떨어지면 120여 미터나 떨어져야 되네요.


우물 깊이 측정


자 여기서 한 발 더 나아가 우물에 돌을 던져서 퐁당소리가 들린 시간으로 우물의 깊이를 측정하는 함수를 만들어 보도록  합시다. 이 경우는 소리가 들리는 시간까지 감안해서 계산해야 할 것입니다.

돌을 떨어뜨리고 난 후 첨벙소리가 들릴때까지 걸린 총시간을 t 라 하고
우물의 깊이를 d라  하고
돌을 떨어뜨린 후 돌이 우물의 수면에 닿을 때까지 걸린
낙하시간을 x라 하고
첨벙소리가 수면으로부터 귀에 도달한
소리전달 시간을 t2 라 합시다.


초기속도가 0이므로 중력가속도 거리 공식
d= 초속도*낙하시간+(1/2)*중력가속도*낙하시간^2
을 적용하면 깊이 d는  
d=0.5*9.8*x^2
이 됩니다.

우물 수면으로부터 출발한 첨벙소리가 귀에 전달 된 시간을 t2라 하였으므로  
소리의 속도가 343m/s 라는 것을 감안하면  
속도 거리 공식  거리 = 속도 * 시간 에  따라  
d= 343*t2 인데
위에서 d 는
d= 0.5 *9.8* x^2
이기도 하므로

두 식을 연결하면
343*t2 = 0.5 *9.8* x^2

정리하면
t2 = 0.5*9.8*x^2/343 = (0.5*9.8/343)*x^2
이 됩니다.

그런데 돌을 떨어뜨린  후 첨벙소리가 들릴 때까지의 시간 t 는 수면까지 떨어진 낙하시간 x 에 수면으로부터 소리가 귀에 전달된 시간 t2 를 더한 값이므로
t= x + t2 = x + (0.5*9.8/343)*x^2
가 됩니다.

이 식은 다시
(0.5*9.8/343)*x^2 + x - t = 0
으로 고쳐 쓸 수 있고

여기서 낙하시간 x값을 구하면 중력가속도 거리 공식으로부터 우물의 깊이도 구할 수 있는데
위 식은 x에 대한 2차 방정식이므로 2차 방정식 해를 구하는 문제로 귀결됩니다.

돌을  놓은 후 2초 후에 첨범소리를 들었다면 t의 값은 2가 되고 다른 페이지에서 소개한 2차방정식 근을 구하는 함수를 써서 해 x를 구해보면 그림과 같습니다.
(계산기에 이차방정식실근 함수가 저장되지 않았으면 이차방정식  실근을 구하는 함수  만들기 글을 참조해 함수를 먼저 만들어야 합니다.)


즉 x는 약 1.946이 되고 구하고자 하는 우물의 깊이는 아래 그림과 같을 것입니다.


돌을 놓은지 2초 후에 첨벙소리가 들렸다면 우물의 깊이는 약 18.5 미터가 되네요.

돌을 놓은 지 5초 후에 첨벙소리가 났다면 낙하시간은
이차방정식근 (0.5*9.8/343,1,-5,1)을 계산한 4.686이고 이것을 아래 그림과 같이 계산하니 약 107미터라는 결과가 나옵니다.


위 계산 과정을 종합해서 아래와 같이 새로운 함수를 만들 수 있습니다.

def 우물깊이(t){
  var g = 9.8;
  var sound = 343;
  var x = 이차방정식실근(0.5*g/sound, 1, -t, 1);
  var 낙하거리 = 0.5 * g * x^2;

  return 낙하거리;
}


위 함수를 복사해서 공장페이지의 코드창에 붙여넣고 run 버튼을 눌러 코드를 실행  후 save 버튼을 눌러 저장하고 계산기 페이지로 넘어와서 F2 버튼을 눌러 아래와 같이 계산할 수 있습니다.



돌을 떨어뜨린 3초 후에 소리가 들렸다면 우물의 깊이는 대략 40미터가 되네요.

함수계산기를 사용하여 다른 여러 과학 문제를 해결해 보세요