Sei sulla pagina 1di 12

Método Numéricos

Escuela de Ingenierı́a Civil, Facultad Fisicomecánicas


Universidad Industrial de Santander, Bucaramanga, Colombia
~ Apuntes de clase, 2020

TALLER 1: CEROS DE FUNCIONES NO LINEALES

Profesor: Giovanni Calderóna,1


a Universidad Industrial de Santander, Bucaramanga, Colombia.
e-mail: giovanni.calderon@correo.uis.edu.co

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

2 PROBLEMA MODELO: FLUJO EN UN CANAL ABIERTO 1


2.1 Definiendo el modelo matemático a trabajar . . . . . . . . . . . . . . . . . . . 2
2.2 Solución numérica del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Aspectos numéricos del problema . . . . . . . . . . . . . . . . . . . . . . . . 4

3 IMPLEMENTACIÓN EN MATLAB DE LOS MÉTODOS A CONSIDERAR EN


LA SOLUCIÓN NUMÉRICA 5
3.1 Método de Bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

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.

2 PROBLEMA MODELO: FLUJO EN UN CANAL ABIERTO


Un problema general se relaciona con el flujo de agua en canales abiertos y rı́os. La velocidad
de flujo, que se mide frecuentemente en la mayorı́a de los rı́os y arroyos, se define como el
volumen de agua que pasa por un punto especı́fico de un canal por unidad de tiempo, Q (m3 /s).
Aunque la velocidad de flujo es una cantidad útil, una cuestión adicional se relaciona con
lo que sucede cuando se tiene una velocidad de flujo especı́fico en un canal con pendiente
(Figura l). De hecho, suceden dos cosas: el agua alcanzará una profundidad especı́fica H (m)
y se moverá a una velocidad especı́fica U (m/s). Los ingenieros pueden estar interesados en
conocer tales cantidades para predecir el transporte y el destino de los contaminantes en un rı́o.
Ası́, la pregunta general serı́a: si se tiene una velocidad de flujo para un canal, ¿cómo se calculan
la profundidad y la velocidad?

Figura 1: Diagrama del canal abierto. Tomada de Chapra (1).

2.1 Definiendo el modelo matemático a trabajar


La relación fundamental entre flujo y profundidad es la ecuación de continuidad1

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:

It. a_n c_n b_n f(c_n)


1 0.0000000000 5.0000000000 10.0000000000 100.1913466112
2 0.0000000000 2.5000000000 5.0000000000 32.4154396452
3 0.0000000000 1.2500000000 2.5000000000 7.6426812042
4 0.0000000000 0.6250000000 1.2500000000 -0.8631327640
5 0.6250000000 0.9375000000 1.2500000000 2.9756165075
6 0.6250000000 0.7812500000 0.9375000000 0.9423945855
7 0.6250000000 0.7031250000 0.7812500000 0.0096188171
8 0.6250000000 0.6640625000 0.7031250000 -0.4344757642
9 0.6640625000 0.6835937500 0.7031250000 -0.2143300644
10 0.6835937500 0.6933593750 0.7031250000 -0.1028276130
11 0.6933593750 0.6982421875 0.7031250000 -0.0467219754
12 0.6982421875 0.7006835938 0.7031250000 -0.0185809214
13 0.7006835938 0.7019042969 0.7031250000 -0.0044883812
Se satisface la tolerancia.
Resultado final: Raı́z = 0.7019042969

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.

2.3 Aspectos numéricos del problema


Ahora se buscará analizar un poco más los aspectos numéricos de este problema. Una pre-
gunta pertinente serı́a: ¿Cómo hacer para obtener un buen valor inicial para el método numéri-
co? La respuesta depende del tipo de método.

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)

Ası́, se requieren aproximadamente 14 iteraciones. Aunque esto ciertamente no serı́a costoso


para un solo cálculo, podrı́a ser exorbitante si se efectuaran muchas de estas evaluaciones. Las
alternativas serı́an: estrechar el intervalo inicial (en base a un conocimiento especı́fico del sis-
tema), usar un método cerrado más eficiente (como el de la falsa posición) o conformarse con
una menor precisión.
Otra forma de tener una mejor eficiencia serı́a utilizar un método abierto como el de Newton-
Raphson o el de la secante. Por supuesto que en tales casos el problema de los valores iniciales
se complica al considerar la convergencia.

3 IMPLEMENTACIÓN EN MATLAB DE LOS MÉTODOS A CONSIDERAR EN LA


SOLUCIÓN NUMÉRICA
Existen, en general, un sin fin de métodos para abordar el problema de encontrar raı́ces
de funciones no lineales. No obstante, la curva de aprendizaje en el tema la podemos subir
trabajando algunos de los métodos más clásicos, por ejemplo: Bisección, secante y Newton-
Raphson. Estos métodos han sido definidos y analizados en el curso de Métodos Numéricos de
la carrera, acá la intensión es poner en uso sus códigos para encontrar soluciones y analizar los
resultados obtenidos.
En los apartados que siguen daremos la función (MATLAB) hecha para cada método y su
implementación para el ejemplo dado. Los códigos MATLAB quedan en el classroom del se-
minario.

3.1 Método de Bisección


Este método necesita dos aproximaciones iniciales a y b, con la condición que f (a)f (b) < 0.
Además, se da una tolerancia o error aceptado y un máximo número de iteraciones.

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);

3.2 Método de Newton-Raphson


Este método necesita una aproximación inicial a. Además, se da una tolerancia o error acep-
tado y un máximo número de iteraciones. La función para el método de Newton-Raphson:

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);

if(abs(x-xb) < toler)


fprintf(’Se satisface la tolerancia.\n’);break
end
it = it+1; xb = x;
if(it > it_lim)
fprintf(’Se excedió lı́mite de iteraciones.\n’);break
end
end
fprintf(’Resultado final: Raı́z=%20.18f\n’,x);

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)

¿Cómo calcula MATLAB las raı́ces de un polinomio?


La función de MATLAB r = roots(c) calcula las raı́ces r de un polinomio cuyos coefi-
cientes se encuentran almacenados en el vector c de la forma: c(1)xn+...+c(n)x+c(n+1).
Otra función relacionada con los polinomios es c = poly(r) que genera un polinomio con
las raı́ces introducidas como argumento en el vector r.
En cualquiera de los casos se recomienda usar la ayuda de MATLAB para una explicación
más detallada de los parámetros y su uso.

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.

Figura 2: Sección transversal del canal abierto del Problema 1.

• Haga los cambios necesarios en el modelo matemático, siguiendo las ideas dadas en el
ejemplo ilustrativo.

• Implementar el código necesario para usar los métodos de bisección y Newton-Raphson


en la solución del problema. Analice los resultados obtenidos: convergencia, precisión,
decrecimiento del error.

• 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.

• Mostrar soluciones, error, gráfica de convergencia y tablas de resultados.

• 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.

Problema complementario: Un ingeniero tiene que diseñar un canal trapezoidal abierto


(como el del problema) para transportar agua para irrigación. Determine las dimensiones
óptimas para minimizar el perı́metro mojado en un área de sección transversal de 50 m2 .
¿Las dimensiones están dentro de las medidas estándar?

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

a1 a1 a2 + a22 − a23 + a24


f (x) = cos(β) − cos(α) − cos(β − α) + 1
a2 a4 2a2 a4
Una solución en forma explı́cita está disponible solo para valores especiales de β. También
nos gustarı́a mencionar que no existe una solución para todos los valores de β, y puede que ni
siquiera sea única. Para resolver la ecuación para cualquier β dado que se encuentre entre 0 y
π, debemos invocar métodos numéricos.
Con todo lo dicho, aplique el método de Newton para resolver el problema para β ∈ [0, 2π/3]
con una tolerancia de 10−5 . Suponga que las longitudes de las barras son a1 = 10 cm, a2 = 13
cm, a3 = 8 cm, y a4 = 10 cm. Para cada valor de β considere dos posibles datos iniciales,
x0 = −0.1 y x0 = 2π/3.

Problema 3 En los envases térmicos que se ilustran en la Figura 4, el compartimiento interior


está separado del medio por medio de vacı́o. Hay una cubierta exterior alrededor de los envases.
Esta cubierta está separada de la capa media por una capa delgada de aire. La superficie de
afuera de la cubierta exterior está en contacto con el aire del ambiente. La transferencia de calor
del compartimiento interior a la capa siguiente q1 sólo ocurre por radiación (ya que el espacio

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

Figura 4: Figura del Problema 3.

Problema 4 Un fluido se bombea en la red de tubos que se muestra en la Figura 5. En estado


estacionario, se cumplen los balances de flujo siguientes:

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

Potrebbero piacerti anche