Está en la página 1de 10

SOLUCIN DE SISTEMAS DE ECUACIONES LINEALES MODULO 2

Samuel Fernndez Ruiz 234643 Johan Nicols Camelo Snchez 234756 Braulio Alejandro Santos Castro 234849

Fecha de realizacin del informe 4 de Octubre de 2013

Universidad Nacional de Colombia Facultad de Ingeniera Departamento de Ingeniera Industrial y de sistemas Bogot 2013

INTRODUCCIN

En muchas aplicaciones de ingeniera, al aplicar matemticas en situaciones de la vida y del mundo real, es posible encontrar problemas que no se pueden resolver de forma analtica o cuyo resultado exacto es imposible hallar, as pues es all cuando ciertos tipos de mtodos numricos se convierten en importantes herramientas para tratar estos problemas. A continuacin, se presenta ejemplos de mtodos numricos para hallar la solucin de sistemas de ecuaciones lineales teniendo como base un sistema de ecuaciones en particular y ayudados de herramientas computacionales, en este caso software libre (scilab), para obtener un algoritmo de estos mtodos.

Laboratorio Mdulo Dos Solucin de Sistemas de ecuaciones Lineales

Se tiene el siguiente sistema de ecuaciones: 10-20x1 + 1.75x2 + x3 = 505 2.7x1 + 2.85x2 + x3 = 905 4.5x1 + x2 + 1.54x3 = 1207 . Usando la herramienta SCILAB resuelva el sistema de ecuaciones lineales dado en el taller dos, utilizando hasta tres (3) alternativas diferentes. Cada alternativa debe quedar codificada en un programa SCILAB. Desarrollo del Laboratorio BISECCIN

Para hallar la primera raz por este mtodo numrico, se cre un cdigo en Scilab que se divide fundamentalmente en 3 partes. En la primera parte se declara la funcin que se evaluar, en la segunda parte se declar la funcin que solucionara el mtodo y por ltimo se dieron las condiciones iniciales y se llam la funcin a solucionar. En la primera parte se declar la funcin con el siguiente cdigo:
function z=fun1(x) z=0.975*x.^2-3.365*x.^1+2.578*cos(x.*10^-9);//Se define la funcin a la que se le pretende obtener la raz endfunction

Luego de esto se declar la funcin que desarrollara el mtodo para encontrar una raz de la funcin antes declarada con el siguiente codigo:
function []=biseccion1(a, b) //f es la funcion //a y b son los limites izquierdo y derecho //c es la cero ya=fun1(a);//Se definen las funciones evaluadas en los valores iniciales yb=fun1(b);//Se definen las funciones evaluadas en los valores iniciales c=(a+b)/2;// Se define "c" como punto medio entre los valores iniciales yc=fun1(c);// Se define la funcin evaluada en el punto medio if (ya*yb)<0 then //Se indica que los valores extremos del intervalo deben ser de signo contrario while (abs(yc)>=10.^-3) c=(a+b)/2; yc=fun1(c); if yc*ya<0 then a=a

b=c end if yc*yb<0 then a=c b=b end //Se establece un nuevo valor para un extremo con respecto a "c" segun sea la condicion de signos ya=fun1(a); yb=fun1(b); disp(['c= ',string(c),'f(c)= ',string(yc)])//Se imprime el resultado de las raices segun la iteracin end end endfunction

Por ltimo se ingresaron los valores iniciales, se llam la funcin para correr as el problema y obtener una aproximacin al resultado. Se utiliz el siguiente cdigo para eso:
clc; disp(" ** Laboratorio Uno - Grupo 03 ** ") // Numero de laboratorio disp("Codigos: 234643 234756 234849") // Identificacin de los participantes ww=getdate(); mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d ",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9)); a=0.175;//Primer valor de rango para evaluacin de las raices b=1.425;//Segundo valor de rango para evaluacin de las raices biseccion1(a,b);//Se llama la funcin y se ejecuta

Luego de ejecutar el cdigo se obtiene lo siguiente:

Podemos observar el nmero de iteraciones necesarias para obtener un resultado aproximado, junto con los requerimientos pedidos para cada uno de los laboratorios.

NEWTON-RAPHSON Para hallar la primera raz por medio de este mtodo, fue necesario crear tres archivos .sci y un archivo .sce. En el primer archivo .sci se declar como tal la funcin dada, es decir a la que se le va a hallar la raz, para esto es necesario declarar una funcin con un parmetro de entrada x. El cdigo para este archivo es el siguiente:
clc; disp(" ** Laboratorio Uno - Grupo 03 ** ") // Segn sea el caso disp("Codigos: 234643 234756 234849") // En concordancia con los participantes ww=getdate(); mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d ",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9));

function z=fun1(x) z=0.975.*x.^2-3.365.*x+2.578.*cos(x.*10.^-9); endfunction

Al ejecutar este cdigo con eco se produce el siguiente resultado:

En la consola simplemente se muestra el cdigo como tal.

En el segundo archivo .sci, como el mtodo requiere el uso de la derivada de la funcin, se declar una nueva funcin con parmetro de entrada x la cual contiene la derivada de la funcin a estudiar.

El cdigo es el siguiente:
clc; disp(" ** Laboratorio Uno - Grupo 03 ** ") // Segn sea el caso disp("Codigos: 234643 234756 234849") // En concordancia con los participantes ww=getdate(); mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d ",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9));

function dz=dfun1(x) dz=1.95.*x-3.365-2.578e-9.*sin(x.*10.^-9); endfunction

Nuevamente al ejecutarlo con eco, en la consola se muestra el cdigo:

El ltimo archivo .sci es el del mtodo numrico, as pues este es el cdigo en el cual se declara una nueva funcin x, la cual tiene tres parmetros de entrada y uno de salida. El cdigo est explicado por medio de comentarios dentro del mismo.

clc; disp(" ** Laboratorio Uno - Grupo 03 ** ") // Segn sea el caso disp("Codigos: 234643 234756 234849") // En concordancia con los participantes ww=getdate(); mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d ",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9)); function [x]=newton1(a, err, max1) ya=fun1(a); //Se evala la funcin en a que es la condicin x0 ya dada. dya=dfun1(a);//Se evala la derivada de la funcin en a que es la condicin x0 ya dada. x(1)=a-(ya/dya); //Se aplica el mtodo numrico con los resultados obtenidos anteriormente y la condicin x0 dada.Formula del mtodo. for i=2:max1 x(i)=x(i-1)-fun1(x(i-1))/dfun1(x(i-1)); if x(i)-x(i-1)<=err then break; end

end //En este ciclo se itera desde 2 ya que x evaluada en 1 ya se calcul, se itera hasta max 1 que son el nmero de iteraciones mximas que uno desee que realice y se calculan los x(las races) segn la frmula dada hasta que se cumpla la condicin del mtodo que es que la resta de la raz n con la raz n-1 sea menor a lo requerido, en este caso 0.1 y as se indica que termine con la iteracin. endfunction

El resultado en consola es el siguiente:

Donde nuevamente se muestra el cdigo en la consola. Por ltimo, en el archivo .sce se asigna un valor a los parmetros de entrada y se llama la funcin del mtodo numrico el cual ejecuta todo y se obtiene el resultado requerido que son todas las races calculadas hasta que se cumple la condicin de parada. El cdigo es el siguiente:
clc; disp(" ** Laboratorio Uno - Grupo 03 ** ") // Segn sea el caso disp("Codigos: 234643 234756 234849") // En concordancia con los participantes ww=getdate(); mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d ",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9)); a=0.125; max1=10; err=0.1; //Asignacin de los valores para los parmetro de entrada. [x]=newton1(a,err,max1) // Se llama a la funcin del mtodo numrico que realiza todos los clculos y muestra las races obtenidas.

Al ejecutar este archivo en la consola se obtiene:

Al ser el que llama y ejecuta todas las funciones, en la consola se muestran los requerimientos para todos los laboratorios (cdigos y fecha de ejecucin) y un vector de resultados x con todas las races que calcul por medio del ciclo hasta que cumpli la condicin de parada. Como se muestra, con este mtodo y condiciones iniciales, la raz hallada es 1.1452047.

OBSERVACIONES

CONCLUSIONES

A lo largo de la vida acadmica es necesario y casi que obligatorio el uso de los mtodos numricos ya que no siempre se van a tener resultados exactos o formas analticas de resolver los problemas y para una fcil aplicacin de estos, algoritmos donde solo es necesario un cambio de variables, herramientas computacionales como scilab son de gran ayuda ya que economizan tiempo y recursos. El correcto uso de los parmetros marca el xito en la aplicacin de estos mtodos numricos, ya que por ejemplo si se establece la condicin de parada muy alta, el resultado obtenido estar bastante alejado de la realidad, es por esto que es necesario conocer y manejar muy bien todos los parmetros y as obtener el mejor resultado posible. Usando los mtodos numricos de Biseccin y Newton-Raphson por medio de una herramienta computacional como Scilab aparte de economizar tiempo en iteraciones, puede llegar a ser muy precisa segn el valor de error que se le d y los requerimientos que se tengan para la respuesta. Es una gran ventaja tener los mtodos codificados pues puede utilizar para evaluar races de diferentes funciones, solo declarndolas y corriendo el programa.

También podría gustarte