You are on page 1of 6

Labo 5: solucin de sistema de ecuaciones lineales

Ejm1
Dos elipses pueden tener como mximo 4 puntos de interseccin. Se
quiere encontrar las coordenadas de las intersecciones de las elipses
dadas por las siguientes ecuaciones.
(x-2)2 +(y-3+2X)2=5
2(X-3)2+(y/3)2=4
Sol grafica
para tener una idea grafica de la situacin, vamos a dibujar las
elipses por de la funcin contour de MATLAB que permite crear curvas
de nivel.El formatoa utilizar es el siguiente
contour(x,y,z,[n n])
donde X e Y son los vectores Xi e Yi a lo largo de los ejes
correspondientes, Z es la matriz de valores de la funcin en los
puntos (xi,yi) y n es el nivel que queremos dibujar.
Para el ejemplo debemos definir los ejes x, y. Lo hacemos con los
siguientes comando
>> x=linspace(-1,5,1000); y=linspace(-10,10,1000);Estos generan
los vectores x e y
El comando meshgrid permite crear el conjunto de pares ordenados
(xi,yj) como producto cartesiano
>>[X,Y]=meshgrid(x,y);
Ahora debemos obtener la matriz Z(en este caso la primera ecuacin
de la elipse )
>>Z=(X-2).^2+(Y-3+2*X). ^2;
Ahora para dibujar la primera elipse solo hay que ejecutar el
siguiente comando
>>contour(x,y,Z,[5 5]);

Para dibujar la segunda elipse, se debe ejecutar la orden hold


on para que el nuevo grafico no borre el anterior
>>hold on
>> Z=2.*(X-3).^2+(Y/3).^2;
>> contour(x,y,Z,[4 4]);
>> grid on;

Ejemplo 2
Resolver utilizando el mtodo de newton rapshon y partiendo del
punto [1,1,1]T el siguiente sistema de ecuaciones no lineales
3X1-cos(X2*X3)-1/2=0
X12-81*(X2+1/10)2+senX3+1.06=0
e

x1*x2

+20*x3+(10-3)/3=0

solucin
a continuacin se lista un cdigo en MATLAB que implementa el
mtodo
de
newton
raphson
que
acabamos
de
presentar,particularizado para este problema
la solucin de los sistemas de ecuaciones lineales de cada iteracin se
realiza mediante el operador \
Archivo 1
function newtrp
%newton-raphson para sistema de ecuaciones No lineales(SENL)
tol=sqrt(eps);
x=[1;1;1];
dnor=1.0;
fprintf('k\t\tx1\t\t\t\tx2\t\t\t\tx3\t\t\t\t||fxk||2\n');
k=1;
while dnor>tol
f=fx_Sistema(x);
J=derf(x);
p=J\f';
x=x-p;
dnor=norm(fx_Sistema(x));
fprintf('%d%15.10e%15.10e%15.10e%15.10e\n',k,x,dnor);
k=k+1;
end
Archivo 2
function f=fx_Sistema(x)
%sistema de ecuaciones no lineales
f(1)=3*x(1)-cos(x(2)*x(3))-0.5;
f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3)=exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;
Archivo 3
function J=derf(x)
% jacobianos para el SENL
J(1,1)=3.0;
J(1,2)=sin(x(2)*x(3))*x(3);
J(1,3)=sin(x(2)*x(3))*x(2);
J(2,1)=2.0*x(1);
J(2,2)=-162.0*(x(2)+0.1);

J(2,3)=cos(x(3));
J(3,1)=-exp((-x(1)*x(2)))*x(2);
J(3,2)=-exp((-x(1)*x(2)))*x(1);
J(3,3)=20.0;

>> newtrp
k
x1
x2
x3
||fxk||2
19.1968721308e-0014.6082245570e-001-5.0338763550e0012.4087256490e+001
25.0100048532e-0011.8743347767e-001-5.2086923301e0015.8788006806e+000
35.0054293549e-0016.1153453678e-002-5.2200096420e0011.2916807111e+000
45.0010443627e-0011.1617105749e-002-5.2329514612e0011.9876169457e-001
55.0000551037e-0016.0561572295e-004-5.2358293632e0019.8214794394e-003
65.0000001666e-0011.8263674473e-006-5.2359872783e0012.9529468423e-005
75.0000000000e-0011.6710515026e-011-5.2359877560e0012.7018031860e-010
>>
Metodo de Newton raphson por diferencias finitas
Ejemplo 3
Resolver el ejemplo 2 por el

mtodo de diferencias finitas

Archivo 4
%Newton Raphson por diferencias finitas
function Newtrp_df
global h
tol=sqrt(eps);
x=[1;1;1];
dnor=1.0;
h=tol;
k=1;
k=1;
fprintf('k\t\tx1\t\t\t\t\tx2\t\t\t\tx3\t\t\t\t||fxk||2\n');
while dnor > tol
f=fx_Sistema(x);
J=derf_1(f,x);
p=J\f';
x=x-p;
dnor=norm(fx_Sistema(x));
fprintf('%d%15.10e%15.10e%15.10e%15.10e\n',k,x,dnor);
k=k+1;
end

archivo 5
function f=fx_Sistema(x)
%sistema de ecuaciones no lineales
f(1)=3*x(1)-cos(x(2)*x(3))-0.5;
f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3)=exp((-x(1)*x(2)))+20*x(3)+(10*pi-3)/3;

archivo 6
function J=derf_1(f,x)
global h
for i=1:3
x(i)=x(i)+h;
f1=fx_Sistema(x);
J(:,i)=(f1-f)/h;
x(i)=x(i)-h;
end

Labo 6 Sistemas de ecuaciones lineales


Mtodos directos

You might also like