Está en la página 1de 6

Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

Práctica 2: Solución de ecuaciones no lineales

Objetivo: utilizar distintos métodos numéricos de solución de ecuaciones no lineales que pueden
aparecer en el modelado matemático de problemas de ingenierı́a y estudiar los problemas pro-
puestos analı́tica y gráficamente para justificar las soluciones obtenidas.

Ejemplo: Consideramos el siguiente sistema no lineal:


  1
ex+y + x cos y = 0 e + x cos(1 − x) = 0
equivalente al sistema (1)
x+y−1=0 y =1−x

(a) Analiza gráficamente las raı́ces del sistema en el intervalo [−6, 6] y sepáralas.
(b) Aproxima las soluciones encontradas en el apartado anterior mediante el método de New-
ton con una tolerancia de 10−8 .

Para resolver el sistema, comenzamos buscando las soluciones o raı́ces de la ecuación

e + x cos(1 − x) = 0 (1)

En primer lugar separamos las raı́ces representando gráficamente la función y = e+x cos(1−x)
en el intervalo [−6, 6]. Creamos el fichero definiendo la función asociada a la ecuación y el fichero
de instrucciones para la representación gráfica:

1 % Función correspondiente al ejemplo de la práctica 2


2 function y = ejemplop2(x)
3 y=exp(1)+x.*cos(1-x);

1 % Representación gráfica de la función del ejemplo de la práctica 2


2 clear;clc;
3 x=-6:0.1:6;
4 y=ejemplop2(x);
5 plot(x,y),title(’Gráfica del ejemplo de la práctica 2’),grid on

O bien, utilizando el comando @:

1 % % Representación gráfica de la función del ejemplo de la práctica 2


2 clear;clc;
3 % Definición de la función ejemplop2(x)
4 ejemplop2 = @(x) exp(1)+x.*cos(1-x);

12
Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

5 % Representación gráfica
6 x=-6:0.1:6;
7 y=ejemplop2(x);
8 plot(x,y,x,0*x,’k’),title(’Gráfica ejemplop2’),grid on

NOTA: En la lı́nea 8 dentro del comando plot hemos representado dos gráficas: la gráfica de
la función ejemplop2 ( el primer par x,y ) y la terna x, 0*x,’k’ que representa el eje OX en color
negro (blac’k’). El eje OX también puede representarse uniendo los puntos de coordenadas
(−6, 0), (6, 0):
plot(x, y, [−6 6], [0 0], 0 k 0 )

Observamos que hay soluciones de la ecuación en los intervalos [−6, −4], [2, 4] y [4, 6].
Podemos utilizar el zoom de la ventana gráfica para determinar intervalos de longitud menor
que contengan las raı́ces.
Aproximaremos las raı́ces aplicando el método de Newton, por tanto necesitamos la derivada
de la función ejemplop2 que definimos mediante un fichero function

1 % Derivada de la función correspondiente al ejemplo de la práctica 2


2 function y = dejemplop2(x)
3 y=cos(1-x)+x.*sin(1-x);

O bien, utilizando el comando constructor de funciones @.

• Vamos a aproximar la solución que se encuentra en el intervalo [−6, −4].

Sabemos que el método de Newton converge si partimos de un punto próximo a la solución, p0 ,


con la condición f (p0 ) · f 00 (p0 ) > 0, luego debemos buscar un valor inicial dentro del intervalo
que verifique dicha condición y establecer un número de iteraciones (no debe ser muy grande
ya que la convergencia del método es cuadrática). Podemos generar el siguiente ficheros de
comandos

1 % % Aplicación del método de Newton


2 % solución del ejemplo de la práctica 2
3 clear;clc;
4 format long
5 % Definición de la función y de su derivada
6 ejemplop2 = @(x) exp(1)+x.*cos(1-x);

13
Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

7 dejemplop2 = @(x) cos(1-x)+x.*sin(1-x);


8 % Calculamos la solución en el intervalo [-6,-4] partiendo de p_0=-4
9 p0=-4;maxiter=10;
10

11 % inicialización del vector p de las iteraciones


12 p(1)=p0;
13

14 % generamos la sucesión de puntos con el método de Newton


15 for k=1:maxiter
16 p(k+1)=p(k)-ejemplop2(p(k))./dejemplop2(p(k));
17 end
18

19 % evaluamos la función en la sucesión generada


20 y=ejemplop2(p);
21

22 % salida por pantalla de las aproximaciones y aproximación de la solución


23 disp(’Las aproximaciones obtenidas y el valor de la función en ellas son:’)
24 [p’,y’]
25 disp(’Aproximación de la raı́z del intervalo [-6,-4]’)
26 x1=p(length(p))
27 disp(’Solución del sistema con x en [-6,-4]’)
28 sol1=[x1,1-x1]

En este fichero creamos la sucesión de puntos del método de Newton junto con el valor de la
función en ellos, que almacenamos en los vectores p e y, respectivamente. Hemos inicializado
el proceso con p0 = −4, valor inicial que verifica la condición de convergencia del método, y
realizamos maxiter = 10 iteraciones. La aproximación pedida será la última componente del
vector p, es decir , p(11) o bien utilizando la función de Matlab que nos determina la dimensión
del vector generado length(p), p(length(p)). Por último, aproximamos el valor de la segunda
incógnita, y = 1 − x, del sistema para el valor x1. Se procederı́a de forma análoga con las
soluciones restantes.

• Si queremos introducir como criterio de parada del método que el error relativo entre
iteraciones consecutivas sea menor que una cierta tolerancia dada, delta = 10−8 , es necesario
utilizar una sentencia iterativa distinta del for-end, e introducir la variable que nos mida dicho
error relativo.

Utilizaremos la sentencia iterativa while-end, ya que desconocemos el número de iteraciones a


realizar, y además debemos controlar que el error relativo sea menor que la tolerancia dada.
Estableceremos un número máximo de iteraciones (maxiter) en el caso de que partamos de un
punto inicial que no verifique la condición de convergencia del método.

14
Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

Fichero de comandos para aproximar la solución que se encuentra en el intervalo [4, 6]

1 % % Aplicación del método de Newton


2 % solución del ejemplo de la práctica 2
3 clear;clc;
4 format long
5 % Definición de la función y de su derivada
6 ejemplop2 = @(x) exp(1)+x.*cos(1-x);
7 dejemplop2 = @(x) cos(1-x)+x.*sin(1-x);
8

9 % Calculamos la solución en el intervalo [4,6] partiendo del punto medio


10 pm=5;delta=10^(-8);maxiter=10;
11

12 % inicilización de las variables utilizadas en el bucle


13 p(1)=pm;
14 k=1; % contador del bucle
15 relerr=1;
16 % generamos la sucesión de puntos con el método de Newton
17 while((k<=maxiter) && (relerr>delta))
18 p(k+1)=p(k)-ejemplop2(p(k))./dejemplop2(p(k));
19 err(k)=abs(p(k+1)-p(k)); % error absoluto entre iteraciones consecutivas
20 relerr=err(k)/(abs(p(k+1))+eps);
21 k=k+1; % actualizamos el contador
22 end
23

24 y=ejemplop2(p); % evaluamos la función en la sucesión generada


25

26 % salida por pantalla de las aproximaciones y aproximación de la solución


27 disp(’Las aproximaciones obtenidas y el valor de la función en ellas son:’)
28 [p’,y’]
29 disp(’Aproximación de la raı́z del intervalo [4,6]’)
30 x3=p(length(p)) % podrı́amos poner x3=p(end).
31 %La variable end guarda el último ı́ndice del vector p
32 disp(’Solución del sistema con x en [4,6]’)
33 sol3=[x3,1-x3]

Nuevamente la sucesión de puntos del método de Newton junto con el valor de la función en
ellos, está almacenada en los vectores p e y, respectivamente. Podemos observar que el número
de iteraciones es inferior al máximo establecido. Análogamente se procederı́a con las soluciones
restantes.
NOTA: En la lı́nea 20, al evaluar el error relativo en cada iteración, debemos dividir por la
última iteración generada, para evitar la posible división por cero hemos sumado a este valor
el épsilon máquina, eps.

15
Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

Práctica 2

Ejercicio 1 Si se cuelga un cable en dos puntos, adopta la forma de una curva llamada catenaria,
cuya ecuación es
e + e−x/a
 x/a 
y=a = a Ch(x/a)
2
Se pide determinar el valor del parámetro a (utilizando distintos métodos numéricos), de un
cable eléctrico suspendido en dos puntos, situados a la misma altura, desde dos torres separadas
cien metros, sabiendo que el cable se comba diez metros en la mitad.

(a) Escribe la ecuación f (a) = 0 que debemos resolver.


(b) Dibuja la función f (x) asociada a la ecuación del apartado anterior en el intervalo [40, 140].
Reduce la amplitud del intervalo hasta determinar un intervalo de amplitud uno donde se
encuentre la solución.
(c) Método de Newton:
1) Dibuja en una misma figura las gráficas de f (x), f 0 (x), f 00 (x), para determinar el
extremo del intervalo en el que se verifica la condición suficiente de convergencia. Uti-
lizando el comando legend inserta una leyenda para diferenciar las gráficas anteriores.

legend(etiqueta 1,...,etiqueta n) establece las etiquetas de leyenda. Especifica las eti-


quetas como una lista o cadena de caracteres, es decir èntrecomilladas.

2) Aproxima la solución de la ecuación mediante el método de Newton tomando como


valor inicial el calculado anteriormenre, de forma que el error relativo entre iteraciones
consecutivas sea inferior a 10−6 o el máximo número de iteraciones sea 10. Utiliza el
comando fprintf para escribir la aproximación, el número de iteraciones y el error
cometido con un formato determinado.

La instrucción fprintf se utiliza para obtener una salida formateada por pantalla.
fprintf (’texto con especificación del formato de la lista de variables’,A1 , · · · , An )
Ejemplo:
fprintf(’ \n El valor de a= %.7f en %d iteraciones con error= %.12f ’, pn(k) , k − 1 , error
| {z } )→
| {z } | {z }
aproxi. iteración error relativo
→ El valor de a = 126.6324360 en 3 iteraciones con error=0.000000000696

2
Métodos Numéricos Ingenierı́a Quı́mica/Mecánica CURSO 2021/2022 Laboratorio

En las Especificaciones Tipo


\n −→ (secuencia de escape) inicio de nueva lı́nea margen izquierdo
%d −→ Número entero (con signo)
%.mf −→ Número en coma flotante
m ≡ número de dı́gitos a la derecha del punto decimal
La función fprintf es semejante a la función printf del lenguaje de programación C.
xn − xn−1
NOTA: El error relativo entre iteraciones consecutivas, er = .
xn

(d) Método de punto fijo:


1) Reescribe la ecuación f (x) = 0 para obtener una ecuación equivalente g(x) = x y
demuestra gráficamente que la función g(x) posee un único punto fijo en el intervalo
correspondiente.
2) Dibuja el valor absoluto de la derivada de g en dicho intervalo y calcula la cota K de
|g 0 (x)| en dicho intervalo. |g 0 (x)| ≤ K < 1
3) Determina dicha aproximación, solución del problema, con un error menor que 10−8 .
(e) De todos los métodos utilizados para resolver el problema de partida, ¿cuál te parece más
eficiente y por qué?

Ejercicio 2 Dado el sistema no lineal



ex/10 − y = 0
2 ln y − cos x = 2

(a) Analiza gráficamente las raı́ces o soluciones del sistema para x ∈ [−10, 20]:
1) dibuja ambas curvas y determina intervalos de longitud uno, en abscisas, donde se
encuentran los puntos de intersección.
2) dibuja la función y = f (x) cuyos ceros son las abscisas de los puntos de intersección
de las dos curvas.
(b) Aproxima
1) las mayor de las raı́ces o ceros de la función del apartado anterior utilizando el método
de la bisección con una tolerancia de 10−8
2) la raı́z menor utilizando el método de punto fijo con una tolerancia de 10−8
3) si hay más soluciones, aproxı́malas utilizando el método de Newton considerando que
el error relativo entre iteraciones consecutivas debe ser inferior a 10−8 y el máximo de
iteraciones 10.
(c) Dibuja los puntos solución del sistema en la ventana (figura) donde has dibujado las dos
curvas para comprobar gráficamente la solución.

También podría gustarte