Fortran 90, Euler's method help

  • Fortran
  • Thread starter fluidistic
  • Start date
  • #1
fluidistic
Gold Member
3,654
100

Main Question or Discussion Point

I'm trying to make a program that can approximate a differential equation via the Euler's method.
Here is my program :
Program diff
implicit none

Real :: t_0, x_0, t_f, k_j, h
Real :: t,x
Integer :: n,j

Write(*,*)'Chose t_0 and x_0'
Read(*,*)t_0, x_0
Write(*,*)'Chose t_f'
Read(*,*)t_f

Write(*,*)'Chose n'
Read(*,*)n
h=(t_f-t_0)/n

Do j=1,n
k_j=f(t,x)
x=x+h*k_j
t=t+h

Write(*,*)t,x
end do

Contains
Real Function f(t,x)
real, intent(in) :: x,t
f=2*x
end function

end program

Here I am trying to approximate the solutions of the following differential equation : [tex]x'=2x[/tex] and [tex]x(0)=1[/tex] in the interval [0,1], using a step h of 0.1. So in my program, I input t_0=0, X_0=1, t_f=1 and n=10.
I know where is the problem of my program. It's in the "do" part. And more exactly here I think "k_j=f(t,x)". For example, the first term should be k_1=f(0,1) so it must be equal to 2. But the program doesn't do it. It doesn't understand that f(t,x) should be evaluated in t=0, x=1 for the first term. How can I fix this? I'm thinking about another "do" part, inside of the one I already have... But can't figure it out. Thanks for your help.
 

Answers and Replies

  • #2
alphysicist
Homework Helper
2,238
1
Hi fluidistic,

It looks to me like you never set the variables equal to the initial values. The is, you had the program ask for t_0 and x_0, but you never actually used those values (except for t_0 to calculate h).

Try putting

Code:
x=x_0
t=t_0
before the do loop.
 
  • #3
fluidistic
Gold Member
3,654
100
Thanks alphysicist! That works great now.
 

Related Threads for: Fortran 90, Euler's method help

Replies
15
Views
30K
Replies
1
Views
6K
  • Last Post
Replies
5
Views
6K
Replies
17
Views
19K
Replies
7
Views
2K
Replies
3
Views
2K
Replies
2
Views
2K
Top