Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Resumen. El objetivo principal del taller es resolver el problema clásico de encontrar las raı́ces de una
función no lineal. En general, cada problema dado se enuncie con un contexto de ingenierı́a (civil) para
a partir de allı́ construir el modelo matemático de problema. Su solución numérica se define usando
funciones hechas en MATLAB. El análisis del problema y la solución obtenida, junto al comportamiento
del método numérico utilizado debe ser una parte principal del taller.
El taller será evaluado siguiendo la tabla de cotejo dada para los talleres de esta unidad.
Palabras clave: Método numéricos para funciones no lineales, Métodos de Bisección, Secante, Newton-
Raphson.
ÍNDICE
1 INTRODUCCIÓN 1
4 EJERCICIOS 9
4.1 LISTA 1: Implementación de métodos para cero de funciones . . . . . . . . . . 9
1
Notas de clases usadas para el curso de Métodos Numéricos de la Escuela de Ingenierı́a Civil, UIS.
1 INTRODUCCIÓN
El taller busca introducir al estudiante en el tema de modelado y simulaciones numéricas
de problemas aplicados a la ingenierı́a, particularmente a la civil. Por tal motivo, se inicia con
un problema que resulta clásico dentro de los métodos numéricos y se aborda en los primeros
temas de un curso formal de métodos en la carrera. Ası́, la idea central es resolver problemas
que involucren la necesidad de encontrar las raı́ces (ceros) de funciones no lineales pero con un
contexto aplicado.
Antes de plantear los problemas a resolver, se hace, a modo de ejemplo, el planteamiento de
un problema, su formulación matemática y su solución numérica (Ejemplo tomado de Chapra
(1)). Posteriormente se quiere que el estudiante resuelva una lista de problemas siguiendo las
estrategias planteadas y desarrolle un pequeño informe sobre los resultados obtenidos.
Q = U Ac (1)
1
Debe observarse que la ecuación de continuidad se obtiene de la conservación de la masa.
2
donde Ac = área de la sección transversal del canal (m2 ). Dependiendo de la forma del canal, el
área puede relacionarse con la profundidad por medio de varias expresiones funcionales. Para el
canal rectangular mostrado en la Figura 1, Ac = BH. Al sustituir esta expresión en la ecuación
(1) se obtiene
Q = U BH (2)
donde B = ancho (m). Ahora, aunque la ecuación (2) ciertamente relaciona los parámetros
del canal, no es suficiente para responder nuestra pregunta. Suponiendo que se conoce B, se
tiene una ecuación y dos incógnitas (U y H). Por lo tanto, se requiere una ecuación adicional.
Para flujo uniforme (significa que el flujo no varı́a con la distancia ni con el tiempo), el inge-
niero irlandés Robert Manning propuso la siguiente fórmula semiempı́rica (llamada en forma
apropiada ecuación de Manning)
1
U = R2/3 S 1/2 (3)
n
donde n = coeficiente de rugosidad de Manning (un número adimensional que toma en cuenta
la fricción del canal), S = pendiente del canal (adimensional, metros de caı́da por longitud en
metros) y R = radio hidráulico (m), el cual se relaciona con los parámetros fundamentales
mediante
Ac
R= (4)
P
donde P = perı́metro mojado (m). Como su nombre lo indica, el perı́metro mojado es la lon-
gitud de los lados y el fondo del canal que está bajo el agua. Por ejemplo, para un canal rectan-
gular, éste se define como
P = B + 2H (5)
Se debe observar que ası́ como la ecuación de continuidad se obtiene de la conservación de la
masa, la ecuación de Manning es una expresión de la conservación del momentum. En particu-
lar, indica cómo la velocidad depende de la rugosidad, una manifestación de la fricción.
Aunque el sistema de ecuaciones no lineales (2-3) puede resolverse simultáneamente (por
ejemplo, usando el método de Newton-Raphson multidimensional), un método más simple serı́a
la combinación de ecuaciones. La ecuación (3) se sustituye en la ecuación (2) y se obtiene
BH 2/3 1/2
Q= R S . (6)
n
Ası́, el radio hidráulico, ecuación (4), junto con las diferentes relaciones para un canal rec-
tangular, se sustituye:
S 1/2 (BH)5/3
Q= . (7)
n (B + 2H)2/3
De esta forma, la ecuación contiene ahora una sola incógnita H junto con el valor dado de
Q y los parámetros del canal n, S y B. Aunque se tiene una ecuación con una incógnita, es
imposible resolverla en forma explı́cita para encontrar H.
3
2.2 Solución numérica del modelo
El problema de encontrar la profundidad H dado por (7) se puede resolver numéricamente,
al reformular la ecuación como un problema de raı́ces.
S 1/2 (BH)5/3
f (H) = − Q = 0. (8)
n (B + 2H)2/3
La ecuación (8) se resuelve con cualquiera de los métodos para localizar raı́ces (Bisección,
Secante, Newton-Raphson, o cualquier otro). Por ejemplo, si Q = 5 m3 /s, B = 20 m, n = 0.03
y S = 0.0002, la ecuación es
(20H)5/3
f (H) = 0471405 − 5 = 0. (9)
(20 + 2H)2/3
Usando el método de la bisección, el cual se explicará en la próxima sección, se obtiene:
Método de la bisección:
Es decir, para H = 0.7019042969 se obtiene que f (H) ≈ −0.0045 que se acerca bastante
a cero y, por lo tanto, H se puede considerar una buena aproximación. La otra incógnita, la
velocidad, ahora se determina por sustitución en la ecuación (2),
Q 5
U= = = 0.356 m/s
BH 20(0.7019042969)
Ası́, se tiene una solución satisfactoria para la profundidad y la velocidad.
4
Para los métodos cerrados, como el de bisección, se determinarı́a, si es posible, estimar
valores iniciales inferiores y superiores que contengan siempre una sola raı́z. Un método con-
servador podrı́a ser elegir cero como el lı́mite inferior. Y, si se conoce, la profundidad máxima
posible que puede presentarse, este valor servirı́a como valor inicial superior. Por ejemplo, todos
los rı́os, con excepción de los más grandes del mundo, tienen menos de 10 metros de profundi-
dad. Por lo tanto, se toman 0 y 10 como lı́mites del intervalo para H.
Si Q > 0 y H = 0, la ecuación (8) siempre será negativa para el valor inicial inferior.
Conforme H se incrementa, la ecuación (8) también se incrementará en forma monótona, y
finalmente será positiva. Por lo tanto, los valores iniciales deberán contener una sola raı́z en la
mayorı́a de los casos que se estudian con rı́os y arroyos naturales.
Ahora, una técnica como la de bisección deberı́a ser muy confiable en la búsqueda de una
raı́z. ¿Pero qué precio se paga? Al usar tal ancho del intervalo y una técnica como la de bisec-
ción, el número de iteraciones para obtener una precisión deseada podrı́a ser computacional-
mente excesivo. Por ejemplo, si se elige una tolerancia de 0.001 m, el número de iteraciones
necesarias estarı́a aproximado por
log (b − a)/T ol
n= = 13.3
log(2)
5
La función para el método de la bisección queda dada por:
function bisec(f_name,a,b,toler,it_lim)
% a, b : extremos del intervalo inicial
% toler : tolerancia
% it_lim : lı́mite del número de iteraciones
% Y_a, Y_b: valores Y de los extremos actuales
%------------ Giovanni Calderon : UIS - 2019
fprintf(’Método de la bisección:\n\n’);
fprintf(’It. a_n c_n b_n f(c_n)\n ’);
it = 0;
Y_a = f_name(a); Y_b = f_name(b);
if(Y_a*Y_b > 0)
fprintf(’\n\n Detenido porque f(a)*f(b)>0 \n’);
else
while 1
it = it+1;
c = (a+b)/2; Y_c = f_name(c);
fprintf(’%3.0f %14.10f %14.10f %14.10f %14.10f\n’,...
it,a,c,b,Y_c);
if(Y_a*Y_c <= 0)
b = c; Y_b = Y_c;
else
a = c; Y_a = Y_c;
end
if(abs(b-a)/2 <= toler)
fprintf(’Se satisface la tolerancia.\n’);break
end
if(it > it_lim)
fprintf(’Se excedió lı́mite de iteraciones.\n’);break
end
end
fprintf(’Resultado final: Raı́z =%14.10f\n’,c);
end
Se debe recordar que el nombre de la función debe ser: bisec.m El código para implemetar la
función debe tener la forma:
% Programa principal para el metodo de Biseccion
% Giovanni Calderon : UIS-2019
%
clear, clc
toler = .001; it_lim = 100; % valores dados por el usuario
a = 0; b = 10; % valores dados por el usuario
z =@(x)0.471405*((20*x).ˆ(5/3))./((20+2*x).ˆ(2/3))-5;
bisec(z,a,b,toler,it_lim);
6
% Método de Newton para cero de funciones no lineales.
% Sintaxis: NEWTON(’f_name’,x0)
% f_name : el nombre de la funcion entre apóstrofes
% x0 : estimación inicial para la raiz
% toler : tolerancia
% it_lim : lı́mite del número de iteraciones
% Ejemplo : NEWTON(’eqn_1’,2,.0001,100)
% Giovanni Calderon UIS-2019
function NEWTON(f_name,f_der,x0,toler,it_lim)
fprintf(’\n\n =======================================\n ’);
fprintf(’Método iterativo de Newton:\n\n’);
fprintf(’ It. x y \n’);
x = x0;
it = 1; xb = x;
while 1
yx = f_name(xb);
yd = f_der(xb);
x = xb - yx/yd;
fprintf(’%3.0f %14.10f %14.10f\n’,it,x,yx);
Se debe recordar que el nombre de la función debe ser: NEWTON.m El código para implemetar
la función debe tener la forma:
% Programa principal para el metodo de Newton
% Giovanni Calderon : UIS-2019
clear, clc
toler = .0001; it_lim = 25;
a = 0;
funcion = @(x)0.471405*((20*x)ˆ(5/3))/((20+2*x)ˆ(2/3))-5;
f_der = @(x)0.471405*((5/3)*20*(20*x)ˆ(2/3)*(20+2*x)ˆ(2/3)-...
(20*x)ˆ(5/3)*(4/3)*(20+2*x)ˆ(-1/3))/((20+2*x)ˆ(4/3));
NEWTON(funcion,f_der,a,toler,it_lim);
3.3 MATLAB
¿Cómo calcula MATLAB las raı́ces?
MATLAB proporciona la función fzero.m para el caso de una función no lineal
x = fzero(nombre_funcion,x0,options)
7
para obtener la raı́z de una función no lineal, y fsolve.m para el caso de sistemas de ecuacio-
nes no lineales (que veremos posteriormente).
La función no lineal f (x) se puede definir en un archivo o usando una función anónima
f = @(x), y se introduce como primer argumento; x0 es la aproximación inicial; y, el último
parámetro, options, es opcional y en caso de usarse se debe introducir con la option structure.
Esta función emplea el método de Brent que combina la interpolación cuadrática inversa con la
bisección y la secante (ver Forsythe (3)). Un ejemplo de implementación:
% Programapara implementar fzero
% Giovanni Calderon : UIS-2020
clear, clc
fun = @(x)exp(x)-2*x.ˆ2; % function
x0 = 3; % initial point
x = fzero(fun,x0)
8
4 EJERCICIOS
4.1 LISTA 1: Implementación de métodos para cero de funciones
Fecha de inicio: 11/05/2020. Fecha de entrega: 18/05/2020
Estudiante: Métodos Numéricos, Semillero INME
Observación: Se debe presentar un informe sobre los resultados obtenidos en la lista de pro-
blemas y sustentar (tablero) los resultados obtenidos, códigos realizados y resultados teóricos
utilizados.
Problema 1 Resolver el problema de flujo en un canal abierto usando los mismos parámetros
pero con sección transversal como la dada en la Figura 2.
• Haga los cambios necesarios en el modelo matemático, siguiendo las ideas dadas en el
ejemplo ilustrativo.
• Valide el modelo matemático. Una idea podrı́a ser dada: empezar a ampliar la base del
trapecio isósceles hasta aproximarse al área del rectángulo.
• ¿Qué valor debe tener x para asegurar que la altura H no supere los 90 centı́metros?
Encuentre el valor de x si fuera posible en milı́metros.
• Utilice el fzero.m de MATLAB para resolver el problema y comparar con los resultados
obtenidos con los métodos Bisección y Newton-Raphson.
9
Figura 3: Sistema de cuatro barras del problema 2. Tomado de Quarteroni (2)
Problema 2 (Sistema de barras) Considere el sistema mecánico representado por las cuatro
barras rı́gidas ai de la Figura 3. Para cualquier valor admisible del ángulo β, determinemos el
valor del ángulo correspondiente α entre las barras a1 y a2 . A partir de la identidad
a1 − a2 − a3 − a4 = 0
y observando que la barra a1 siempre está alineada con el eje x, podemos deducir la siguiente
relación entre β y α:
a1 a1 a2 + a22 − a23 + a24
cos(β) − cos(α) − cos(β − α) = − 1
a2 a4 2a2 a4
donde ai es la longitud conocida de la barra i−ésima. Esta ecuación se conoce como la ecuación
de Freudenstein, y podemos reescribirla como f (α) = 0, donde
10
se encuentra vacı́o). La transferencia de calor entre la capa media y la cubierta exterior q2 es
por convección en un espacio pequeño. La transferencia de calor de la cubierta exterior hacia el
aire q3 sucede por convección natural. El flujo de calor desde cada región de los envases debe
ser igual, es decir, q1 = q2 = q3 . Encuentre las temperaturas T1 y T2 en estado estable. T0 es de
450o C y T3 = 25o C.
q1 = 10−9 (T0 + 273)4 − (T1 + 273)4
q2 = 4 (T1 − T2 )
q3 = 1.3 (T2 − T3 )4/3
Q1 = Q2 + Q3
Q3 = Q4 + Q5
Q5 = Q6 + Q7
donde Qi = flujo en el tubo i [m3 /s]. Además, la caı́da de presión alrededor de los tres lazos en
los que el flujo es hacia la derecha debe ser igual a cero. La caı́da de presión en cada tramo de
tubo circular se calcula por medio de la ecuación:
16 f Lρ 2
∆P = Q
π 2 2D5
donde ∆P = caı́da de presión [Pa], f = factor de fricción [adimensional], L = longitud del
tubo [m], ρ = densidad del fluido [kg/m3 ], y D = diámetro del tubo [m]. Escriba un programa
(MATLAB) que permita calcular el flujo en cada tramo de tubo, dado que Q1 = 1m3 /s y
ρ = 1.23kg/m3 . Todos los tubos tienen D = 500 mm y f = 0.005. Las longitudes de los tubos
son: L3 = L5 = L8 = L9 = 2m; L2 = L4 = L6 = 4m; y L7 = 8m.
11
Figura 5: Figura del Problema 4.
Problema 5 Repita el problema anterior, pero incorpore el hecho de que el factor de fricción
se calcula con la ecuación de von Karman, que es:
1 p
√ = 4 log10 (Re f ) − 0.4
f
donde Re = número de Reynolds
ρV D
Re =
µ
donde V = velocidad del fluido en el tubo [m/s], y µ = viscosidad dinámica (N s/m2 ).
Obsérvese que para un tubo circular, V = 4Q/πD2 . Asimismo, suponga que el fluido tiene
una viscosidad de 1.79 × 10−5 N s/m2 .
REFERENCIAS
[1] Steven C. Chapra and Raymond P. Canale Métodos numéricos para ingenieros, quinta
edición, McGraw-Hill, 2006.
[2] Quarteroni Alfio, Saleri Fausto and Gervasio Paola, Scientific Computing with MATLAB
and Octave, Third Edition, Texts in Computational Science and Engineering, Springer-
Verlag Berlin Heidelberg, 2010.
[3] Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathematical
Computations, Prentice-Hall, 1976.
12