Académique Documents
Professionnel Documents
Culture Documents
1. Utilizando programación modular, determinar el campo magnético que genera una espira de alambre en
cualquier punto del espacio. Utilizar programación modular para determinar la función factorial y las
funciones especiales.
SOLUCIÓN:
MODULE CONSTANTE
IMPLICIT NONE
!SAVE
REAL :: A=0.1
REAL :: I=2.0
REAL :: Pi = 3.1415927
REAL :: TETA=10.0
REAL :: R=10.0
CONTAINS
IMPLICIT NONE
REAL :: I,TETA,R,MU,SUM
MU = 4.0*PI*(10.0**(-7.0))
SUM=(1+(15.0*(A**2.0)*(R**2.0)*(SIN(TETA*(PI/180.0))**2.0))/(8.0*((A**(2.0) + R**(2.0))**(3.0/2.0))))
REAL :: I,TETA,R,MU,SUM,MODU
MODU=(A**2.0+R**2.0)
MU = 4.0*PI*(10.0**(-7.0))
SUM=(2.0*A**2.0-R**2.0+ (15.0*(A**2.0)*(R**2.0)*(SIN(TETA*PI/180.0)**2.0)*(4.0*A**2.0-3.0*R**2.0))/
(8.0*MODU**2.0))
B_TETA = -(((MU*I*(A**(2))*SIN(TETA*(PI/180.0))))/(4.0*((MODU)**(3.0/2.0))))*SUM
Ingresamos el Programa
Programa principal
PROGRAM CAMPO_B
USE CONSTANTE
IMPLICIT NONE
INTEGER :: T
11 WRITE(*,*)'DESEA LEER DESDE ARCHIVO LOS BALORES DESDA ARCHIVO O INTRODUCIR LOS DATOS'
READ(*,*)T
IF (T==1) THEN
WRITE(*,*)'TRABAJO DE COMPUTACIONALES'
READ(*,*)I
READ(*,*)TETA
READ(*,*)R
WRITE(*,*)B_R(I,TETA,R)
WRITE(*,*)B_TETA(I,TETA,R)
READ(4,*)I,TETA,R
WRITE(*,*)I,TETA,R
WRITE(*,*)B_R(I,TETA,R)
WRITE(*,*)B_TETA(I,TETA,R)
ELSE
GOTO 11
END IF
Ingresamos el Programa
TENIENDO LOS DOS PROGRAMAS JUNTOS PROCEDEMOS A COPILAR.
Copilamos:
2. Elaborar un programa, con programación modular en fortran, para que lea desde un archivo los datos
experimentales y determine su ajuste de curva, función correlación y prueba t-student.
3.
SOLUCIÓN:
Utilizando programación modular:
AJUSTE DE CURVA
save
REAL(4) X(100),Y(100),Y2(100)
integer n
WRITE(*,*)''
CONTAINS
READ(*,*)N
DO I=1,N
READ(*,*)X(I),Y(I)
END DO
! OPEN(UNIT=5,FILE='DATOS.TXT',ACTION='READ')
! DO I=1,N
! READ(5,*)X(I),Y(I)
! END DO
SUMA1=0
SUMA2=0
SUMA3=0
SUMA4=0
DO I=1,N
SUMA1=SUMA1+X(I)
SUMA2=SUMA2+Y(I)
SUMA3=SUMA3+X(I)*X(I)
SUMA4=SUMA4+X(I)*Y(I)
END DO
A=(SUMA4-(SUMA1*SUMA2)/N)/(SUMA3-(SUMA1*SUMA1)/N)
B=(SUMA2-A*SUMA1)/(N)
WRITE(*,*)' RESULTADOS'
WRITE(*,15)A
WRITE(*,16)B
WRITE(*,*)' N X Y(AJUSTADO)'
!REEVALUACION DE LA FUNCION
OPEN (1,FILE='REGLIN.TXT')
DO I=1,N
Y2(I)=A*X(I)+B
WRITE(*,10)I,X(I),Y2(I)
WRITE(1,10)I,X(I),Y2(I)
END DO
10 FORMAT(IX,I3,2(F8.4,IX))
15 FORMAT(IX,'PENDIENTE-',F8.4)
AJUSTE DE CURVA_programa
PROGRAM pregunta_2
USE AJUSTE
!IMPLICIT NONE
REAL X(100),Y(100),Y2(100)
INTEGER N
WRITE(*,*)'TRABAJO DE COMPUTACIONALES'
READ(*,*)N
DO I=1,N
READ(*,*)X(I),Y(I)
END DO
! OPEN(UNIT=5,FILE='DATOS.TXT',ACTION='READ')
! DO I=1,N
! READ(5,*)X(I),Y(I)
! END DO
CLOSE(5)
WRITE(*,*)' RESULTADOS'
WRITE(*,15)A
WRITE(*,16)B
WRITE(*,*)' N X Y(AJUSTADO)'
!REEVALUACION DE LA FUNCION
OPEN (1,FILE='REGLIN.TXT')
DO I=1,N
Y2(I)=A*X(I)+B
WRITE(*,10)I,X(I),Y2(I)
WRITE(1,10)I,X(I),Y2(I)
END DO
10 FORMAT(IX,I3,2(F8.4,IX))
15 FORMAT(IX,'PENDIENTE-',F8.4)
16 FORMAT(IX,'INTERSECCION CON EL EJE Y =',F8.4)
END program
End
ENCONTRAMOS UN ERROR.
FUNCION CORRELACION
PROGRAM CORRELACION
REAL XSUM, XX
REAL X(100),EX(100)
INTEGER N,J,M
OPEN(3,FILE='DATA2.TXT')
DO I=1,8
READ(3,*)X
END DO
OPEN(5,FILE='CALCULO1.TXT')
N=1000
XMEDIO=0
DO J=1,N
READ(3,*) EX(J)
XMEDIO=XMEDIO+EX(J)
END DO
XSUM=XMEDIO/N
DO M=1,N
IF (M.LE.J)THEN
XX=0
DO J=1,N
X(J)=X(J)-XSUM
X(J+M)=X(J+M)-XSUM
XX=XX+X(J)*X(J+M)
END DO
ENDIF
XX=XX/N
WRITE(5,*)M,XX
END DO
END
NOTA:
Para cada programa, al correrlo y demostrar su funcionamiento al contrastar con resultados probados.
Correo: rjalva@gmail.com