first step to computer programming with fortran 90
DESCRIPTION
Some simple programs in Fortran 90 for first stage of Physics Department, in College of Science, at University of SulaimaniTRANSCRIPT
Kurdistan Iraqi Region Ministry of Higher Education University of Sulaimani College of Science Physics Department
Dr. Dlear R. Saber Dr. Omed Gh. Abdullah Mr. Ary A. Abdulrahman Mr. Shaho Osman
2009 - 2010
First step to
Computer Programming
With FORTRAN 90 First stage
2
Problem (1): Write a Fortran program to calculate the value of function ππ(ππ); where x= [-5, 0, 5]:
ππ(π±π±) = οΏ½ ππππππβππ(π±π±) + πππ±π± (π±π± > 0) ππ (π±π± = ππ)οΏ½π±π±ππ + ππ (π±π± < 2)
οΏ½
Solution: read*, x if(x>0) then y=Atan(x) +exp(x) print*, x, y elseif(x<0) then y=sqrt(x**2+2) print*, x, y else y=0 print*, x, y endif end
################################################################################# Problem (2): Write a program in Fortran 90 using coditional control statement to find the value of
(ππ,πΎπΎ) according to value of ππ,ππ from the equations below, if(ππ = ππ) and (ππ = ππ):
οΏ½ π³π³ = |π±π±| + (π±π± + π²π²)π°π° = π³π³
|π±π± β π²π²| οΏ½ π±π± β₯ ππ
οΏ½π³π³ = (π±π± + π²π²)πππ±π± (π±π± + π³π³)
π°π° = π±π±ππ + πππ³π³ οΏ½ π±π± < 0
Solution: do read*,x,y if(x==0.or.x>0) goto 50 z=(x+y)**3/(x+z) w=x**2+2*z goto 70 50 z=abs (x)+(x+y) w=z/abs(x+z) 70 print*, z,w read*, choice if (choice==0) exit enddo end
#################################################################################
3
Problem (3): Write a Fortran program to calculate exponential of (1) from library function (π¬π¬π¬π¬π¬π¬) and from the following series up to (15):
πππ±π± = ππ + π±π± +π±π±ππ
ππ!+π±π±ππ
ππ!+π±π±ππ
ππ!+ β―
Solution: x=1 s=1 do i=1,15 f=1 do j=1,i f=f*j enddo s=s+x**i/f enddo print*,s,exp(x) end ################################################################################# Problem (4): Write a Fortran program to calculate exponential of (1) from library function (π¬π¬π¬π¬π¬π¬)
and from the following series up to (15), [without using do-loops]:
πππ±π± = ππ + π±π± +π±π±ππ
ππ!+π±π±ππ
ππ!+π±π±ππ
ππ!+ β―
Solution: x=1 b=1 n=0 s=1 10 n=n+1 if (n<=15) then b=b*x/n s=s+b goto 10 endif z=exp(x) print*,s,z end ################################################################################# Problem (5): Write a fortran program to calculate ππππππ(ππ) from library function (πͺπͺπͺπͺπͺπͺ) and from
following series up to power (20):
ππππππ(ππ) = ππ β ππππ
ππ!+ ππππ
ππ!β ππππ
ππ!+ β―
Solution: read*, x s=1
4
sign=-1 do i=2,20,2 f=1 do j=1,i f=f*j enddo s=s+(sign*x**i)/f sign=-1*sign enddo print*,s,cos(x) end ################################################################################# Problem (6): Write a Fortran program to calculate sin(x) from library function (πͺπͺπΊπΊπΊπΊ) and the
following series up to power (15), [input the value of ππ by degree]:
πππ¬π¬ππ π±π± =π±π±ππ!βπ±π±ππ
ππ!+π±π±ππ
ππ!ββ―
Solution: read*, x c=(22./7)/180 x=x*c sign=1 s=0 do i=1,15,2 f=1 do j=1,i f=f*j enddo s=s+sign*x**i/f sign=-1*sign enddo print*,s,sin(x) end ################################################################################# Problem (7): Write a Fortran program to calculate the sum of series from one to (n) integer
[without using do-loops]: Solution: integer i,n read*,n sum=0 do 10 i=1,n sum=sum+i print*,i,sum
5
10 continue print*,sum end
################################################################################# Problem (8): Write afortran program to print the following series, [without using do-loops]:
( ππ ,ππ ,ππ ,ππ ,ππππ ,ππππ ,ππππ ,ππππππ ) Solution: integer n n=1 10 print*,n If (n<=100) then n=2*n goto 10 endif end ################################################################################# Problem (9): Write a Fortran program to find the real solution of the function:
ππ(ππ) = ππππ + ππππ β ππ Using the equation:
ππ =βππ Β± βππππ β ππππππ
ππππ
Solution: read*, a,b,c s=b**2-4*a*c if (s<0) then print*,'ther is no solution' else x1=(-b+sqrt(S))/(2*a) x2=(-b-sqrt(s))/(2*a) print*,x1,x2 endif end ################################################################################# Problem (10): Write a Fortran program to read a two number (ππ,ππ), and check if (ππ) is posetive
or negative or zero , and compare (ππ) with (ππ): Solution: read*,a,b if (a>0) then if (a>b) then
6
print*,'(a) is posetive and greater than (b)' elseif (a<b) then print*,'(a) is posetive and smaller than (b)' else print*,'(a) is posetive and equal to (b)' endif elseif (a<0) then if (a>b) then print*,'(a) is negative and greater than (b)' elseif (a<b) then print*,'(a) is negative and smaller than (b)' else print*,'(a) is negative and equal to (b)' endif else if (a>b) then print*,'(a) is zero and greater than (b)' elseif (a<b) then print*,'(a) is zero and smaller than (b)' else print*,'(a) is zero and (b) is zero ' endif endif end ################################################################################# Problem (11): Write a loop to read (ππ) real numbers and print their sum after all aditions: Solution: s=0.0 read*, n summation: do i=1,n read*,i sum=sum+i print*,sum end do summation end ################################################################################# Problem (12): Write a Fortran program to find the maximum and minimum values among ten
numbers; [read the the numbers from text data file]: Solution: open(5,file='data.txt') read(5,*)x
7
max=x min=x do i=1,9 read(5,*)x if (x>max) max=x if (x<min) min=x enddo write(*,*) 'maximum no.=',max write(*,*) 'minimum no.=',min end ################################################################################# Problem (13): Write a Fortran program to find the number of odd and even integers among (15)
numbers; [read the the numbers from text data file]: Solution: open(5,file='data.txt') odd=0 even=0 do i=1,15 read(5,*)x if (x==(int(x/2)*2)) then even=even+1 else odd=odd+1 endif enddo write(*,*)'number of odd=',odd write(*,*)'number of even=',even end ################################################################################# Problem (14): Write a Fortran program to sort (15) numbers, from minimum to maximum; [read
the the numbers from text data file]: Solution: dimension a(15) open (5,file='data.txt') do i=1,15 read(5,*) a(i) enddo do i=1,14 do j=i+1,15 if (a(i)>a( j))then x=a(i)
8
a(i)=a(j) a(j)=x endif enddo enddo do i=1,15 write(*,*) a(i) enddo end ################################################################################# Problem (15): Write a Fortran program to computes the square rootes of 1, 1.5, 2, 2.5, 3, ......, 10
by Newtonβs method:
πΊπΊπ΅π΅π΅π΅ ππ =πππποΏ½ππ +
πππποΏ½
Solution: do b=1,10,0.5 x=b do xn=0.5*(x+b/x) if (abs (x-xn)<0.00001) exit x=xn enddo print*,'sqrt(',b,')=',x enddo end
################################################################################# Problem (16): Write a Foretran program to show how to write a counting loop with real numbers.
variable π±π± receves values βππ.ππ ,βππ.ππππ ,βππ.ππ ,βππ.ππππ ,ππ. ,ππ.ππππ ,ππ.ππ ,ππ.ππππ ππππππ ππ.ππ; [without using do-loops]
Solution: real , parameter :: lower = -1.0 real , parameter :: upper = 1.0 real , parameter :: step = 0.25 real :: x=lower do if (x>upper) exit print*, x x=x+ step enddo end #################################################################################
9
Problem (17): Write a Fortran program to multiple i and j , where i=1:9 , j=1:9 Solution: integer i, j do i=1,9 do j=1,9 k= i*j print*,k enddo enddo end ################################################################################# Problem (18): Write a program in Fortran 90 to calculate the value of πͺπͺ from the equation below:
ππ = οΏ½οΏ½π¬π¬ β π£π£ππ
π£π£=ππ
ππ
π¬π¬=ππ
Solution: program summation s=0.0 do i=1,3 do j=1,5 s=s+i*j enddo enddo write(*,*)'The result value of S=', s end program summation ################################################################################# Problem (19): Write a Fortran program to sort the following numbers from biger to smaller [use
Data comand to read the numbers]: π±π± = [ππ ,ππ ,βππ ,ππ ,ππ ,ππ ,ππ ,ππ ,ππ ,ππ]
Solution: dimension x (10) Parameter (n=10) data (x(i),i=1,n) /5,8,0,2,6,3,-2,4,9,1/ k=1 10 do i=k,n if (x(k)<x(i)) then s=x(k) x(k)=x(i) x(i)=s endif enddo k=k+1
10
If (k<=n) goto 10 print*,(x(i),i=1,n) end ################################################################################# Problem (20): Write a Fortran program to computes these two quantites from (10) numbers; [read
the the numbers from text data file]:
π±π±οΏ½ =πππποΏ½π±π±π¬π¬ππ
π¬π¬=ππ
ππππ =ππ
ππ β πποΏ½(π±π±π¬π¬ β π±π±οΏ½)ππ
π¬π¬=ππ
Solution: dimension x(10) real::xbar=0 std=0 n=10 open(1,file='data.text') do i=1,n read(1,*) x(i) xbar=xbar+x(i) enddo xbar=xbar/n do i=1,n std=std+(x(i)-xbar)**2 enddo std=sqrt(std/(n-1)) write(*,*)'mean=',xbar write(*,*)'std=',std end ################################################################################# Problem (21): Write a Fortran program to calculate the ages average of (10) students in the first
stage; [read the the numbers from text data file], where:
ππππππ ππππππππππππππ = οΏ½πππ¬π¬ππππ
ππ=ππ
Solution: real,dimension(10)::a open(4,file='data.txt') sum=0.0 do i=1,10 read(4,*) a(i) sum=sum+a(i) enddo
11
average = sum/10 print*,'the age average of student is =',average end ################################################################################# Problem (22): Write a Fortran program to find the average marks of class (10 students) for
computer examination using dimension statement; [read the data from screan]: Solution: real,dimension(10)::x real::s s=0.0 do i=1,10 print*,'supply mark of student no.',i read*, x(i) s=s+x(i) end do print*,'average s core is ', s/10 end ################################################################################# Problem (23): Write a program in Fortran 90 to find the value of ( S ) from sireas bellow:
πͺπͺ = ππ βππππππ
+ππππππ
βππππππ
+ππππππ
βππππππππ
+ππππππππ
Solution: s=1 j=0 do i=2,20,2 j=j+1 s=s+(-1)**j/2.**i enddo print*,'the value of S =',s end ################################################################################# Problem (24): Write a Fortran program to calculate (π¬π¬) from following equation:
π¬π¬ = οΏ½οΏ½(ππ + ππ)ππππ
ππ=ππ
οΏ½
ππ/ππ
Solution: p=0.0 do n=1,10 p=p+(n+5)
12
enddo p=sqrt(p) print*,p end ################################################################################# Problem (25): Write a Fortran program to calculat the value of (π¨π¨π¨π¨) from the following equation,
when (ππ = ππ) and (ππ = ππ):
π¨π¨π¨π¨ = οΏ½οΏ½(ππ + ππ)ππππππ
ππ=ππ
οΏ½
ππ/ππ
Solution: Al=0.0 n=5 m=7 do i=1,12 Al=Al+(m+n)**2 enddo Al=sqrt(Al) print*, Al end ################################################################################# Problem (26): Write a program in Fortran 90 to calculate the resultant matrix πͺπͺ(πΊπΊ, π±π±) from
[πͺπͺ(πΊπΊ, π±π±) = π¨π¨(πΊπΊ, π±π±) + π©π©(πΊπΊ, π±π±)] when:
Solution: integer,dimension(3,3):: a,b,c do j=1,3 do i=1,3 read(*,*)a(i,j),b(i,j) enddo enddo do j=1,3 do i=1,3 c(i,j)=a(i,j)+b(i,j) enddo enddo do i=1,3 write(*,*)(c(i,j),j=1,3) enddo
=
=
906030805020704010
),(,963852741
),( JIBJIA
13
end ################################################################################# Problem (27): Write a program in Fortran 90 to find the transpose of the following matrix:
πΊπΊ = οΏ½ππ ππ ππ ππππππ ππ ππ ππππππ ππ ππ ππππ
οΏ½
Solution: program transpose_array integer,dimension(3,4):: N integer,dimension(4,3):: M do i=1,3 read(*,*)(N(i,j),j=1,4) enddo do i=1,3 do j=1,4 m(j,i) = N(i,j) enddo enddo do i=1,4 write(*,*)(M(i,j),j=1,3) enddo end Program transpose_array ################################################################################# Problem (28): Write a program in Fortran 90 to find the value of matrix π©π© when π²π² = ππ:
Solution: program B_array integer,dimension(2,2)::A,B read(*,*)K do J=1,2 do I=1,2 read(*,*)A(I,J) B(I,J)=K*A(I,J) enddo enddo print*,'The result of matrix' do I=1,2 write(*,*)(B(I,J),J=1,2) enddo end Program B_array
Γ=
3654
KB
14
################################################################################# Problem (29): Write a Fortran program to find the result of multiplication of two matrix
πͺπͺ(ππ,ππ) = π¨π¨(ππ,ππ) β π©π©(ππ,ππ), where:
π¨π¨(ππ,ππ) = οΏ½ππ βππππ ππππ ππ
οΏ½
π©π©(ππ,ππ) = οΏ½βππ ππ ππππ ππ πποΏ½
Solution: integer,dimension(3,2):: A integer,dimension(2,3):: B integer,dimension(3,3):: C write(*,*)'Input the matrix A(3,2)' do i=1,3 read(*,*) (A(i,j),j=1,2) enddo write(*,*)'Input the matrix B(2,3)' do i=1,2 read(*,*) (B(i,j),j=1,3) enddo do i=1,3 do j=1,3 C(i,j)=0 do k= 1,2 C(i,j)=C(i,j)+A(i,k)*B(k,j) enddo enddo enddo do I=1,3 print*, (c(i,j),j=1,3) enddo end #################################################################################