Skip to content

Repository designed to maintain fortran scripts for numerical analysis.

License

Notifications You must be signed in to change notification settings

ReinaldoDiasAbreu/NumericalAnalysisFortran

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Numerical Analysis Fortran

Repository designed to maintain fortran scripts for numerical analysis.

The file numerical_analysis.F95, contains the following functions:

Some functions must be edited to include the equations necessary for the analysis, such as the differential equations that must be included in the functions before executing them.

  • Linear Systems

    • Gaussian Elimination

          GaussianElimination(Matrix, m, V)
      
      ! Matrix - System Matrix (real*8, dimension(m,m))
      ! m      - Matrix Order (integer)
      ! V      - independent values (real*8, dimension(m))
      ! Returns a real*8 vector of size m
      
    • Tridiagonal Systems

          Tridiagonal(a, b, c, d, order)
      
      ! a, b ,c  - system vectors (real*8, dimension(order))
      ! d        - independent values (real*8, dimension(order))
      ! order    - system order (integer)
      ! Returns a real*8 vector of size order
      
  • Interpolation Methods

    • Newton Interpolator Polynomial

          Newton(x, y, n, ent)
      
      ! x, y - Domain and Image (real*8, dimension(n))
      ! n    - Vectors Size (integer)
      ! ent  - Value to Interpolate (real*8)
      ! Returns real*8 value
      
    • Lagrange Interpolator Polynomial

          Lagrange(x, y, n, ent)
      
      ! x, y - Domain and Image (real*8, dimension(n))
      ! n    - Vectors Size (integer)
      ! ent  - Value to Interpolate (real*8)
      ! Returns real*8 value
      
    • Gregory Newton Interpolator Polynomial

          GregoryNewton(x, y, n, ent)
      
      ! x, y - Domain and Image (real*8, dimension(n))
      ! n    - Vectors Size (integer)
      ! ent  - Value to Interpolate (real*8)
      ! Returns real*8 value
      
  • Differential Equations

    • Euler Method

          Euler(a, b, h, alf)
      
      ! a, b - domain range (real*8)
      ! h    - step (real*8)
      ! alf  - initial value of Y'(x,y) (real*8)
      ! Returns an array [ real*8 array(n+2,2) ]
      
    • Second-order Runge Kutta

          RungeKutta2(a, b, h, alf)
      
      ! a, b - domain range (real*8)
      ! h    - step (real*8)
      ! alf  - initial value of Y'(x,y) (real*8)
      ! Returns an array [ real*8 array(n+2,2) ]
      
    • Fourth-order Runge Kutta

          RungeKutta4(a, b, h, alf)
      
      ! a, b - domain range (real*8)
      ! h    - step (real*8)
      ! alf  - initial value of Y'(x,y) (real*8)
      ! Returns an array [ real*8 array(n+2,2) ]
      
    • Runge Kutta method for systems of differential equations

          RungeKuttaSist(a, b, alf1, alf2, h)
          
      ! a, b - domain range (real*8)
      ! h    - step (real*8)
      ! alf1, alf2  - initial value of Y1'(x) e Y1'(x) (real*8)
      ! Returns an array [ real*8 array(n+1,3) ]
      
  • Numerical Integration

    • Trapezoid Rule

          TrapezoidalRule(a, b, h)
      
      ! a, b - Integration limits (real*8)
      ! h    - domain range / precision (real*8)
      ! Returns real*8 value
      
    • Discreet Trapezoid Rule

          DiscreetTrapezoidal(x, y, a, b,  h, n)
      
      ! x, y - domain and function image (real*8, dimension(n) )
      ! a, b - Integration limits (real*8)
      ! h    - domain range (real*8)
      ! n    - vector size (integer)
      ! Returns real*8 value
      
    • Gaussian Quadrature

          GaussianQuadrature(a, b, n)
      
      ! a, b - Integration limits (real*8)
      ! n    - Degree of integration (integer)
      ! Returns real*8 value
      
    • Simpson method (3/8 Rule)

          Simpson(a, b, n)
      
      ! a, b - Integration limits (real*8)
      ! n    - Degree of integration (integer)
      ! Returns real*8 value
      

To compile run the following command:

gfortran main.F95 numerical_analysis.F95

The main.F95 file, for example, is the file that makes use of the functions.