Está en la página 1de 8

LABORATORIO 1

SOLUCIONES COMPUTACIONALES

PRESENTADO POR:

MARÍA CAROLINA PÉREZ (200054183)

MIGUEL DAZA CASTRO (200072006)

PRESENTADO A:

ING. LUIS GUZMAN

DEPARTAMENTO DE INGENIERÍA INDUSTRIAL

ABRIL 7 DEL 2017

BARRANQUILLA, COLOMBIA
Laboratorio de soluciones computacionales

El siguiente laboratorio es resuelto por el método de newton Raphson multivariable para


poder hallar las soluciones del sistema de ecuaciones no lineales. Se visualizarán las
regiones vecinales donde se presentan las posibles soluciones y los puntos que
representan hacia donde convergen dichas semillas por medio de algunas zona de colores
con ayuda de algunos comandos para graficar áreas donde existan. El método requiere
establecer un grado de tolerancia, entre menor sea tendrá más exactitud tendrá la
solución, dicho método es muy utilizado cuando se encuentran 2 o más variables en una
función y tiene como requisito que ambas funciones sean continuas y diferenciables, de
modo que puedan expandirse en la serie de Taylor. El siguiente laboratorio fue resuelto
por medio del programa de computación matlab mediante una serie de pasos lógicos
conectados basándonos en un algoritmo previamente diseñado el cual se explica
brevemente.

 Como primera instancia se procede a identificar los datos de entrada


correspondientes, es decir, valores semilla en x y y.
 Como segunda instancia se calcula el jacobiano de la función a través de la función
jacobian, se define el valor de la tolerancia (1*10^-7) y se define el número
máximo de iteraciones en caso de que el método no sea convergente.
 Tercero se inicia un proceso iterativo donde se procede a calcular las correcciones
para la semilla inicial hasta el punto donde tal corrección sea cero.
 Cuarto finalizado este proceso iterativo donde las correcciones son cero se dice
que ya el método convergió y se le expresa al usuario en forma de texto la
solución.
 Quinto y último se procede a representar de manera gráfica el conjunto de
soluciones y así mismo indicando la región que tentativamente esos puntos
arrojaran como raíz la encerrada.
%Algoritmo newton rapshon multivariable solucion sistema ecuaciones

clear all;

%funciones
syms x y %se definen como variables simbolicas
Ec1=((x.^2)+x.*(y.^3)-9); % Ingresar (x.^2)+x.*(y.^3)-9
Ec2=(3*(x.^2).*y-(y.^3)-4); % Ingresar 3*(x.^2).*y-(y.^3)-4
fname=[Ec1;Ec2];
seeds_number= input('Cuantas semillas va ingresar: ');
%tolerancia
tolerancia=(0.00000000001);
%iteraciones máximas
maxiter = (20);
points = [];%vector que almacena los puntos de cada semilla
indp = 1;%indice de punto
while(indp <= seeds_number)
%componentes de valor inicial del Vector

x1=input('Digite la componente del valor inicial de la variable x:


');

y1=input('Digite la componente del valor inicial de la variable y:


');

xo=[x1;y1];

fprima=jacobian(fname);%fprima es la matrix jacobiana de la funcion


fname

iter = 1; %Primera iteracion

f=inline(fname); %Para construir objetos con componentes de tipo


fila de la funcion fname

jf=inline(fprima);%Para construir una funcion linea de la funcion


fprima

error=norm(f(xo(1),xo(2)),2); %Se considera la norma del error


evaluado en cada uno de los puntos

fprintf('error=%12.8f\n', error);

while error >= tolerancia

fxo=f(xo(1),xo(2));%fx0 almacena los valores de fx


fpxo=jf(xo(1),xo(2));%matrix jacobiana

x1=xo-inv(fpxo)*fxo;% x anterior menos la inversa del jacobiano


por fx

fx1=f(x1(1),x1(2));%funcion evaluada en esos puntos

error =norm((fx1),2);%norma(diferencia del nuevo valor menos el


anterior) de esa misma funcion pero del tipo 2

fprintf('Los resultados son: \n');

fprintf(' Iter %2d \n raiz (x,y)=(%14.9f,%14.9f)\n


fec1(x,y)=(%14.9f) \n
fec2(x,y)=(%14.9f)\n',iter,x1(1),x1(2),fx1(1),fx1(2));%formato para
imprimir los valores en orden #de iteracion , raices,valores de f

if iter > maxiter

fprintf(' Numero maximo de iteraciones excedido \n');

return;

end

xo=x1;%x1 es el valor previamente calculado

iter=iter+1;%acumulador cantidad de iteraciones

end
points(:,indp) = x1;%vector que almacena cada punto
indp = indp +1;
points
end

%Para graficar se crea una matrix y se rellena con colores con


soluciones correspondientes

A= [
1 1 1 1 1 1 3 3 3 3 3 3 3 3;
1 1 2 1 1 1 3 3 3 3 3 3 3 3;
2 1 1 1 1 1 2 3 3 3 3 3 3 3;
1 1 1 2 1 1 3 3 3 3 3 3 3 3;
2 2 2 1 1 2 2 3 3 3 3 3 3 3;
2 1 1 2 2 1 3 3 3 3 3 3 3 3;
2 2 2 2 2 2 1 3 3 3 3 3 3 3;
2 2 2 2 2 2 1 3 3 3 3 3 3 3;
2 2 2 2 2 2 1 4 3 4 1 4 4 4;
2 2 2 2 2 2 2 5 3 4 4 4 4 4;
2 2 2 2 1 1 1 1 3 4 4 4 4 4;
1 1 1 1 1 1 1 1 2 3 3 3 4 4;
1 1 1 1 1 1 1 1 1 2 1 3 3 3;
1 1 1 1 1 1 1 1 1 2 2 1 1 2;
1 1 1 1 1 1 1 1 1 1 2 2 1 1;
1 1 1 1 1 1 1 1 1 1 2 1 2 2;
1 1 1 1 1 1 1 1 1 2 1 2 2 2;
1 1 1 1 1 1 1 1 1 1 2 2 1 1;
1 1 1 1 1 1 1 1 1 1 2 1 2 2;
1 1 1 1 1 1 1 1 1 1 1 2 2 2;
];

i = 1;
j = 1;
n = size(A);
x_inir = -10;
x_ini = -8;
y_ini = 10;
while(i<=20)
y_ini = y_ini - 1;
while(j<=14)
value = A(i,j);
x_ini = x_ini + 1;
switch value
case 1
rectangle('Position',[x_ini,y_ini,1,1],'FaceColor',[0 0.5
0.5],'EdgeColor','b', 'LineWidth',1)
hold on;
case 2
rectangle('Position',[x_ini,y_ini,1,1],'FaceColor',[0.7 0.5
0.5],'EdgeColor','b', 'LineWidth',1)
hold on;
case 3
rectangle('Position',[x_ini,y_ini,1,1],'FaceColor',[0.7 0.6
0.5],'EdgeColor','b', 'LineWidth',1)
hold on;
case 4
rectangle('Position',[x_ini,y_ini,1,1],'FaceColor',[0.3 0.5
0.7],'EdgeColor','b', 'LineWidth',1)
hold on;
case 5
rectangle('Position',[x_ini,y_ini,1,1],'FaceColor',[0.4 0.5
0.5],'EdgeColor','b', 'LineWidth',1)
hold on;
end
j = j + 1;
end
x_ini = -8;
j = 1;
i = i +1;
end

e1 = ezplot(Ec1, [-10,10,-10,10]);
%ezplot(f,[xmin,xmax,ymin,ymax])

hold on;
e2 = ezplot(Ec2, [-10,10,-10,10]);
%grid on;
set(e1,'Color','y');
set(e2,'Color','g');
n = (indp-1)*2;
i = 1;
%para recorrer el vector y mandar a la funcion plot los cortes
while(i<=n-1)
x_axis = points(i);
y_axis = points(i+1);
plot(x_axis,y_axis,'rO')
hold on;
i = i + 2;
end

hold on;

Se ejecutó el algoritmo el cual siguiendo con la metodología anteriormente descrita se


ingresaron los siguientes valores semillas para encontrar los puntos soluciones de manera
tentativa teniendo en cuenta la gráfica, a través del método se presenta las siguientes
aproximaciones, tal como se presentan a continuación.

Por último el algoritmo grafica las dos funciones, las soluciones del sistema de ecuaciones
y las regiones más propensas a encontrar la solución que está encerrada.
Grafica

 A manera de comentario vale la pena recalcar que hay unos puntos donde
el método no converge, un ejemplo es el punto [0,0], transcurridas las 20
iteraciones no se tiene un resultado puesto que cuando se reemplaza en la
función el jacobiano se hace una indeterminación, por lo cual se puede
decir que en ese punto diverge.
 Este resulta un método rápido y eficiente, durante el desarrollo se pudo
percatar que para encontrar la solución el método no toma muchas
iteraciones.
 Para concluir es importante definir una semilla aproximada a la soluciones
que se encuentren en un “intervalo de confianza” con el fin de reducir
cálculos y tiempos.
 Es muy importante tener en cuenta que en cada cuadro pequeño de color
existen muchas coordenadas, entonces, si muchas de esas coordenadas
corresponden a un mismo valor de resultado cuando se evalúa en el
método de newton rapshon multivariable significa que todo el cuadrado
pequeño se debe colorear de un mismo valor, puesto que arrojan la misma
solución lo cual significa que convergen hacia un punto en específico.