Está en la página 1de 3

Práctica 6: Algoritmo de Newton-Raphson para

sistemas de ecuaciones no lineales

1. Introducción
En esta práctica experimentaremos con el algoritmo de Newton-Raphson
para la solución de sistemas de ecuaciones no lineales. Si f = (f1 , . . . , fd ) y
x = (x1 , . . . , xd ), y queremos resolver el sistema

 f1 (x1 , . . . , xd ) = 0 ,
......... ,
fd (x1 , . . . , xd ) = 0

el algoritmo consiste en la iteración

x(k+1) = x(k) + ∆(k) , k ≥ 0,

donde ∆(k) es solución del sistema


 
∂f (k)
(x ) ∆(k) = −f (x(k) )
∂x
y
 d
∂f ∂fi
=
∂x ∂xj i,j=1

es la matriz Jacobiana de f .

2. Trabajo de laboratorio
Dos elipses pueden tener como máximo 4 puntos de intersección. Quere-
mos encontrar las coordenadas de las intersecciones de las elipses dadas por
sus ecuaciones
(x − 2)2 + (y − 3 + 2x)2 = 5 ,
2(x − 3)2 + (y/3)2 = 4 .
1. Para obtener una idea gráfica de la situación, vamos a dibujar las
elipses por medio de la función contour de MATLAB que permite
crear curvas de nivel. Utilizaremos el formato
Práctica de ordenador VI 2

contour(x,y,Z,[n n])

donde x e y son los vectores de valores xi e yj a lo largo de los ejes


correspondientes, Z es la matriz de los valores de la función en los
puntos (xi , yj ) y n es el nivel que queremos dibujar.
Más exactamente, con

x=linspace(-1,5,1000); y=linspace(-10,10,1000);

generamos los vectores x e y (si no recuerda, busque en la ayuda de


MATLAB qué hace el comando linspace); con

[X,Y]=meshgrid(x,y);

creamos el conjunto de pares ordenados (xi , yj ) como producto carte-


siano, y con

Z=(X-2).^2+(Y-3+2*X).^2;

obtenemos la matriz Z. Sólo queda ejecutar

contour(x,y,Z,[5 5]);

para dibujar la primera elipse. Ahora vamos a por la segunda. Antes


de dibujarla, no deje de ejecutar la orden hold on para que el nuevo
gráfico no borre el anterior (y termine el script con hold off ). Tome
nota de las posiciones aproximadas de los 4 puntos de intersección.
2. Plantee explı́citamente las funciones fk para el sistema de ecuaciones
que expresa la intersección de las elipses y halle la matriz Jacobiana.
3. Implemente el algoritmo de Newton-Raphson para este problema en
forma de función

function [y,niter]=newt_raph(x0,maxiter,tolerancia)

que admita como datos de entrada el valor inicial x0, el máximo de


iteraciones admisible maxiter, y el valor de tolerancia tolerancia
para el criterio de parada
kx(k) − x(k−1) k ≤ tolerancia,
(donde k · k es la norma euclı́dea, que MATLAB calcula con norm)
y devuelva el vector solución y junto con la cantidad de iteraciones
empleadas niter. Puede usar como modelo la función puntofijo de
la práctica 4.
Observación: Recuerde que el sistema lineal Ax = b se resuelve en
MATLAB por medio del comando x=A\b.

Andrei Martı́nez Finkelshtein


Práctica de ordenador VI 3

4. Experimente con diferentes vectores de valores iniciales para encontrar


los 4 puntos de intersección.

Andrei Martı́nez Finkelshtein