Fortran programming to solve ODEs

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 4K views
ra_forever8
Messages
106
Reaction score
0
Consider the first order differential equation
\[\frac{dy}{dy} = f(t,y) = -16 t^3 y^2\]
with initial condition $y(0)=1$

Using second order Adams-Bashforth method, write a Fortran programming to generate an approximate solution to the problem.

Solution

Fortran:
Program adams
Implicit None 
Real, allocatable :: $y(:),t(:)$
 Real:: yo, tend, h, k1,k2
Integer:: NI, i
Real,external ::f

!Asking to enter the initial vaule of yo, final time and numbers of step
Print*,  'Enter yo,Tend,NI'  
read*, yo,Tend,NI
h= Tend/NI
Print*, 'This gives stepsize h=',h 
allocate (t(0:NI), y(0:NI))

!Initial Conditions
t(0)=0
y(0) = 1

!After using runge kutta method, found out k1 =0 and k2= -16h^3,
   k1=0
   k2= -16*h**3

!we know that y(n+1) =y(n) + h/2(k1+K2)  at n=0
y(1) = y(0) + h/2 *( k1+ k2) 

!  Loop through the number of steps to calculate the following at each step  
do i=2, NI  
  t(i)= i*h  
write(10,*) i, t(i),t(i-1) 
!Second order Adam bashforth for all n 
  y(i)= y(i-1) + (h/2)*(3*f(t(i-1), y(i - 1))- f(t(i-2), y(i-2))) 
 end do
 end program adams

!declaring function
   Real Function f(t,y)
   Real:: t
   Real:: y
   f = - 16*t**3*y**2
   Return   
   End Function f

Now i want to plot this partial derivative ∂f/∂y = |-32 (4t^4 +1)^-1 t^3| against t using fortran to generate a file or something for the MATLAB to plot the graph.
Can someone help me
 
Last edited by a moderator:
Physics news on Phys.org
If you write your Fortran output as a CSV file then a MATLAB script can import it via the readmatrix() function and then one can plot using MATLAB's plot() function.

https://www.mathworks.com/help/matlab/ref/readmatrix.html

A CSV file is basically a text file with each line representing a row in a spreadsheet and each line containing comma separated (or other character like | or tab) lists of numbers ala 1,2,3,4,5

As an example, y=x^2 in CSV format might look like this:

Code:
1,1
2,4
3,9
4,16
5,25
...

https://www.mathworks.com/help/matlab/ref/plot.html

This should give you enough info to write a simple plot program in MATLAB.
 
Reply
  • Like
Likes   Reactions: Greg Bernhardt