Numerical Analysis (5)
Runge-Kutta Method for ODE
Process
- Heun’s Method(a(2)=1/2)
- Ralston’s Method(a(2)=2/3)
- y(i+1)=y(i)+(a(1)k(1)+a(2)k(2))h
- k(1)=f(x(i), y(i))
- k(2)=f(x(i)+p(1)h, y(i)+q(11)k(1)h)
Source code
1 | import plotly |
실행결과
1 | "C:\Users\s_oh3417\PycharmProjects\수치 Proj4\venv\Scripts\python.exe" "C:/Users/s_oh3417/PycharmProjects/수치 Proj4/Main.py" |
데이터 비교
1 | x = 0:0.1:3; |
Discussion
오차가 가장 큰 t=3인 지점의 참값은 5.5이지만 Heun’s Method와 Ralston’s Method를 통한 값은 각각 6.21, 6,2이다. 이는 각각 0.71, 0.7이라는 값이 차이난다는 것이고 미세하게 Ralston’s Method가 더 정교함을 울 수 있다. 또한 이 정도의 오차가 발생한 이유를 생각해보면, h값이 0.1로 꽤나 큰 수치이기 때문일 것이다. 그럼에도 불구하고 약 t=1.2까지는 True value와 거의 같다고 볼 수 있다. h가 작아지면 충분히 같아질 것이다.
호기심 해결
1 | import plotly |
실행결과
1 | 2.4925, 2.4926, 2.4927, 2.4928, 2.4929, 2.493, 2.4931, 2.4932, 2.4933, 2.4934, 2.4935, 2.4936, 2.4937, 2.4938, 2.4939, 2.494, 2.4941, 2.4942, 2.4943, 2.4944, 2.4945, 2.4946, 2.4947, 2.4948, 2.4949, 2.495, ..., 5.4946022248 5.4952017999 5.495801425 5.4964011 5.497000825 5.4976006 5.498200425 5.4988003 5.499400225 5.5000002 5.500600225] |
Conclusion
결론을 짓기 위해 h를 0.0001로 설정한 뒤 같은 코드를 살짝 수정해서 돌려보니 아래 그림과 같이 세 곡선이 모두 일정하게 그려졌다. 따라서 오차는 h값이 커서 났던 것이고 Ralston’s Method가 상대적으로 Heun’s Method보다 정확하다고 할 수 있다.