Beruflich Dokumente
Kultur Dokumente
Unidad de aprendizaje:
“TALLER DE PROGRAMACIÓN”
PROFESOR: MIGUEL HESIQUIO GARDUÑO
Proyecto Final
EQUIPO:
2PV41
13/JUNIO/2018
1
ALGORITMOS
𝑎 = 𝑒 𝑎𝑖
𝑉𝑖 = 𝑙𝑛𝑌𝑖
𝑛(∑𝑛𝑖=1 𝑈𝑖𝑉𝑖) − ŪṼ
𝑏=
𝑛(∑𝑛𝑖=1 𝑈𝑖 2 ) − Ū2
𝐴 = Ṽ − 𝑏Ū
𝑎 = 𝑒𝐴
DIAGRAMA
2
I
n,x,y
Case
j=1 j=2 j=3
default
yc yc yc ¡Error!
F
3
CÒDIGO
!Inicio de programa
program ajuste
implicit none
real::sumx,sumxx,sumy,sumxy,xx,xy,yp,a,ai,b,yc
real,dimension(100)::x,y
integer::i,n,j
write(*,*)'***********¡Hola Usuario!***********'
!Introducción al programa
write(*,*)'Este programa realiza un análisis de regresión para el ajuste de diferentes
modelos’
!Selección de método
write(*,*)'¿Con qué modelo desea trabajar?'
write(*,*)'líneal (1), exponencial(2) o potencia(3) (Ingrese el número de la opción
deseada)'
read(*,*)j
end do
case(2)
end do
4
case(3)
end do
case default
write(*,*)'Seleccione una opción de modelo valida'
end select
pause
end program ajuste
!Subrutina
subroutine minimos (x,y,n,a,b,)
!Neutro aditivo
sumx=0
sumy=0
sumy2=0
sumxx=0
sumxy=0
sumxy2=0
sumu=0
sumv=0
sumuu=0
sumuv=0
!Método Líneal
open(unit=1,file=datosequiz.dat,action=’read’)
open(unit=2,file=datosye.dat,action=’read’)
do i=1,n
5
read(1,*)x(i)
read(2,*)y(i)
sumx=sumx+x(i)
sumy=sumy+y(i)
xx=x(i)**2
sumxx=sumxx+xx
xy=x(i)*y(i)
sumxy=sumxy+xy
!Solo para exponencial
yp=log(y(i))
sumy2=sumy+yp
xy2=x(i)*yp
sumxy2=sumxy+xy2
!Potencial
u=ln(x(i))
sumu=sumu+u
v=ln(y(i))
pu=sumu./n
pv=sumv./n
uu=u**2
sumuu=sumuu+uu
uv=u*v
sumuv=sumuv+uv
end do
a=(sumy*sumxx-sumxy*sumx)/(n*sumxx-(sumx**2)
b=(n*sumxy-sumx*sumy)/(n*sumxx-(sumx**2)
a2=(sumy2*sumxx-sumxy2*sumx)/(n*sumxx-(sumx**2)
a2i=exp(a2)
b2=(n*sumxy2-sumx*sumy2)/(n*sumxx-(sumx**2)
b3=((1/n)*sumuv-pu.*pv)
a3=pv-(b*pu)
a3i=exp(a3)
6
CÒDIGO EN FORTRAN
7
BLOC DE NOTA CON VALORES
8
EJEMPLO
n= 8
2- Lectura de datos, ingresar ‘x’ y ‘y’ para calcular integrar por método de
trapecio.
DIAGRAMA
9
I
Fa(a**2)/2
Fb(b**2)/2 Calculo de funciones
Deltax(b-a)/ne
CALCULO DE deltax
Suma0
NEUTRO ADITIVO
n0 1<=n
nn+1
SI ERROR=0 NO
Fx=(x**2)/2
Sumasuma+Fx
Fx,suma
integral
CÒDIGO
10
!-----------------------INTEGRAL---MÉTODO----TRAPECIO-----------
!-------CÓDIGO----2PV41----------------------------------------------------
!------------------------------------------------------------------------------------
! INTEGRAL
! MÉTODO DE TRAPECIO
!------------------------------------------------------------------------------------
!---------------------INICIO PROGRAMA-----------------------------------
program intetra
implicit none
integer,parameter::LU=10!Unidad I/0deldisco
!--------------------DECLARAR VARIABLES------------------------------
integer::i,ne
real::x,fx,a,b,fa,fb,deltax,integral,suma
integer::ierror!Parametro de error
write(*,*)'Bienvenidos, el programa calculará la integral definida de una función simple'
write(*,*)'Por favor, ingrese el valor inicial(a), y el valor final (b)'
read(*,*)a,b
write(*,*)'¿Cuántos datos desea ingresar?
read(*,*)ne
!-----------------CALCULO DE FUNCIONES----------------------------
fa=(a**2)/2
fb=(b**2)/2
!---------------CALCULO DE DELTA X-----------------------------------
deltax=(b-a)/ne
write(*,*)'Delta x es igual a', deltax
!------------------Neutro aditivo--------------------------------------------
suma=0
!------------------APERTURA DEL ARVHIVO-------------------------
open(UNIT =LU,FILE='integraldatos.txt')
!---------------------LECTURA DE VALORES-------------------------
DO
read(LU,*,IOSTAT=ierror)x
if(ierror/=0)exit
n=n+1
fx=(x**2)/2
suma=suma+fx
write(*,*)'Fx=', fx
end do
write(*,*)'La suma es=', suma
integral=(suma+(fa+fb)/2)*deltax
!----------------------IMPRESIÓN DE RESULTADOS----------------
write(*,*)'el resultado de la integral es=', integral
!---------------------FINALIZAR PROGRAMA-------------------------
end program intetra
CÒDIGO EN FORTRAN
11
BLOC DE NOTA CON VALORES
CAPTURA DE PANTALLA
12
3- Lectura de datos “x” y “y”, con su derivación numérica.
13
CÒDIGO
program der
implicit none
INTEGER::i,n,ie,kl
REAL::x1,x2,y1,y2,m
real dimension(60),x0,y0
WRITE(*,*)"PROGRAMA DERIVADAS NUMERICAS"
WRITE(*,*)"DERIVADA CENTRADA=1,ADELANTE=2,ATRAS=3"
READ(*,*)n
OPEN(unit=10,file='datos.txt')
OPEN(unit=11,file='daty.txt')
do i=1,5
read(10,*,IOSTAT=ie)x0
print*,x0
end do
do i=1,5
read(11,*,IOSTAT=kl)y0
print*,y0
end do
if (n==1) then
WRITE(*,*)"INGRESE EL LOS VALORES DE X2,Y2"
READ(*,*)x2,y2
m=(x2-x0)/(y2-y0)
WRITE(*,*)"el valor de m es",m
end if
if(n==2) then
WRITE(*,*)"INGRESE EL LOS VALORES DE X1,Y1,X2,Y2"
READ(*,*)x1,y1,x2,y2
m=(x2-x1)/(y2-y1)
WRITE(*,*)"el valor de m es",m
end if
if(n==3) then
WRITE(*,*)"INGRESE EL LOS VALORES DE X1,Y1"
READ(*,*)x1,y1
m=(x1-x0)/(y1-y0)
WRITE(*,*)"el valor de m es",m
end if
CLOSE(10)
CLOSE(11)
end program der
CÒDIGO EN FORTRAN
14
4- Factorial como subrutina y agregar el cálculo de serie de potencias.
15
CÒDIGO
program principal_prueba
implicit none
integer j,ifact
write(*,*)'Programa para calcular factorial'
write(*,*)'Ingresa el numero que deseas obtener factorial'
read *,j
! ifact es una función externa y j es el argumento actual
write (*,*)'El factorial de',j," es",ifact(j)
end program principal_prueba
function ifact(k)
implicit none
integer k,ifact,i
! Cálculo del factorial de k
! k es el argumento fingido
ifact=1
do i=2,k
ifact=ifact*i
end do
! el resultado devuelto es el valor almacenado en la variable ifact
return
end function ifact
CÒDIGO EN FORTRAN
16
5- Punto fijo, 2 variables.
17
CÒDIGO
program punto_fijo
!este programa sirve para calcular la T de burbuja
implicit none
!variables a utilizar
real::gama1,gama2,Lng1,Lng2,T,P,x1,x2,Pcal,Tcal,Error,Tsup,To
real::s
integer::i,n,m
real,dimension(5)::a,b,c,LogPo,Po
write(*,*)'Este programa sirve para calcular la T de burbuja'
write(*,*)'ingresa el valor de la presion del sistema en mmHg'
read(*,*)P
write(*,*)'Ingresa la fraccion mol del primer componente'
read(*,*)x1
x2=1-x1
write(*,*)'El valor de las constantes de Antoine para cada compuesto'
do i=1,2,1
! valores de las constantes de Antonie para cada compuesto
write(*,*)'Ingresa los valores para la ecuacion de Antoine'
write(*,*)'a'
read(*,*)a(i)
write(*,*)'b'
read(*,*)b(i)
write(*,*)'c'
read(*,*)c(i)
end do
s=2
do while (s==2)
!iteracion para calcular la T
write(*,*)'Suponer un valor de temperatura en øC'
read(*,*)T
do i=1,2,1
LogPo(i)=(a(i)-(b(i)/(c(i)+T)))
Po(i)=(10**(LogPo(i)))
end do
Lng1=((0.287+(2*(0.257-0.287)*x1))*(x2**2))
lng2=((0.257+(2*(0.287-0.257)*x2))*(x1**2))
gama1=exp(Lng1)
gama2=exp(Lng2)
Pcal=(Po(1)*x1*gama1)+(Po(2)*x2*gama2)
Error=((P-Pcal)/P)*100
write(*,*)'El error es=',Error
18
write(*,*)'P sistema',P
write(*,*)'Pcal',Pcal
end do
write(*,*)'La temperatura es=',T
pause
end program punto_fijo
CÒDIGO EN FORTRAN
19