FORTRAN 90 Lecturer : Rafel Hekmat Hameed University of Babylon Subject : Fortran 90 College of Engineering Year : Second B.Sc. Mechanical Engineering Dep. N Nuum meerriiccaall S Soolluuttiioonn ooff FFiirrsstt O Orrddeerr D Diiffffeerreennttiiaall E Eqquuaattiioonn Euler Method There are many different methods that can be used to approximate solutions to a differential equation. We are going to look at one of the oldest and easiest to use here. This method was originally devised by Euler and is called, oddly enough, Euler’s Method. It is a simple method of solving firstorder ODE, particularly suitable for quick programming because of their great simplicity, although their accuracy is not high. Consider: y' (x) = f(x, y) ; y (x0) = y0 (1) Let: x i = x0 + i h ; i = 0, 1,…. , n yi = y (xi) Yi true solution evaluated at points xi the solution to be calculated numerically. Replace y'(x)=(Yi+1-Yi)/h Then Eq. (1) gets replaced with Yi+1 = Yi + h f(xi , Yi) EXAMPLE Find a numerical solution to some first-order differential equation with initial y(0) = 1, for 0 x 3. 5 dy/dx - y2 = -x2 dy/dx=1/5 (y2-x2) The initial data is y(0) = 1 , assume h=.5 . So x0 = 0 and y0 = 1. x1 = x0 + h = 0 +.5=.5, and y1= y0 + h · f (x0, y0) = y0 +.1(y02 - x02) ˺ = 1 +.1(12 − 02)=1.1 x2 = x1 + h = .5 +.5=1 y2= y1 + h · f (x1, y1) = 1.1+.1 (1.12 − .52)=1.196 . . . i 0 1 2 3 4 5 6 xi 0 .5 1 1.5 2 2.5 3 yi 1 1.1000 1.1960 1.2390 1.1676 .9039 0.3606 program Euler_method implicit none real, dimension (20)::x,y integer::i real :: h,xo,yo,f read(*,*) xo,yo,h x(1)=xo y(1)=yo print*,"for x=",x(1) , "y=",y(1) i=2 do x(i)=x(1)+(i-1)*h y(i)=y(i-1)+h*f(x(i-1),y(i-1)) if (x(i).gt.3.0) exit print*,"for x=",x(i) , "y=",y(i i=i+1 enddo end real function f(x,y) implicit none real ::x,y f=1/5.0*(y**2-x**2 ; end ˻