Sunteți pe pagina 1din 7

Universidad Idustrial De Santander

Escuela de Ingenierı́a de Petróleos


Curso: Métodos Númericos para Ingenierı́a
Asunto: Material de preparación parcial I
Profesor: Eduardo Carrillo Zambrano PhD
Nombre: Jonathan Budez Vergara

Modelos matemáticos y diferencias finitas

1. La ecuación (1) es un modelo que relaciona la aceleración de un cuerpo que cae con las
fuerzas que actúan sobre él. Una modificación de esta ecuación diferencial, es la relación no
lineal mostrada en (2):

dv c
=g− v (1)
dt m
0 2
FU = −c v (2)

donde c0 = a un coeficiente de arrastre de segundo orden (Kg/m). Usando la relación, utilice las
diferencias finitas con los valores (ti = 0), un tamaño de paso de 2 s, g = 9.8 m/s2 , m = 68.1 Kg,
vi = 0 m/s y un valor de c0 = 0.23 Kg/m.

Desarrollo:

FU = −c0 v 2

dv c0
= g − v2
dt m
dv vi+1 − vi c0
= = g − v2
dt ti+1 − ti m

1ra iteracion:

c0 2
vi+1 − vi = (g − m v )(ti+1 − ti )

c0 2
vi+1 = vi + (g − m v )(ti+1 − ti )

ti+1 − ti = 2 s vi = 0
m
vi+1 = 0 + (9.8 − 0.23
68.1 (0))(2) s
m
vi+1 = 19.6 s
2da iteracion:

m
vi+1 = 19.6 + (9.8 − 0.23
68.1 (19.6))(2) s
m
vi+1 = 39.06 s

Podemos usar como herramienta un programa que nos permita hacer las iteraciones calculando su
respectivo error, el planteamiento lógico (diagrama de flujo) se muestra a continuación, seguido
del código del programa hecho en Fortran.


Inicio

?
g, c0 , h, vi , m, tol

?
E=1
i=0

-
?
@
@
No
|E| > tol
@
@ Si ?
? i, E, vi
c0 2
vi+1 = vi + (g − v )(h)
m i


vi+1 − vi ?
E = 
vi+1
Fin
vi = vi+1

i=i+1

Los comandos “character(len=20)nombre” son utilizados para que el programa busque los datos
en archivo (open(unit=120,file=TRIM(nombre),action=‘read’,status=‘old’)), de igual manera
este también tiene un uso en impresión, el cual consiste en un archivo creado por el usuario con
el nombre que desea para que sus datos queden almacenados en este (open(unit=120,file=TRIM
(nombre),action=’write’,status=’replace’)).
program aproximacion
integer::i
real*8::g,c,h,vi,m,tol,e,temp,vj
character(len=20)nombre
write(*,*)’Escriba el nombre del archivo’
read(*,*)nombre
open(unit=100,file=TRIM(nombre),action=’read’,status=’old’)
read(100,*)g
read(100,*)c
read(100,*)h
read(100,*)vi
read(100,*)m
read(100,*)tol
close(100)
e=1.0
i=0
write(*,*)’Escriba el nombre del archivo a guardar’
read(*,*)nombre
open(unit=120,file=TRIM(nombre),action=’write’,status=’replace’)
do while(abs(e)>tol)
vj=vi+(g-(c/m)*(vi))*(h)
e=abs((vj-vi)/vj)
vi=vj
i=i+1
write(120,*)e,vj,i
end do
close(120)
end program aproximacion

2. La cantidad de contaminante radiactivo uniformemente distribuido en un reactor cerrado


está medida por concentraciones c (becquerel/litro, o Bq/L). El contaminante decrece a una
velocidad de caı́da proporcional a esa concetración; Esto es:

Velocidad de caı́da = −kc

donde k = a una constante por unidad de dı́a−1 . El balance de masa se representa como:

dc
= −kc
dt

Cambio de masa = Decremento por decaimiento, Use los métodos numéricos para resolver
la ecuación de t = 0 a 1d, con k = 0.1d−1 .Y emplee un tamaño de paso de ∆t = 0.1.La
concentración de t = 0 es 10 Bq/L.
Desarrollo:
dc
= −kc
dt
ci+1 − ci
= −kc
ti+1 − ti
ci+1 = ci − kc(ti+1 − ti )
El diagrama de flujo para este problema es similar al anterior, y se muestra a continuación


Inicio

?
ci , k, ∆t

ti = 1

-
?
@
ti ≤ 1@
No

@
@ Si ?
? ci+1

ti+1 = ti + ∆t

ci+1 = ci − kci (ti+1 − ti )


?

Fin
ti = ti + ∆t

ci = ci+1

program aproximacion2j
real::ci,ti,dt,k,tf,cj
write(*,*)’digite los datos’
read(*,*)ci
read(*,*)k
read(*,*)dt
ti=0.0
do while (ti<=1)
tf=ti+dt
cj=ci-(k*ci*(tf-ti))
ti=ti+dt
ci=cj
write(*,*)ci,’[Bq/Lt]’
end do
end program aproximacion2j
3. Usando los términos de la serie de Taylor, aproxime la función f (x) = sen(x) en x0 = π/4
con base en el valor de la función f y sus derivadas en el punto x1 = π/6. Empiece con solo el
termino n=0 agregando sucesivamente un término hasta que el error porcentual sea menor que
la tolerancia, tomando 5 cifras significativas.

Rta//

f (xi+1 ) = f (xi ) + f (xi )(xi+1 − xi ) + f (xi ) (xi+12!−xi ) + ... + f (n) (xi+1n!−xi )


0 00 2 n

A partir de la serie de taylor creamos un algoritmo en lenguaje fortran que siga el procedimiento
iterativo y arroje los resultados mostrados a continuación (Tabla1):

program aproximacionseno
integer::n,m,j,y,w
real::xo,xi,tol,h,f,e,dev,r,g,a,fact
character(len=20)::nombre
write(*,*)’Escriba el nombre del archivo’
read(*,*)nombre
open(unit=120,file=TRIM(nombre),action=’read’,status=’old’)
read(120,*)n
read(120,*)xo
read(120,*)xi
close(120)
tol=((0.5)*(10**(2-n)))/100
h=xo-xi
f=0.0
e=1.0
m=0
dev=0.0
w=0
y=0
g=sin(xi)
write(*,*)’Escriba el nombre del archivo a guardar’
read(*,*)nombre
open(unit=100,file=TRIM(nombre),action=’write’,status=’replace’)
do while(e>tol)
r=((dev)*(h**m))/(fact)
g=g+r
e=abs((g-f)/(g))
f=g
m=m+1
a=m-(int(m/2))*2
if(a==0)then
fact=1.0
do j=1,m,1
fact=(fact)*j
end do
dev=(sin(xi))*((-1)**(w+1))
w=w+1
else
fact=1.0
do j=1,m,1
fact=(fact)*j
end do
dev=(cos(xi))*((-1)**(y+2))
y=y+1
end if
write(100,*)m,e,f
end do
close(100)
end program aproximacionseno

Iteraciones Error Sen(x0 )


1 1.0000 0.50000
2 0.31198 0.72672
3 2.4147 × 10−2 0.70950
4 3.6632 × 10−3 0.70700
5 1.38412 × 10−4 0.70710
6 1.2560 × 10−5 0.70711
7 3.37171 × 10−7 0.70711

Tabla 1: Resultados ejercicio 3

4. Se planea construir una estanterı́a de libros cuya altura se encuentra entre 8 12 ” y 11” con
una longitud de 29”. La estanterı́a está construida en madera cuyo Modulo de Young es de
3.667 M si con un grosor de 3/8” y un ancho de 12”. Encontrar la máxima deflexión vertical de
la estanterı́a dada por:

v(x) = 0.42493 × 10−4 x3 − 0.13533 × 10−8 x5 − 0.66722 × 10−6 x4 − 0.018507x

Donde x es la posición a lo largo de la viga. Por lo tanto para encotnrar la máxima deflexión se
dv
necesita saber cuándo f (x) = dx = 0 y hace la prueba de la segunda derivada (Figura 1).
x

Figura 1: Estanteria
La ecuación que da la posición x donde la deflexión es máxima esta dada por:

−0.67665 × 10−8 x4 − 0.26689 × 10−5 x3 + 0.12748 × 10−3 x2 − 0.018507 = 0

Use el método de Newton-Raphson para encontrar la posición x donde la deflexión es máxima.


Utilice tres iteraciones para llegar a la raı́z de la ecuación anterior. Calcule el error relativo
absoluto al final de cada iteración y el número correcto de cifras significativas al final de cada
iteración.

Rta/

El codigo del ejercicio anterio java se presenta a continuación junto a los resultados (Tabla 2).

public static void main(String[] args) {


int i;
double xi,v,dv,xs,p,r,e;
Scanner reader = new Scanner (System.in);
System.out.println("Escribe el valor xi");
xi=reader.nextDouble();
i=0;
p=0;
e=1;
while(i<100 & e>0.0001){
v=(-0.67665e-8)*(Math.pow(xi,4))-(0.26689e-5)*(Math.pow(xi,3))
+(0.12748e-3)*(Math.pow(xi,2))-(0.018507);
dv=(2.54958e-4)*(xi)-(2.7066e-8)*(Math.pow(xi,3))-(8.00658e-6)*(Math.pow(xi,2));
xs=xi-(v/dv);
r=(xs-p)/xs;
e=Math.abs(r);
p=xs;
xi=xs;
i=i+1;
System.out.println(i);
System.out.println(xs);
}
// TODO code application logic here
}

Iteraciones Raiz Error %


1 16.53810976770325 100
2 14.55228293681113 13.646153249733878
3 14.57245274464426 0.1384105214583078
4 14.57245222059074 3.596193058770515 × 10−6

Tabla 2: Resultados ejercicio 4

S-ar putea să vă placă și