#. write a fortran code that reads an integer n and...

11
#. Write a fortran code that reads an integer N and Compute Factorial N. Program: INTEGER NUMBER, FACT, N PRINT*,'ENTER A POSITIVE INTEGER' READ*, NUMBER FACT = 1 DO 100 N = 2, NUMBER, 1 FACT = FACT*N 100 CONTINUE PRINT*, FACT STOP END #. Write a fortran code to calculate the sum of the following series: 1 + 1/∟1 + 1/∟2 + ……..+ 1/∟N Program: REAL SUM,I,N INTEGER FACT READ*,N SUM = 1 FACT = 1 DO 100 I = 1,N FACT = FACT*I SUM = SUM + 1/FACT 100 CONTINUE PRINT*,SUM STOP END #. A function F(x) is defined as follows : F(x) = ax3 bx2 + cx d, if x>1 = 0 , if x = 0 = -ax3 + bx2 cx + d, if x<1 Write a program that reads the values of a,b,c,d,x and find the values of F(x). Program: REAL A,B,C,D,X,FUNC READ*,A,B,C,D,X IF(X.GT.1) THEN FUNC = A*X**3-B*X**2+C*X-D ELSE IF(X.EQ.1) THEN

Upload: vuongthien

Post on 18-May-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

#. Write a fortran code that reads an integer N and Compute Factorial N. Program: INTEGER NUMBER, FACT, N PRINT*,'ENTER A POSITIVE INTEGER' READ*, NUMBER FACT = 1 DO 100 N = 2, NUMBER, 1 FACT = FACT*N 100 CONTINUE PRINT*, FACT STOP END

#. Write a fortran code to calculate the sum of the following series: 1 + 1/∟1 + 1/∟2 + ……..+ 1/∟N

Program: REAL SUM,I,N INTEGER FACT READ*,N SUM = 1 FACT = 1 DO 100 I = 1,N FACT = FACT*I SUM = SUM + 1/FACT 100 CONTINUE PRINT*,SUM STOP END

#. A function F(x) is defined as follows : F(x) = ax3 – bx2 + cx – d, if x>1 = 0 , if x = 0 = -ax3 + bx2 – cx + d, if x<1 Write a program that reads the values of a,b,c,d,x and find the values of F(x).

Program: REAL A,B,C,D,X,FUNC READ*,A,B,C,D,X IF(X.GT.1) THEN FUNC = A*X**3-B*X**2+C*X-D ELSE IF(X.EQ.1) THEN

FUNC = 0 ELSE(X.LT.1) THEN FUNC = -A*X**3+B*X**2-C*X+D END IF PRINT*,FUNC STOP END

#. Write a Fortran code to calculate the reaction and member forces of the following truss:

Program: C WRITE A FORTRAN CODE TO CALCULATE THE REACTION AND MEMBER FORCES OF THE FOLLOWING TRUSS: C REAL SPAN,ANGLE,P1,P2,P3,R1,R2,A,B,C,D REAL UU1,U1U2,U2U3,U3U4,UL1,L1L2,L2L3,U4L3,U1L1,U2L2,U3L3,U1L2,U3L2 PRINT*,'SPAN LENGTH' READ*,SPAN PRINT*,'SLOPE ANGLE OF THE TRUSS' READ*, ANGLE PRINT*,'LOADS ON THE TRUSS P1,P2,P3' READ*, P1,P2,P3 C A=SPAN/4 B=A/COS(ANGLE*3.1416/180) C=A*TAN(ANGLE*3.1416/180) D=2*C C C CALCULATION OF REACTION : C R1=(P1*A+P3*2*A+P2*3*A+P1*4*A)/SPAN R2=(2*P1+2*P2+P3)-R1 SINF=SIN(ANGLE*3.1416/180) COSF=COS(ANGLE*3.1416/180)

PRINT*,'LEFT REACTION,R1=',R1,'KIP' PRINT*,'RIGHT REACTION,R2=',R2,'KIP' C C CALCULATION OF BAR FORCES : C UU1=(P1-R1)/SINF UL1=-UU1*COSF U1L1=0 L1L2=UL1 U1U2=(P2*A+P1*2*A-R1*2*A)/(C*COSF+A*SINF) U1L2=(R1-P1-P2+U1U2*SINF)/SINF U3U4=(P2-R2)/SINF U4L3=-U3U4*COSF U3L3=0 L2L3=U4L3 U2U3=(-R2*2*A+P2*2*A+P1*A)/(C*COSF+A*SINF) U3L2=(R2-P1-P2+U2U3*SINF)/SINF U2L2=-((U1L2*SINF)+(U3L2*SINF)) C C RESULT OF BAR FORCES : C PRINT*,'TOP CHORD' PRINT*,'UU1=',UU1,'KIP' PRINT*,'U1U2=',U1U2,'KIP' PRINT*,'U2U3=',U2U3,'KIP' PRINT*,'U3U4=',U3U4,'KIP' PRINT*,'VERTICAL CHORD' PRINT*,'U1L1=',U1L1,'KIP' PRINT*,'U2L2=',U2L2,'KIP' PRINT*,'U3L3=',U3L3,'KIP' PRINT*,'INCLINED BAR' PRINT*,'U1L2=',U1L2,'KIP' PRINT*,'U3L2=',U3L2,'KIP' PRINT*,'BOTTOM CHORD' PRINT*,'UL1=',UL1,'KIP' PRINT*,'L1L2=',L1L2,'KIP' PRINT*,'L2L3=',L2L3,'KIP' PRINT*,'U4L3=',U4L3,'KIP' STOP END

#. Write a Fortran code to calculate the shear force and bending moment at certain interval of the following beam under the given loading condition:

Program:

REAL W,P,L,A,B,C,D,R1,R2,N,SF,BM INTEGER I PRINT*,'ENTER UDL' READ*,W PRINT*,'ENTER CONCENTRATED LOAD,P' READ*,P PRINT*,'ENTER A,B,C,D' READ*,A,B,C,D L=A+B+C+D R1=(P*D+W*B*(B/2+C+D))/L R2=W*B+P-R1 PRINT*,'LEFT REACTION,R1=',R1,'KIP' PRINT*,'RIGHT REACTION,R2=',R2,'KIP' PRINT*,'ENTER THE INTERVAL' READ*,N DO 10 I=0,L,N IF(I.LE.A)THEN SF=R1 BM=R1*I ELSE IF(I.GT.A.AND.I.LE.(A+B))THEN SF=R1-W*(I-A) BM=R1*I-W*(I-A)**2/2 ELSE IF(I.GT.A+B.AND.I.LT.A+B+C)THEN SF=R1-W*B BM=R1*I-W*B*(I-A-B/2) ELSE SF=-R2 BM=-R2*(L-I) END IF PRINT*,'SHEAR FORCE AT',I,'(FT)',SF,'KIP' PRINT*,'BENDING MOMENT AT',I,'(FT)',BM,'KIP-FT' 10 CONTINUE STOP END

#.Write a Program that calculates deflections in a cantilever beam under a given load.Three different loading conditions are analyzed.

Case 1: A single point load at the free end of the beam. Case 2: A single point load at an interior point. Case 3: Load uniformly distributed along the beam.

Program:

INTEGER COND,NOD REAL MOE,MOI,L,TLOAD,UDL,DEFLECTION,X,A,B,STEP,LAST,VARIABLE PRINT*,'ENTER CONDITION NO' READ*,COND PRINT*,'ENTER NUMBER OF DIVISIONS AT WHICH DEFLECTIONS ARE FOUND' READ*,NOD PRINT*,'ENTER MODULUS OF ELASTICITY AND MOMENT OF INERTIA' READ*,MOE,MOI PRINT*,'ENTER LENGTH OF BEAM' READ*,L STEP=L/NOD LAST=L IF(COND.EQ.1)THEN PRINT*,'ENTER TOTAL LOAD' READ*,TLOAD PRINT*,'DISTANCE DEFLECTION' DO 20 X = 0,LAST,STEP VARIABLE=X**3-3*L**2*X+2*L**3 DEFLECTION=(-TLOAD/(6*MOE*MOI))*VARIABLE PRINT*,X,DEFLECTION 20 CONTINUE ELSE IF(COND.EQ.2)THEN PRINT*,'ENTER TOTAL LOAD AND DISTANCE A' READ*,TLOAD,A B = L-A PRINT*,'DISTANCE DEFLECTION' DO 30 X=0,LAST,STEP IF(X.LT.B)THEN VARIABLE=-A**3+3*A**2*L-3*A**2*X

ELSE VARIABLE=(X-B)**3-3*A**2*(X-B)+2*A**3 ENDIF DEFLECTION=(-TLOAD/(6*MOE*MOI))*VARIABLE PRINT*,X,DEFLECTION 30 CONTINUE ELSE PRINT*,'ENTER UNIT LOAD' READ*,UDL TLOAD=UDL*L PRINT*,'DISTANCE DEFLECTION' DO 40 X=0,LAST,STEP VARIABLE=X**4-4*L**3*X+3*L**4 DEFLECTION=(-TLOAD/(24*MOE*MOI*L))*VARIABLE PRINT*,X,DEFLECTION 40 CONTINUE END IF STOP END

#. Write a Fortran Code to calculate the a) Summation & b) Subtraction of two matrices. Program:

PARAMETER (MAXROW=100,MAXCOL=100)

C DIMENSION MATRX1(MAXROW,MAXCOL),MATRX2(MAXROW,MAXCOL) DIMENSION SUM(MAXROW,MAXCOL), SUBT(MAXROW,MAXCOL) C REAL MATRX1,MATRX2,SUM,SUBT INTEGER ROWS1,COLS1,ROWS2,COLS2 C 10 PRINT*, 'DIMENSIONS OF MATRIX 1' READ*, ROWS1,COLS1 PRINT*, 'DIMENSIONS OF MATRIX 2' READ*, ROWS2,COLS2 C IF (ROWS1.GT.MAXROW .OR. COLS1.GT.MAXCOL) THEN PRINT*,'MATRIX 1 TOO BIG ' GO TO 10 ENDIF C IF (ROWS2.GT.MAXROW .OR. COLS2.GT.MAXCOL) THEN PRINT*,'MATRIX 2 TOO BIG ' GO TO 10 ENDIF C PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 1' DO 20 I=1,ROWS1

DO 30 J=1,COLS1 READ*,MATRX1(I,J) 30 CONTINUE 20 CONTINUE C PRINT*,'ENTER ROW-WISE ELEMENT OF MATRIX 2' DO 40 I=1,ROWS2 DO 50 J=1,COLS2 READ*,MATRX2(I,J) 50 CONTINUE 40 CONTINUE C DO 100 I=1,ROWS1 DO 110 J=1,COLS1 SUM(I,J)=MATRX1(I,J)+MATRX2(I,J) SUBT(I,J)=MATRX1(I,J)-MATRX2(I,J) 110 CONTINUE 100 CONTINUE PRINT*,'SUMMATION OF TWO MATRIX' C DO 120 I=1,ROWS1 PRINT*,(SUM(I,J),J=1,COLS1) 120 CONTINUE C PRINT*,'SUBTRACTION OF TWO MATRIX:' DO 60 I =1,ROWS1 PRINT*,(SUBT(I,J),J=1,COLS1) 60 CONTINUE STOP END

#. Write a Fortran code to calculate the multiplication of two matrices. Program:

PARAMETER (MAXROW=100,MAXCOL=100)

C DIMENSION MATRX1(MAXROW,MAXCOL),MATRX2(MAXROW,MAXCOL) DIMENSION PROD(MAXROW,MAXCOL) C REAL MATRX1,MATRX2,PROD INTEGER ROWS1,COLS1,ROWS2,COLS2 C 10 PRINT*, 'DIMENSIONS OF MATRIX 1' READ*, ROWS1,COLS1 PRINT*, 'DIMENSIONS OF MATRIX 2' READ*, ROWS2,COLS2 C IF (COLS1.NE.ROWS2) THEN PRINT*,'MATRIX MULTIPLICATION IS NOT POSSIBLE '

GO TO 10 ENDIF C IF (ROWS1.GT.MAXROW .OR. COLS1.GT.MAXCOL) THEN PRINT*,'MATRIX 1 TOO BIG ' GO TO 10 ENDIF C IF (ROWS2.GT.MAXROW .OR. COLS2.GT.MAXCOL) THEN PRINT*,'MATRIX 2 TOO BIG ' GO TO 10 ENDIF C PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 1' DO 20 I=1,ROWS1 DO 30 J=1,COLS1 READ*,MATRX1(I,J) 30 CONTINUE 20 CONTINUE C PRINT*,'ENTER ROW-WISE ELEMENTS OF MATRIX 2' DO 40 I=1,ROWS2 DO 50 J=1,COLS2 READ*,MATRX2(I,J) 50 CONTINUE 40 CONTINUE C DO 60 I=1,ROWS1 DO 70 J=1,COLS2 PROD(I,J)=0.0 DO 80 K=1, COLS1 PROD(I,J)=PROD(I,J)+MATRX1(I,K)*MATRX2(K,J) 80 CONTINUE 70 CONTINUE 60 CONTINUE C PRINT*,'PRODUCT OF TWO MATRICES' DO 90 I =1,ROWS1 PRINT*,(PROD(I,J),J=1,COLS2) 90 CONTINUE C STOP END

#. Write a fortran code to find the solution of simultaneous equations by gauss elimination method. Program: DIMENSION A(20,21),X(20)

INTEGER N,K,I,J PRINT*,'ENTER VALUE OF N' READ*,N PRINT*,'ENTER THE ELEMENTS ROW WISE' READ*,((A(I,J),J=1,N+1),I=1,N) DO 10 K = 1,N-1 T = A(K,K) IF(T.EQ.0) STOP 'ZERO DIVISION,RETRY' DO 10 I = K+1,N U = A(I,K)/T DO 10 J = K,N+1 A(I,J) = A(I,J)-U*A(K,J) 10 CONTINUE X(N) = A(N,N+1)/A(N,N) DO 14 I = N-1,1,-1 SUM = 0.0 DO 13 J= I+1,N SUM = SUM + A(I,J)*X(J) 13 CONTINUE X(I) = (A(I,N+1)-SUM)/A(I,I) 14 CONTINUE PRINT*,'SOLUTION OF THE EQUATION IS' DO 16 I = 1,N PRINT*,I,X(I) 16 CONTINUE STOP END

#. Write a fortran code to find the solution of simultaneous equations by GAUSS JORDAN method.

Program: DIMENSION A(20,21),X(20) INTEGER N,K,I,J PRINT*,'ENTER VALUE OF N' READ*,N PRINT*,'ENTER THE ELEMENTS ROW WISE' READ*,((A(I,J),J=1,N+1),I=1,N) DO 10 K = 1,N P = A(K,K) IF(P.EQ.0) STOP 'ZERO DIVISION,RETRY' DO 20 J = K,N+1 A(K,J) = A(K,J)/P 20 CONTINUE DO 30 I = 1,N IF(I.NE.K) THEN C = A(I,K) DO 40 J = K,N+1 A(I,J) = A(I,J)-C*A(K,J) 40 CONTINUE

END IF 30 CONTINUE 10 CONTINUE DO 50 I = 1,N X(I) = A(I,N+1) 50 CONTINUE PRINT*,'SOLUTION OF THE EQUATIONS IS' DO 100 I = 1,N PRINT*,I,X(I) 100 CONTINUE STOP END

#. Write a fortran code to implement newton’s forward difference formula. Program: DIMENSION X(20),Y(20),D(20,20) INTEGER FACT,N PRINT*,'ENTER NUMBER OF POINTS' READ*,N PRINT*,'ENTER', N ,'SETS OF POINTS AS (X,Y)' READ*,(X(I),Y(I),I = 1,N) PRINT*,'VALUE OF X FOR INTERPOLATION' READ*,A IF((A.LT.X(1)).OR.(A.GT.X(N))) THEN STOP 'VALUE LIES OUTSIDE RANGE' END IF DO 10 I = 2,N IF(X(I).GT.A) GO TO 20 10 CONTINUE 20 K = I-1 CALL FORDIFF(Y,D,N) U = (A-X(K))/(X(K+1)-X(K)) S = Y(K) DO 50 I = 1,N-K P = 1.0 DO 60 J = 0,I-1 P = P*(U-J) 60 CONTINUE FACT = 1 DO 100 L = 2,I-1 FACT = FACT*L 100 CONTINUE S = S+D(K,I)*P/FACT 50 CONTINUE PRINT*,S,A STOP END

SUBROUTINE FORDIFF(Y,D,N) DIMENSION Y(N),D(N,N) INTEGER N DO 30 J = 1,N-1 DO 30 I = 1,N-J IF(J.LT.2) THEN D(I,J) = Y(I+1)-Y(I) ELSE D(I,J) = D(I+1,J-1) - D(I,J-1) END IF 30 CONTINUE RETURN END