Sunteți pe pagina 1din 4

ECUACIÓN DE COLEBROOK EN FORMA DE FUNCIÓN

function [f0,counter]=ecuacion_colebrook(k,Re_t)
%LT-FA-JM---2019/05/02
%METODOS DE RESOLUCION INTERACTIVA ECUACION COLEBROOK
%INPUT:
%k=rugosidad de la tubería;
%Re_t=numero Reynolds para flujo turbulento
%OUTPUT:
%fx=factor de fricción
%counter=numero de iteraciones
%[fx,count]=ecuacion_colebrook(k,Re_t), así se llama a la funcion.
%----------------------------------------------------------------
%%f0=Re
%for i=1:20
%f1=(-2*log10((k/3.7)+(2.51/(Re*sqrt(f0)))))^(-2);
%f0=f1; %actualizar el valor de f0 para cada iteracion del loop
%end
%se usa while al ser if limitado a 20 o n numeros
%---------------------------------------------------------------------
f0=0.03;%segun tabla Moody, valor de inicio que se reemplaza despues.
%se usa un contador para salir del loop infinito
counter=0;
while true
f=(-2*log10((k/3.7)+(2.51./(Re_t.*sqrt(f0))))).^(-2); %ecuación de
colebrook
precision=abs(f0-f);
if precision < 10^-6 %dada segun la tabla
break %rompe el ciclo while al cumplir dicha precision
end
f0=f;%actualizar el valor de f0 para cada iteracion del loop
counter=counter+1;
end

DIAGRAMA MOODY
%LT-FA-JM 2019/05/04
%GRAFICO MOODY
clc
clear
tic %para contabilizar el tiempo en ejecutar el programa
k=[1e-6,5e-6,1e-5,5e-5,1e-4,2e-4,5e-
4,0.001,0.002,0.005,0.01,0.015,0.02,0.03,0.04,0.05]; %k=rugosidad de la
tubería;
Re_t=2000:100:1e8; %para flujo turbulento
Re_lam=500:10:2000;%para flujo laminar
Re_tr=2000:10:3000;%para transicion
for j=1:length(k)
FX=[]; %vaciar para cada valor de k
for i=1:length(Re_t)
[fx,count]=ecuacion_colebrook(k(j),Re_t(i));%llamar a la funcion
ecuacion_colebrook
FX(i)=fx;%se van almacenando los valores
end
pause(1) %pausa un segundo entre cada linea graficada
loglog(Re_t,FX)%escala x-Re_t logaritmica, k-normal
hold on
end
hold on
f_lam=64./Re_lam;%para flujo laminar
pause(1)
loglog(Re_lam,f_lam)
hold on
f_tr=64./Re_tr;%para transicion
pause(1)
loglog(Re_tr,f_tr,'--')

%EDICIÓN DEL PLOT


axis([600 4e8 0.005 0.1])%eje apropiadado de apreciación
title 'Moody Diagram'
xlabel 'Reynolds Number'
ylabel 'Friction Factor'
rpr=text(6e8,0.045,'Relative Pipe Roughness','FontSize',11);
set(rpr,'Rotation',-90) %tercer eje
grid on
yticks([0.006,0.007,0.008,0.009,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,
0.1]); %Especificar valores y etiquetas de marca del eje y
yticklabels({'0.006','0.007','0.008','0.009','0.01','0.02','0.03','0.04','0.0
5','0.06','0.07','0.08','0.09','0.1'});
f_texto=ecuacion_colebrook(k,1e8);%obtener los valores de FX en los cuales se
tiene un valor de k
k_str=string(k);%hacer string cada valor de k que debe aparecer en el plot
for h=1:length(k)
text(1e8,f_texto(h),k_str(h)) %fijar la posición x y para cada valor de
%f_texto se le asigna un string k_str y
por text se observa en el plot
end
%text en un par oredenado (f,Reynolds) con una flecha izquierda
%cabe destacar que se han añadido las coordenadas por observación directa
%del plot
pause(1)
text(1800,0.036,'\leftarrow Laminar Flow')
pause(1)
text(5e6,0.0092,'\leftarrow Smooth Pipe')
pause(1)
text(3e3,0.022,'\leftarrow Transition Region')
toc
PREVISUALIZACIÓN

INTEGRACIÓN NUMÉRICA
%LT-FA-JM 2019/05/16
%INTEGRACION NUMERICA
format long %para apreciar varias cifras y comparar métodos:
%Ejemplo:
%>>int_1 [ENTER]
%int_1 =
%10.666400000000001
%-------------------------------------------------------------------
%1. ejemplo de integración por rectángulos infinitos
a=0; %Límite inferior
b=4; %Límite superior
n=200; %Número de divisiones de área (precisión)
dx=(b-a)/n;
x=a:dx:b; %valores de x en pasos de dx, se debe eliminar el último valor
de x
%tamanio=numel(x);------> OTRA OPCION
%x(:,tamanio)=[];------> OTRA OPCION
%sol=sum(f_x.*dx);------> OTRA OPCION
f_x=4*x-x.^2; %función a obtener la integral
int_1=sum(f_x(1:end-1)*dx);
%------------------------------------------------------------------
%forma simbólica
syms x %indica variable x como simbólica
f=(-x^2)/(x^3+x);
int(f) %valor de la integral indefinida en forma de símbolos.
f2=(-x^2)/(x^x+x); %restricción de que no exista la integral
int(f2) %no integra
%-----------------------------------------------------
%2. ejemplo de integración por trapecios infinitos

a_2=0; %Límite inferior


b_2=20; %Límite superior
n_2=200; %Número de divisiones de área (precisión)
h_2=(b_2-a_2)/n_2;
x_2=a_2:h_2:b_2 ;%valores de x en pasos de h.
y_2=(-x_2.^2)./(x_2.^x_2+x_2); %función a obtener la integral
int_2=((h_2*y_2(1))/2)+(h_2*sum(y_2(2:end-1)))+((h_2*y_2(21))/2);
%ecuacion para obtener la integral por método trapezoidal manual
%-----------------------------------------------------
%se tienen dos soluciones adicionales:
% 3. Con "trapz"

b_3=20; %Límite inferior


a_3=0; %Límite superior
n_3=200; %Número de divisiones de área (precisión)
h_3=(b_3-a_3)/n_3;
x_3=a_3:h_3:b_3 ;%valores de x en pasos de h.
y_3=(-x_3.^2)./(x_3.^x_3+x_3); %función a obtener la integral
int_3=trapz(x_3,y_3); %trapz, método trapezoidal automático de MATLAB

% 4. Con function
a_4=input('Ingrese el límite inferior de la integral: ');
b_4=input('Ingrese el límite superior de la integral: ');
aumentador=input('Desea aumentar la precisión (SI=1, NO=0): ');
if aumentador==1
n_4=input('Ingrese el número de divisiones de área (a mayor número
mayor precisión): ');
[int_4]=int_num_function(a_4,b_4,n_4);
else
[int_4]=int_num_function(a_4,b_4);
end

FUNCIÓN
function[int_4]=int_num_function(a_4,b_4,n_4)
if nargin <3
n_4=200;
end
h_4=(b_4-a_4)/n_4;
x_4=a_4:h_4:n_4;
y_4=(-x_4.^2)./(x_4.^x_4+x_4);
int_4=trapz(x_4,y_4);
end

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