You are on page 1of 9

LABORATORIO PARCIAL #1

JONATAN LOPEZ 25441120


CRISTIAN SANABRIA 223652





MTODOS NUMRICOS GRUPO 4







UNIVERSIDAD NACIONAL DE COLOMBIA
FACULTAD DE INGENIERA
BOGOT, 10 DE OCTUBRE DE 2014

Introduccin

En el mbito de la ingeniera en algunas ocasiones se hace evaluar una funcin en un
punto concreto o conocer sus races pero no se conoce la funcin como tal, es entonces
imposible conocer dicho valor utilizando los mtodos tradicionales y se hace necesario
acudir a algunos mtodos numricos que permitan obtener un valor aproximado. Si
conocemos una serie de puntos de la funcin (abscisas y ordenadas) podemos aplicar bien
sea el mtodo del polinomio interpolador de Lagrange o el mtodo del polinomio
interpolador de Newton para obtener un polinomio que se asemeje a la funcin real en un
intervalo, y una vez conocido este polinomio se puede aplicar un mtodo de solucin para
ecuaciones no lineales, como en este caso el mtodo de la falsa posicin o el mtodo de
la secante para obtener la raz deseada de dicho polinomio.
Para desarrollar estos mtodos numricos es necesario realizar una serie de operaciones
que si bien son en general sencillas pueden ser un poco engorrosas por lo cual es
provechoso acudir al entorno de Scilab donde una vez definidos los cdigos solo es
necesario introducir los valores conocidos en cada caso, ahorrndonos tiempo ya que el
sistema puede realizar varias iteraciones rpidamente.

Se tiene en mente que se quieren hallar las dos primeras races del polinomio que interpola por el
polinomio interpolador de Lagrange y el mtodo de la secante y los siguientes datos de la tabla.
Y -0,61 -0,21 1,21 -0,05
X 2,45 3,4 4,35 5,3

Adicionalmente se quiere hallar la primera raiz del polinomio que interpola por el polinomio de
Newton y el mtodo de la Falsa Posicin del siguiente conjunto de datos.


Y -0,62 -0,28 1,28 -0,06
X 1,85 2,7 3,55 4,4

Los distinto cdigos estipulados para llevar a cabo lo descrito anteriormente se presente a
continuacin y se muestra su resultado en una impresin de pantalla al final.
1)
Se crea la un archivo llamado funcin. sci donde se definen las funciones de Lagrange, Newton y
una funcin general para desarrollar los mtodos de la secante y falsa posicin
//Se define la funcin de Lagrange
function [P]=lagrange(X, Y) //X nodos,Y valores
n=length(X); // n es el nmero de nodos. (n-1) es el grado
x=poly(0,"x"); // Se crea una variable X como polinomio
P=0;
for i=1:n, // Se inicia un contador i que va hasta n
L=1;
for j=[1:i-1,i+1:n] // se define un j que toma valores hasta n pero sin tomar el valor de i
L=L*(x-X(j))/(X(i)-X(j)); // se aplica la frmula del polinomio interpolador de Lagrange
end
P=P+L*Y(i); // se define la solucin P
end
endfunction

//------------------------------NEWTON----------------------------------------------

function [P]=newton(X, Y) //X nodos, Y valores
n=length(X); // n es el numero de nodos. (n-1) es el grado
for j=2:n, // se inicia un contador j que toma valores hasta n
for i=1:n-j+1,
Y(i,j)=(Y(i+1,j-1)-Y(i,j-1))/(X(i+j-1)-X(i)); // Se calculan los coeficientes del polinomio
interpolador de Newton
end,
end,
x=poly(0,"x"); // Se crea una variable x como polinomio
P=Y(1,n);
for i=2:n,
P=P*(x-X(i))+Y(i,n-i+1); // Se define la solucin al sistema como un vector P
end
endfunction;

//------------------------------FUNCION-------------------------------------------
//Ac se define una funcin Z utilizando los coeficientes del polinomio obtenidos en el paso anterior

function z=fun(x)
C=coeff(P); //Se define un vector C con los coeficientes del polinomio P

z=C(4)*x^3+C(3)*x^2+C(2)*x+C(1) //Utilizamos el vector C para crear el polinomio Z que se
aplicar a los mtodos de la Secante y Falsa posicin

endfunction


2) Ahora se crea un archivo SciNotes con el siguiente cdigo y se guarda como cdigo.sce desde
donde se ejecutan las funciones ya definidas

clc;
disp(" ** Laboratorio Parcial #1.. - Grupo 4 ** ")
disp("Integrantes: Jonatan Lopez 25441120, Cristian Sanabria 223652 ")
ww=getdate();
mprintf( "AA:%d ,MM:%d ,DD:%d a las HH:%d ,MM:%d ,SS:%d
\n",ww(1),ww(2),ww(6),ww(7),ww(8),ww(9));
X=[2.45;3.4;4.35;5.3] // Se define el vector X (nodos)
Y=[-0.61;-0.21;1.21;-0.05] // Se define el vector Y (valores de la funcin)
[P]=lagrange(X,Y) // Se aplica la funcin Lagrange a los vectores anteriormente definidos
mprintf("\n\nP=")
disp(P=lagrange(X,Y))
i=P

//------------------------------PRIMERA RAIZ-------------------------------------------------------
x0=2.45;
x1=3.4; //Se definen dos puntos de partida
x2=4 //se define x2 para correr el while
while abs(fun(x2))>0.0001
x2=x1-fun(x1)*(x1-x0)/(fun(x1)-fun(x0))
xo=x1;
x1=x2;
x0=xo;
//Se desarrolla la frmula de Secante, para que itere hasta cumplir la condicin expresada en el
while.

end
mprintf("el primer cero de la funcin es %f \n",x2);
mprintf("con un error absoluto de %f \n",fun(x2));

//Se muestra el cero y su respectivo error evalundolo en la funcin.

//--------------------------------SEGUNDA RAIZ-----------------------------------------------------------

x0=6;
x1=5.3; //Se definen dos puntos de partida cercanos a la raz deseada
x3=4 //se define x3 para correr el while
while abs(fun(x3))>0.0001
x3=x1-fun(x1)*(x1-x0)/(fun(x1)-fun(x0))
xo=x1;
x1=x3;
x0=xo;
//Se desarrolla la frmula de Secante, para que itere hasta cumplir la condicin expresada en el
while.

end
mprintf("el segundo cero de la funcin es %f \n",x3);
mprintf("con un error absoluto de %f \n",fun(x3));

//Se muestra el cero y su respectivo error evalundolo en la funcin.

x=[1:0.2:7];
f=horner(i,x);
subplot(211)
xtitle( 'Mtodo de Lagrange') ;
plot(x,f,'r') // Se crea la grfica punto por punto
plot(2.45,-0.61,"o")
plot(3.4,-0.21,"o")
plot(4.35,1.21,"o")
plot(5.3,-0.05,"o")
plot(x2,fun(x2),"x")
plot(x3,fun(x3),"x")

//-----------------------NEWTON------------------------------------------------
X=[1.85;2.7;3.55;4.4] // Se define el vector X como los puntos del sistema
Y=[-0.62;-0.28;1.28;-0.06] // Se define el vector Y como los valores de la funcin
P=newton(X,Y) // Se aplica la funcin a los vectores X y Y

mprintf("\n\nP=")
disp(P=newton(X,Y)) // Se muestra la solucin
i=P

//----------------------------PRIMERA RAIZ--------------------------------------
a=2.7;
b=3.55; //Se definen dos puntos de partida
c=4; //se define c paea correr el while
while abs(fun(c))>0.0001
c=b-(fun(b)*(b-a)/(fun(b)-fun(a)));
yc=fun(c); // Se evala el posible cero

ya=fun(a);

yb=fun(b);

if yb*yc<0 then //Se determina cul de las dos fronteras
a=c; // debe ser remplazada
elseif ya*yc<0 then
b=c;
end
end

//Se desarrolla la frmula de Falsa Posicin, para que itere hasta cumplir la condicin expresada
en el while.

mprintf("el cero de la funcin es %f \n",c);
mprintf("con un error absoluto de %f \n",fun(c));

//Se muestra el cero y su respectivo error evalundolo en la funcin.

x=[1:0.2:5.25];
f=horner(i,x);
subplot(212)
xtitle( 'Mtodo de Newton') ;
plot(x,f,'r') // Se crea la grfica usando punto por punto
plot(1.85,-0.62,"o")
plot(2.7,-0.28,"o")
plot(3.55,1.28,"o")
plot(4.4,-0.06,"o")
plot(c,fun(c),"x")

Ahora se ejecuta primero el SciNotes llamado cdigo.sci y luego se ejecuta el SciNotes llamado
cdigo.sce
La siguiente captura de pantalla muestra la consola al ejecutar el SciNotes: cdigo.sce


Se observa que primero desarrolla el caso del mtodo de Lagrange junto con el mtodo de la
secante, y en segundo lugar desarrolla el ejercicio del mtodo de Newton junto con el mtodo de
falsa posicin.
Tambin muestran las grficas de ambos casos por medio de la funcin plot como se observa en la
siguiente captura de pantalla:


En ambas grficas se seala con unos crculos azules los puntos conocidos de la funcin y con unas
X azules las races del polinomio.
En las grficas se evidencia que aparentemente hay un cero positivo antes del cero hallado
representado por la X. Este cero es despreciado por el hecho de que se encuentra fuera del rango
de los valores usados para hacer el polinomio y adems si se tuviese en cuenta el primer valor de X
dado en los datos originales se ve claramente que un polinomio de grado cuatro no tendra
presente este cero.
Conclusiones
- De los desarrollado anteriormente queda claro que para hallar el polinomio interpolador de un
conjunto de datos ambos mtodos usados, el polinomio interpolador de Lagrange y el de Newton,
requieren de un sencillo algoritmo implementado de manera computacional. De igual manera al
emplear el mtodo de la Secante o el de Falsa Posicin para hallar las races de los polinomios.
- El error permitido es fcil de modificar en los cdigos explicados para hallar las races de los
polinomios. Con esto se permite manejar de manera cmoda el error al usar los algoritmos segn
sea el caso al que se aplique.

You might also like