Output format of a matrix in Fortran 90

  • #1
7
2
Hello,
I'm new here and I'm also new in programming. I never did it before and now I have a problem with one of the programs in fortran 90 and I can't figure out how to solve it. Maybe some of you can help me. Many thanks in advance.

1. Homework Statement

I need to plot the results of a fourier series. In the first column the time and in the followings the results and the changes if the degree changes. Therefore I need to create a matrix. And thats where I have the problems. I can't figure out, how to choose the format.

Homework Equations




The Attempt at a Solution



Here is how I tried it. It works if I choose a 4x4 matrix and step=1, so that I only get 4 results of each but I want to use a step like 0.1 and a higher degree of the series therefore I need at least a 32x4 matrix. When I change the 4x4 matrix to anything else, the output starts getting messed up.
Here is my program


Fortran:
PROGRAM fourier
IMPLICIT NONE
INTEGER :: b, i
REAL :: t, x, step=1,a
REAL, PARAMETER :: pi= 4.D0*DATAN(1.D0)
REAL :: r(4,4)=0.0
!READ (*,*) step                                                                                
x=0
t=0
i=1
! OPEN (15,file="Data.dat")                                                                      
DO WHILE ( t<pi )
  DO b=0,2
   a=b
   x=x+1/(2*a+1)*SIN((2.0*a+1)*t)
   r(b+2,i)=x
  ! WRITE(*,*) x,t                                                                               
  ENDDO
  r(1,i)=t
  t=t+step
  i = i+1
  x=0
  !WRITE (*,*) t                                                                                 
ENDDO

!WRITE (*,*) t                                                                                  
WRITE(*,'(4(F9.6,X))') r

END PROGRAM fourier
 
Last edited by a moderator:

Answers and Replies

  • #2
33,721
5,418
Hello,
I'm new here and I'm also new in programming. I never did it before and now I have a problem with one of the programs in fortran 90 and I can't figure out how to solve it. Maybe some of you can help me. Many thanks in advance.

1. Homework Statement

I need to plot the results of a fourier series. In the first column the time and in the followings the results and the changes if the degree changes. Therefore I need to create a matrix. And thats where I have the problems. I can't figure out, how to choose the format.

Homework Equations




The Attempt at a Solution



Here is how I tried it. It works if I choose a 4x4 matrix and step=1, so that I only get 4 results of each but I want to use a step like 0.1 and a higher degree of the series therefore I need at least a 32x4 matrix. When I change the 4x4 matrix to anything else, the output starts getting messed up.
Here is my program


Fortran:
PROGRAM fourier
IMPLICIT NONE
INTEGER :: b, i
REAL :: t, x, step=1,a
REAL, PARAMETER :: pi= 4.D0*DATAN(1.D0)
REAL :: r(4,4)=0.0
!READ (*,*) step                                                                                 
x=0
t=0
i=1
! OPEN (15,file="Data.dat")                                                                       
DO WHILE ( t<pi )
  DO b=0,2
   a=b
   x=x+1/(2*a+1)*SIN((2.0*a+1)*t)
   r(b+2,i)=x
  ! WRITE(*,*) x,t                                                                                
  ENDDO
  r(1,i)=t
  t=t+step
  i = i+1
  x=0
  !WRITE (*,*) t                                                                                  
ENDDO

!WRITE (*,*) t                                                                                   
WRITE(*,'(4(F9.6,X))') r

END PROGRAM fourier
Change the declaration of your r matrix like so:
Code:
REAL :: r(32,4)
Since you will be modifying the matrix elements, you don't need to initialize them, as far as I can tell.

You will also need to modify your DO loop to take into account the larger size of your matrix, with b ranging between 0 and 30 instead of 0 and 2.

I would also change your last write statement by putting it inside a do loop, printing one row of your matrix at a time, or even a nested pair of do loops to print each element of the matrix. The newer versions of Fortran are able to spit out entire arrays with just a single write statement, but I prefer the control of using loops to print out one element at a time.
 
  • #3
7
2
Hey Mark44,

thank you very much for your answer!
I already solved the problem by using an allocatable array.

The thread can be closed.

Thanks.

greets Boltzmann
 

Related Threads on Output format of a matrix in Fortran 90

Replies
16
Views
4K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
4
Views
1K
Replies
3
Views
4K
Replies
1
Views
2K
  • Last Post
Replies
1
Views
1K
Replies
2
Views
2K
  • Last Post
Replies
9
Views
2K
Top