first step to computer programming with fortran 90

14
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

Upload: omed-ghareb

Post on 10-Apr-2015

270 views

Category:

Documents


11 download

DESCRIPTION

Some simple programs in Fortran 90 for first stage of Physics Department, in College of Science, at University of Sulaimani

TRANSCRIPT

Page 1: First Step to Computer Programming With FORTRAN 90

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

Page 2: First Step to Computer Programming With FORTRAN 90

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

#################################################################################

Page 3: First Step to Computer Programming With FORTRAN 90

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

Page 4: First Step to Computer Programming With FORTRAN 90

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

Page 5: First Step to Computer Programming With FORTRAN 90

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

Page 6: First Step to Computer Programming With FORTRAN 90

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

Page 7: First Step to Computer Programming With FORTRAN 90

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)

Page 8: First Step to Computer Programming With FORTRAN 90

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 #################################################################################

Page 9: First Step to Computer Programming With FORTRAN 90

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

Page 10: First Step to Computer Programming With FORTRAN 90

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

Page 11: First Step to Computer Programming With FORTRAN 90

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)

Page 12: First Step to Computer Programming With FORTRAN 90

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

Page 13: First Step to Computer Programming With FORTRAN 90

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

Page 14: First Step to Computer Programming With FORTRAN 90

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 #################################################################################