Fortran

작업2 : 이심률 구하기

이석사 중 2022. 10. 18. 01:15
728x90

이번에 한 내용은 이심률 구하는 작업입니다

이심률이란 원운동하는 물체가 궤도에서 벗어난 정도를 뜻합니다

이걸 지구에 적용하면 태양을 도는 공전 궤도의 변화 정도를 말합니다

먼저 이심률 공식을 설명하기 전에 Day Number 라는 숫자를 알아보겠습니다

1년은 총 365일로 구성이 되어있습니다

1월 1일을 0으로 두고 12월 31일을 365로 계산합니다

2월은 4년마다 29일이 되지만 이는 포함하지 않습니다

이심률 공식입니다

2가지가 있는데 위에 공식이 조금 더 정밀하게 값이 나옵니다

위에 식을 가지고 만든 코드입니다

fortran 90까지는 한 줄에 입력 가능한 글자수가 제한이 있기 때문에 자동으로 줄바꿈이 됩니다

그럴때는 넘어간 줄 맨 앞으로 커서를 옮겨서 백스페이스바를 한 번 눌러주면 윗 줄로 올라옵니다

올라온 부분은 저렇게 형광펜 칠 한 것처럼 표시가 되는데 아무 문제 없이 잘 읽어오니까 괜찮습니다

저는 이걸로 그래프를 그리기 위해 csv 파일이 필요했기 때문에 write문으로 쓸 때

사이사이 ','를 입력해주었습니다

여기서 설명이 필요한 부분은 REAL, parameter :: pi = 4. * atan(1.) 부분입니다

pi는 말 그대로 원주율인데 원주율은 소수점이 거의 무한에 가까운 수이기 때문에

저희가 임의로 변수를 선언해서 3.1415926535처럼 이렇게 많은 숫자를 써도 오차가 발생합니다

 

수정 :  부동 소수점 체계를 사용하는 포트란에서는 직접 타이핑해서 사용하나 atan를 사용하나

유효 숫자만큼 오차가 존재할 뿐 값의 정확도와 정밀도 측면에서는 결과를 좌지우지 할 만큼 큰 차이가

발생하지는 않습니다 (y님의 도움이 있었습니다)

fortran에서는 pi의 값을 4. * atan(1.)이라는 값으로 계산이 되어집니다

pi를 변수로 해도 될 텐데 parameter로 지정을 왜 하냐 라는 의문이 생길 수도 있습니다

기존의 변수들은 위에서 이 변수들이 어떤 자료형태다 라는 걸 알려주어야 했다면

parameter는 이 자료가 어떻게 되어있는지를 읽고 알아서 형태를 지정해주는 일을 합니다

정확하지 않을 수도 있기 때문에 REAL, parameter로 해주면 오차를 가능한 줄이면서 선언이 가능합니다

2번째 식도 마찬가지 입니다

이번 공식도 크게 어려울 건 없습니다

최근에 학교에서 진행하는 프로그램들을 몇 개 참가하면서

NCL이라고 하는 언어도 알게 되었는데

제가 지금까지는 그래프를 파이썬을 통해서만 그려왔지만

앞으로는 NCL로도 그려보려고 합니다

교수님이 추천해주시기도 하셨고 대기과학을 위해 만들어졌다는 말이 너무 와 닿은 것 같습니다

728x90