Analisis - EjerciciosLab01.Ipynb - Colaboratory
Analisis - EjerciciosLab01.Ipynb - Colaboratory
Analisis - EjerciciosLab01.Ipynb - Colaboratory
Ejercicios de Laboratorio I
Codigo de honor:
Me comprometo a responder de forma individual, sin ayuda, sin comunicación con mis
compañeros o alguien más. Comprendo que yo soy la única persona que sabrá si estoy
respondiendo éticamente los ejercicios y, por lo tanto, decido ser ético al presentar mi trabajo.
Instrucciones
Resolver de forma clara y ordenada los siguientes ejercicios. Debe agregar la cantidad de
codigo y programas necesarios.
Valor : 14%
import sys
import numpy
from math import factorial
import sys
from numpy import exp
from sympy import*
import numpy as np
import sympy as sp
b. Escriba un programa que utilice la definición anterior para calcular el mismo valor
anterior.
c. Encuentre el valor de n para que ambos métodos den una respuesta con los mismos 16
dígitos.
inciso a
y=exp(2.9)
18.1741453694431
inciso b
a=0
for i in range (0,30,1):
a=a+(2.9**i)/factorial(i)
print(a)
18.1741453694431
y , a
(18.1741453694431, 18.1741453694431)
round(y,14)
18.1741453694431
z=0
for i in range (0,26,1):
z=z+(2.9**i)/factorial(i)
print(z),14
1.00000000000000
3.90000000000000
8.10500000000000
12.1698333333333
15.1168375000000
16.8260999166667
17.6522434180556
17.9945028686309
18.1185719194645
18.1585497247331
18.1701432882610
18.1731997731911
18.1739384237159
18.1741031996022
18.1741373317500
18.1741439306320
18.1741451266793
18.1741453307109
18.1741453635827
18.1741453685999
18.1741453693275
18.1741453694279
18.1741453694412
18.1741453694428
18.1741453694430
18.1741453694431
inciso c
round (y,14) ,z
(18.1741453694431, 18.1741453694431)
codigo de biseccion
import numpy as np
def bisection(a,b,fun,tol,kmax):
x=np.array([ a , (a+b)/2 , b ])
fx = fun(x)
if fx[0]*fx[2] > 0 :
print (' El signo de f debe ser diferente en los extremos del intervalo')
elif fx[0] == 0 :
zero , res , niter = a , 0, 0
elif fx[2] == 0 :
zero , res , niter = b , 0, 0
else :
niter = 0
I = ( b - a )*0.5
while I >= tol and niter < kmax :
niter = niter + 1
if fx[0]*fx[1] < 0 :
x[2] = x[1]
x[1] = x[0]+(x[2] - x[0])*0.5
fx = fun(x)
I = (x[2]-x[0])*0.5
elif fx[1]*fx[2] < 0 :
x[0] = x[1]
x[1] = x[0]+(x[2] - x[0])*0.5
fx = fun(x)
I = (x[2]-x[0])*0.5
else :
x[1]=np.find(fx==0)
if niter == kmax and I > tol :
print ('Se alcanzó el max de iteraciones sin convergencia ')
zero = x[1]
x = x[1]
res = fun(x)
return zero, res, niter
A=5.485*10**(-3)
B= 6.65*10**(-6)
C=2.805*10**(-11)
D=-2*10**(-17)
R0=100
Rt=300
f = lambda T:R0*(1+A*T+B*T**2+C*T**4+D*T**6)-Rt
bisection(200,400,f,1e-6,100)
3. La ecuación de van der Waals establece la relación entre la presión P (en atm.), volumen
V (en L.), y temperatura T (en K) para un gas real.
2
nRT n a
P = −
2
V − nb V
def newton(fun,dfun,x0,tol,kmax):
x = x0
fx , dfx = fun(x) , dfun(x)
niter = 0
diff = tol + 1
while diff >= tol and niter < kmax :
niter = niter + 1;
diff = - fx / dfx
x = x + diff
diff = abs ( diff )
fx , dfx = fun(x) , dfun(x)
if niter == kmax and diff > tol :
print (' Newton alcanzo max de iteraciones ')
zero , res = x , fx
return zero, res,niter
R=0.08206
n=1.5
a=1.39
b=0.03913
t=25+273
P=13.5
V=Symbol('V')
fa= lambda V: (n*R*t)/(V-n*b)-(n**2*a)/V**2-P
fa(3)
-1.3765661798079432
fa1=diff(fa(V),V,1)
fa1
36.68082 6.255
− 2 +
V3
(V − 0.058695)
fa11= lambda V: -36.68082/(V-0.058695)**2+6.255/V**3
newton(fa,fa11,5,1e-12,100)
(2.691599427783978, 0.0, 9)
4. Cuando se calcula el pago de una hipoteca, la relación entre el monto del préstamo, Loan,
el pago mensual, Mpay , la duración del préstamo en meses Months y la tasa anual de
interés Rate , está dada por la ecuación
Loan ⋅ Rate
M P ay =
1
12 (1 − )
M onths
Rate
(1+ )
12
Realice las primeras 10 iteraciones del método de bisección y tome ese valor como
aproximación inicial del método de Newton para alcanzar una presición del orden
.
−12
1 × 10
Mpay=1684.57
Months=12*20
Loan=300000
Tasa = lambda t:(Loan*t)/(12*(1-1/(1+t/12)**Months))-Mpay
bisection(0.03,2,Tasa,1e-12,10)
t=Symbol('t')
Tasa1=diff(Tasa(t),t,1)
Tasa1
72000000t 300000
− 2 +
12 − t 12 240
(12 − ) ( 12t + 1)
241
12 ( 12 +1)
240
( 12t +1)
Tasa11=lambda t:-((72000000)*t)/((12-12/(t/12+1)**240)**2*(t/12+1)**241)+300000/(12-12/(t/
Tasa11(0.08)
18670.66662169849
newton (Tasa,Tasa11,0.0309619140625,1e-12,100)
(0.03137843640854579, -3.2514435588382185e-11, 3)
donde
−−−−−−−−
1 2 2
n = (N + √ N + 4n )
2 i
−2.42
T
μ = μ0 ( )
T0
Determinar N, dado T0 ,
= 300K T = 1000K μ0 = 1300cm (V s)
2 −1
,
, , y un ρ objetivo de 6 × 10 .
−19 9 −3 6
q = 1.6 × 10 C n i = 6.21 × 10 cm Vscm\C
ejercicio # 5
T0=300
u0=1300
q=1.6*10**(-19)
ni=6.21*10**9
p=6*10**6
T=1000
u=u0*(T/T0)**(-2.42)
70.56295972119374
n=1/(p*q*u)
14762230365.371134
Den=lambda N:1/2*(N+sqrt(N**2+4*(ni)**2))-n
N=Symbol('N')
Den1=diff(Den(N),N,1)
Den1
4.02576489533011 ⋅ 10−11 N
+ 0.5
6.48271319698891 ⋅ 10−21 N 2 + 1
Den11=lambda N:(4.02576489533011*10**-11*N)/(sqrt(6.48271319698891*10**-21*N**2+1))+0.5
Den11(1)
0.500000000040258
newton (Den,Den11,12149881211.78,1e-6,10000)
ΔH = ∫ cp dT
T1
El fluido A entra al mezclador a 400 ∘ C y el fluido B a 600 ∘ C . Entra dos veces la cantidad
del fluido A con respecto al fluido B.
T=sp.Symbol('T')
cpA= 3.381+1.804*10**-2*T-4.300*10**-6*T**2
cpB=8.592+1.290*10**-1*T-4.078*10**-5*T**2
T=sp.Symbol('T')
cpA1=sp.integrate(cpA,(T,673,T))
cpA1
cpB1=sp.integrate(cpB,(T,873,T))
cpB1
FU=lambda T: -1.43333333333333*10**-6*T*3+0.00902*T**2+3.381*T-5923.92216896667-2*(-1.3593
FU(700)
30176.735286859974
T=Symbol('T')
FU1=diff(FU(T),T,1)
FU1
FU11=lambda T:8.15599999999998*10**-5**T*2-0.23996*T-13.8030043
bisection(672,900,FU,1e-6,100)
Dichos cálculos dependen del régimen bajo representado por el número de Reynolds
adimensional,
ρdv
Re =
μ
En condiciones laminares (Re < 0.1 ),la velocidad de sedimentación de una partícula
esférica se puede calcular con la siguiente fórmula basada en la ley de Stokes,
g ρs − ρ
2
v = ( )d
18 μ
yμ = 0.014 g/(cmxs).
g=9.81
E=1*10**(-6)
d=200*1e-6
p=1000
ps=7874
u=0.0014
Re=lambda v: (p*d*v)/u
(p*d*v)/u
142.857142857143v
v0=(g/18)*((ps-p)/u)*d**2
v0
0.10703799999999998
Cd= lambda v:24/(Re(v))+3/sqrt(Re(v))+0.34
x= lambda v:v- sqrt((4*g)*(ps-p)/(3*Cd(v)*p))
v- sqrt((4*g)*(ps-p)/(3*Cd(v)*p))
1
v − 519.360914971468 504.0 752.994023880668
1020.0 + +
v v
v=Symbol('v')
vel1=diff(x(v),v,1)
vel1
0.000249596748832885 ( 504.0
v2
+ 376.497011940334
3 ) (1020.0 + 504.0
v
+ 752.994023880668
v
) 1020.0+
v2
−
2
(1 + 0.494117647058824
v
+ 0.738229435177125
v
)
a=0.000249596748832885
b=lambda v: (504/v**2)+(376.497011940334)/(v**1.5)
c=lambda v:1020+504/v+(752.994023880668)/(sqrt(v))
d=lambda v:1+(0.494117647058824/v)+(0.738229435177125/sqrt(v))
veli11= lambda v: 1-(a*b(v)*c(v)*(sqrt(1/c(v))))/(d(v)**2)
newton (x,veli11,v0,10**-6,100)
por el metodo de newton no es posibre resolver la funcion esto porque en x1 queda un numero
negativo y en la funcion hay raices
Metodo de biseccion
bisection(13,18,x,1e-6,100)
Re=(p*d*14.6849)/u
Re
2097.842857142857