Sei sulla pagina 1di 18

Instituto Politcnico Nacional

Escuela Superior de Ingeniera Qumica e Industrias Extractivas Mtodos Numricos

Proyecto Primer Departamental Biseccin Gauss-Seidel Newton Raphson Multivariable Grupo: 1IM66
Profesor: M. en C. Hiplito Ruz Martnez

-Lpez Muoz Jos Luis -Mata Snchez Jaime

Fecha de entrega: 13/Marzo/2014

Introduccin: Un mtodo numrico, es un mtodo para obtener la solucin de un problema matemtico en forma de nmeros. En muchos casos el problema puede resolverse de manera exacta mediante funciones conocidas por medio de los mtodos analticos, como los estudiados en unidades de aprendizajes anteriores (Ecuaciones diferenciales y Clculo Diferencial e Integral). Los mtodos numricos son necesarios si se requiere una solucin en forma numrica. Muchos problemas no se pueden resolver por mtodos analticos exactos, por lo que el uso de los mtodos numricos se hace necesario para el proceso de resolucin de un problema. Actualmente, como los mtodos numricos se han implementado ya de forma normal para ser usados en la computadora, a veces los encontramos como mtodos para resolver problemas con computadora. El desarrollo de la computacin en los ltimos treinta aos ha venido acompaado del desarrollo de complejos procedimientos numricos para resolver una amplia variedad de problemas en las ciencias fsicas, en ingeniera y en estadstica. Las ideas bsicas sobre las cuales se apoyan las mayora de las tcnicas numricas actuales se conocen ya desde hace algn tiempo, al igual que los mtodos usados para predecir el grado de divergencia deseado al aplicar un determinado mtodo numrico. Por lo tanto es de inters primordial determinar la manera en la que estos mtodos se han desarrollado y cmo puede estimarse su error, ya que sin duda, algunas variaciones de estas tcnicas se usarn en el futuro para desarrollar y aplicar los procedimientos deseados.

Casi todas las operaciones numricas estn acompaadas inevitablemente de errores y el anlisis de esos errores es una parte integral de todo mtodo numrico.

Para efectos del siguiente documento, se propuso trabajar en el software MATLAB, ya que ofrece un entorno interactivo, sencillo mediante una ventana de comandos, en la que podemos introducir rdenes en modo de textos, en la que aparecen los resultados.

Definicin de problema numrico: Un problema numrico es una descripcin clara y sin ambigedades de las conexiones funcionales entre datos de entrada, es decir Variables independientes del problema, y datos de salida, es decir resultados requeridos. Datos de entrada y datos de salida consisten de un nmero finito de cantidades reales. El objetivo de analizar y tratar un problema numrico, es resolverlo utilizando operaciones bsicas de la aritmtica, con el fin de desarrollar y evaluar mtodos para calcular resultados numricos a partir de los datos de entrada. La metodologa mediante la cual se realiza el clculo se denomina algoritmo.

Algoritmo: Un algoritmo para un problema numrico es una descripcin completa de un nmero finito de operaciones correctamente establecidas y bien definidas, a travs de los cuales cada vector de datos de entrada, es transformado en un vector de datos de salida. Estrictamente la palabra Algoritmo, viene del rabe que significa procedimiento matemtico para la solucin de un problema. Existen diversas razones para la eleccin y/o construccin que satisfaga nuestra necesidad, sin embargo, existen dos criterios generales y fundamentales, sobre los cuales es factible basar todo algoritmo para establecer un mtodo numrico, estos criterios son la rapidez y la precisin. La rapidez es una ventaja evidente, aunque en el caso de problemas pequeos dicha ventaja se ve casi eliminada por la capacidad de la computadora. En problemas de gran escala, la rapidez es un factor principal y un algoritmo lento tiende a ser rechazado por ser poco prctico, de tal suerte que el mtodo ms rpido ser el elegido.

Caractersticas de un algoritmo.
Caractersticas de un algortmo

Finito

Definido

Entrada

Salida

Efectividad

Finito: Siempre debe de terminar en un nmero determinado de pasos. Definido: Las acciones deben definirse sin ambigedad. Salida: Debe tener una o ms salidas Efectividad: Todas las operaciones deben de ser lo suficientemente certeras para que puedan hacerse exactamente en un determinado tiempo, no mayor que el que tome una persona empleando lpiz y papel Un algoritmo puede ser formulado usando algn lenguaje de programacin (como Fortran o Matlab o cualquier otro) y procesarlo en una computadora. Dado que una computadora est compuesta de dispositivos que realizan operaciones lgicas y aritmticas; los procedimientos matemticos deben simplificarse a tal grado que sean accesibles para procesarse en una computadora. ste es uno de los objetivos principales de los mtodos numricos. Los mtodos que vamos a estudiar nos permitirn simplificar procedimientos matemticos, de manera que podamos auxiliarnos con una computadora o una calculadora. Las aplicaciones de los mtodos numricos son prcticamente ilimitadas, y se requieren conocimientos de la materia en disciplinas tan variadas como; economa, contabilidad, mercadotecnia, fsica e ingeniera industrial, civil, elctrica, mecnica, qumica, etc. Asimismo propicia la formacin de criterios de decisin para la eleccin del mtodo adecuado, dependiendo del equipo de cmputo con el que nos estemos auxiliando, pudiendo ser ste desde una gran computadora hasta una calculadora (programable o no).

Biseccin. La primera tcnica que estudiaremos, se basa en el teorema del valor medio, que grficamente se puede interpretar de la siguiente forma: Si f C [a,b] y K es un nmero cualquiera. Entre f(a) y f(b), entonces existe c en (a,b) tal que f(c)=K

Supongamos que tenemos una funcin contnua f, definida en el intervalo [a,b], con f(a) y f(b) de signos distintos. Entonces por el teorema del valor medio (imagen anterior), existe p, a <p<b, tal que f(p)=0. Aunque el procedimiento sirve para el caso en el que f(a) y f(b) tienen signos opuestos y ms qde una raz en el intervalo[ a,b] por simplicidad se supondra que la raz en este intervalo es nica. El mtodo requiere dividir repetidamente a la mitad a los subintervalos de [a,b] y, en cada paso, localizar la mitad que contiene a p. Para empezar tomamos a1=a y b1 y b1=b, y p1 el punto medio de [a,b] o sea: ( )

Si f(p1)=0 entonces p=p1; si no, entonces f(p1) tiene el mismo signo que f(a1) o f(b1). Si f(p1) y f(a1) tienen el mismo signo, entonces p (a1,p1), y tomamos

a2=a1 y b2=p1. Ahora replicamos el proceso para el intervalo [a2,b2]. Esto grficamente lo podemos entender cmo;

Algoritmo de biseccin Paso 1 tomar i=1 Paso 2 Mientras que i <= No seguir a los pasos 3-6

Paso 4 si f(p)= 0 (b-a)/2 < K entonces Salida (p); (se realiz correctamente la operacin) Para. Paso 5 Paso 6 Tomar i=i+1 si f(a) f(p) >0 entonces tomar a=p (calcular ai, bi). Sino tomar b=p Paso 7 Parar Salida (El mtodo diverge despes de No interaciones, No=`. No)

Algoritmo de Mtodo numrico Biseccin en Matlab Para la siguiente funcin, encontrar el valor de sus races. ( )

La convergencia se alcanz a la sexta iteracin con las siguientes races: X1=1.36876 X2=2.0000 X3=1.36880 Con un criterio de convergencia Ep=0.00018

Ejemplo No. 2, para el siguiente guin de Matlab.


%Algoritmo de Biseccin No.2 clear format short; a=input('Introduzca el valor de a'); b=input('Introduzca el valor de b'); cont=input('Introduzca el nmero de iteraciones'); for k=1:1:cont c=(a+b)/2; e=abs((b-a)/2); A(k,:)=[k a b c f(c) e]; if f(a)*f(c)<0 b=c; else a=c; end end fprintf('\n k a b c f(c) error \n') disp(A) fprintf('Solucin: c='), disp(c) fprintf('f(c)='), disp(f(c)) fprintf('error'), disp(e)

Se obtuvo el siguiente resultado, bajo los datos ingresados. >> Introduzca el valor de a: 0 Introduzca el valor de b: 2 Introduzca el nmero de iteraciones cont: 10 Introduzcal a funcion f(x)=exp(x)-2 k a b 0 0 c 2.0000 1.0000 f(c) 1.0000 error 0.7183 1.0000 0.5000 0.2500 0.1250 0.0625 0.0313 0.0156 0.0078 0.0039

1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000

0.5000 -0.3513 0.7500 0.1170

0.5000 0.5000 0.6250 0.6875 0.6875 0.6875 0.6875

1.0000 0.7500 0.7500 0.7500 0.7188 0.7031 0.6953

0.6250 -0.1318 0.6875 -0.0113 0.7188 0.7031 0.6953 0.0519 0.0201 0.0043

0.6914 -0.0035

10.0000 Solucin:

0.6914

0.6953

0.6934

0.0004

0.0020

c= 0.69336 f(c)= 0.00042 error= 0.00195

Biseccin ejemplo 3; por ingreso de datos: Transcripta Matlab:


xai=input('Ingrese el intervalo inferior: '); xbi=input('Ingrese el intervalo superior: '); tol=input('Ingrese el porcentaje de error: '); syms x; f=input('Ingrese la funcin: '); i=1; f1=subs(f,x,xai); f2=subs(f,x,xbi); ea(i)=100; if f1*f2 < 0 xa(i)=xai; f1=subs(f,x,xa(i)); xb(i)=xbi; f2=subs(f,x,xb(i)); xr(i)=(xa(i)+xb(i))/2; f3=subs(f,x,xr(i)); fprintf('It. Xa Xr Xb Error aprox \n'); fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i)); while abs(ea(i)) >= tol, if f1*f3<0 xa(i+1)=xa(i);f1=subs(f,x,xa(i+1)); xb(i+1)=xr(i);f2=subs(f,x,xb(i+1)); end if f1*f3> 0 xa(i+1)=xr(i);f1=subs(f,x,xa(i+1)); xb(i+1)=xb(i);f2=subs(f,x,xb(i+1)); end xr(i+1)=(xa(i+1)+xb(i+1))/2; f3=subs(f,x,xr(i+1)); ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1))*100); fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',... i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1)); i=i+1; end else fprintf('No existe una raz en ese intervalo'); end

Al correr el programa, bajo los datos ingresados, se obtiene la siguiente columna de resultados, la ventaja de este guin es que permite al usuario ingresar los lmites de sustitucin desde el inferior hasta el superior, con el grado de convergencia o porcentaje de error deseado, para el nmero de iteraciones deseadas. Sea la siguiente funcin

Mtodo Newton Raphson Multivariable Para deducir las ecuaciones de Newton Raphson Multivariable, considerar el caso particular de dos variables y dos ecuaciones (n=2): F1(X1,X2)=0 F2(X1,X2)=0 Si todas las n-simas derivadas parciales de f(x1,x2) son continuas en una regin cerrada y si las (n+1)-simas derivadas parciales existen en la regin abierta se tiene;

Aplicando estre resultado a f1 como a f2 en el punto base y con incrementos h1= x1k+1-x1k en la direccin x1 y h2=x2k+1-x2k en la direccin x2:

Donde las derivadas parciales son evaluadas es el punto base x k, sis suponemos que xk+1=xk

Despus de estas suposiciones las ecuaciones anteriores se simplifican considerablemente:

Estas ltimas ecuaciones definien un sistema de deos ecuaciones lineales con dos incognitas h1 y h2. Resuelto estre, la nueva aproximacin xk+1 se calcula de la siguiente forma X1k+1=x1k+h1 X2k+1=x2k+h2 Las frmulas obtenidas anteriormente se pueden generalizar facilmente para el caso de n variables. J(xk)h=-f(xk) La ecuacin anterior es la del mtodo Newton Raphson multivariable. En ella J es la matrz jacobiana del sistema de ecuaciones y est definida por:

Mientras que h=[h1,h2,h3,...hn]T y f=[f1,f2,f3....,fn]T Por lo que en cada iteracin de Newton Raphson Multivariable ser necesario resolver el sistema lineal de n ecuaciones y n incgnitas. Si la matriz

jacobiana es singular, entonces el sistema no tiene solucin nica y por lo tanto ste mtodo falla en la bsqueda de una raz x. Algoritmo Para encontrar una solucin aproximada de un sistema de ecuaciones no lineales f(x)=0, proporcionar la matriz jacobiana ampliada con el vector de funciones: DATOS: el nmero de ecuaciones N, el vector de valores iniciales x, el nmero mximo de iteraciones MAXIT y el criterio de convergencia EPS. RESULTADOS: El vector solucin xn o mensaje no se alcanz la convergencia Paso1: Hacer k=1 Paso 2: Mientras k MAXIT repetir los pasos 3 a 9 Paso3: Evaluar la matriz jacobiana aumentada Pas 4:Resolver el sistema lineal Paso 5: Hacer*xn=x+h Paso 6: si l xn-x l > EPS ir al paso 8. De otro modo continuar. Paso 7: IMPRIMIR xn y TERMINAR Paso 8: Hacer x=xn Paso 9: Hacer k=k+1 Paso 10: IMPRIMIR El mtodo diverge y TERMINAR.

Guin de Matlab
Transcript: Encontrar una solucin aproximada para el siguiente sistema; ( ( ) )

%Mtodo Newton Raphson Multivariable x0=0; y0=0; fprintf(' k x(k) y(k) |x(k+1) -x(k)| \n') fprintf(' %2d %10.5f %10.5f\n',0, x0, y0) for k=1:4 df1x=2*x0-10; df1y=2*y0; df2x=y0^2+1; df2y=2*x0*y0-10; f1=x0^2-10*x0+y0^2+8; f2=x0*y0^2+x0-10*y0+8; A=[df1x df1y; df2x df2y]; b=[-f1; -f2]; hj=(A)\b; x1=x0+hj(1); y1=y0+hj(2); Dist=((x1-x0)^2+(y1-y0)^2)^0.5; fprintf(' %2d %10.5f %10.5f %10.5f\n' ,k, x1, y1, Dist) x0=x1; y0=y1; end

Una vez que se corri el programa, se obtuvieron los siguientes resultados.


k x(k) y(k) |x(k+1) -x(k)| 0 1 2 3 4 0.00000 0.00000 1.18929 0.22195 0.01163 0.00004

0.80000 0.99179 0.99998 1.00000

0.88000 0.99171 0.99997 1.00000 >>

Ejemplo No. 2 Sea el siguiente sistema de funciones ( ) ( Guin Matlab )

Transcript:
%Newton Raphson Multivariable clear all; close all; clc; %funciones x^2+x*y+y^2-1=0 % x^2-y=0 f=inline('[x(1)^2+x(1)*x(2)+x(2)^2-1; x(2)-x(1)^2]'); df=inline('[2*x(1)+x(2) x(1)+2*x(2); -2*x(1) 1]'); %inicio x0=[1;1]; %iteraciones mximas maxi=10; %epsilon eps=1.e-12; corr=eps+1; k=0; while k<=maxi & norm(corr,inf)>eps fx0=feval(f,x0); dfx0=feval(df,x0); corr=dfx0\fx0; x=x0-corr; x0=x; k=k+1; end disp('La solucin es') disp(x) if norm(corr,inf)>eps error('EL METODO CONVERGE') end disp(['se calculo en ' num2str(k) ' iteraciones'])

Al correr el programa, se obtiene el siguiente resultado:

El siguiente ejemplo, resulta un ejemplo prctico altamente visual, ya que permite al usuario ingresar la funcin y el valor de la derivada, as como el nmero de iteraciones deseadas.

Guin Matlab.
%Newton Raphson Mulitvariable clear; clc; fprintf('\n metodo de Newton Rapson Multivariable\n\n'); funcion=input('Dame la funcion f(x) : ','s'); dfuncion=input('Dame la derivada de funcion f(x) : ','s'); d2funcion=input('Dame la segunda derivada de funcion f(x) : ','s'); xi=input('Dame el valor inicial de x : '); e=input('Dame el porciento del error : '); ea=1000; c=1; x=xi; while ea>e g=eval(funcion); h=eval(dfuncion); k=eval(d2funcion); j=x-(g*h)/(h^(2)-(g*k)); ea=abs((j-x)/j*100); x=j; c=c+1; end fprintf('\n\n\n\nLa raiz exacta es: %d',j) fprintf('\n\nNumero de iteraciones: %d',c);

Al

Potrebbero piacerti anche