You are on page 1of 9

Contenido

Problema 1 ................................................................................................................... 2 Mtodo de escalerizacin .............................................................................................. 2 Aplicacin Real ............................................................................................................ 4 Especificacin .............................................................................................................. 4 Problema 2 ................................................................................................................... 6 Mtodo Iterativo ........................................................................................................... 6 Convergencia en Jacobi ................................................................................................ 7 Costo Computacional ................................................................................................... 7

Clculo Numrico

Problema 1
Mtodo de escalerizacin
El mtodo de Gauss para resolver el sistema Ax = b tiene dos partes; la primera es la triangularizacin del sistema, es decir, por medio de operaciones elementales, se construye un sistema: Ax = b equivalente al primero, tal que A sea triangular superior. Que los sistemas sean equivalentes quiere decir que la solucin de Ax = b es exactamente la misma solucin de Ax = b. La segunda parte es simplemente la solucin del sistema triangular superior. A cada uno de los trminos que aparecen en la diagonal de la matriz A se le denomina pivote, y es necesario que estos elementos no sean nulos para poder resolver Ax = b. Por lo tanto, en el proceso de escalerizacin puede ser preciso el intercambio de filas. Esta permutacin de filas es til tambin cuando el pivote es pequeo aunque no nulo, ya que siempre se divide por el valor de pivote y esto puede producir grandes errores de redondeo. Por consiguiente, para reducir los errores e redondeo conviene escoger el pivote mximo en valor absoluto. Para ello, hay dos tcnicas: Pivoteo Parcial y Pivoteo Total. Pivoteo Parcial Esta tcnica es utilizada para combatir los errores de truncamiento por ceros en la diagonal o los errores de redondeo por nmeros cercanos a cero. La misma consiste en ubicar en la fila pivote el trmino de mayor magnitud de tal forma que al realizar la divisin por dicho trmino no se incurre en la violacin de divisin por nmeros cercanos a cero ni la divisin por cero. En cada etapa k se busca que el mayor de los elementos de la columna k ocupe la posicin akk, donde k<=i<=n, despus se realiza el intercambio de filas. El proceso como tal es idntico a eliminacin gaussiana simple solo que antes de calcular los multiplicadores se realiza el pivoteo si es necesario. Al realizar el pivoteo se obtienen valores lo ms pequeos posibles para los multiplicadores reduciendo as el error de redondeo. Pivoteo Total Dado que en la prctica esta tcnica no suele usarse (la mejora obtenida frente al pivoteo parcial no compensa su complejidad), no la mencionaremos.

Pgina | 2

Clculo Numrico

A continuacin se detalla el cdigo utilizado para la escalerizacin de una matriz, utilizando una estrategia de pivoteo parcial:
function x=Gauss(A,b) % Escaleriza el sistema Ax=b con pivoteo parcial, mostrando como va cambiando % el sistema de ecuaciones en cada paso. fprintf('\n') fprintf('Sistema a escalerizar: \n') fprintf('\n') disp([A b]) fprintf('\n') Tamano= size(A); %Verifico que la matriz sea cuadrada [m, n] = size(A); if m ~= n disp ('La matriz debe ser cuadrada') return end %Verifico que el tamao de la matriz sea al menos 10 x 10 if Tamano < 10 disp ('El tamao de la matriz debe ser al menos de 10 X 10') return end %Verifico que al menos exista un 0 en la diagonal, as garantizo pivoteo encontre= 0; i= 1; while (encontre == 0 & i<=n) if A(i,i) == 0 encontre = 1; else i= i + 1; end end %Con al menos un cero en la diagonal me garantizo pivoteo if encontre == 0 fprintf('La Matriz no tiene ceros en la diagonal\n') return else fprintf('La Matriz tiene ceros en la diagonal, ser necesario pivotear\n'); fprintf('Oprima un tecla para continuar \n'); fprintf('\n') end n=Tamano(1); pause for j=1:n-1 [pivote, fila_pivote]=max(abs(A(j:n,j))); % Busca la fila pivote fila_pivote=fila_pivote+j-1; if pivote<1e-10 fprintf('Matriz singular \n') fprintf('\n') return end if fila_pivote~=j fprintf('Intercambia las filas %d y %d \n', fila_pivote, j); fprintf('Oprima un tecla para continuar \n') fprintf('\n') pause Aux=A(j,:); % Intercambia las filas A(j,:)=A(fila_pivote,:); A(fila_pivote,:)=Aux; temp=b(j); % y los terminos independientes b(j)=b(fila_pivote); b(fila_pivote)=temp; disp([A b]) fprintf('\n') fprintf('Oprima un tecla para continuar \n') fprintf('\n') pause end

Pgina | 3

Clculo Numrico

for i=j+1:n Factor=A(i,j)/A(j,j); A(i,j:n)=A(i,j:n)-Factor*A(j,j:n); b(i)=b(i)-Factor*b(j); end disp([A b]) fprintf('\n') fprintf('Oprima un tecla para continuar \n') fprintf('\n') pause end fprintf('Escalerizacion completa \n') fprintf('\n') if abs(A(n,n))<1e-10 fprintf('Matriz singular \n') fprintf('\n') return end x(n)=b(n)/A(n,n); for j=n-1:-1:1 x(j)=(b(j)-sum(x(j+1:n).*A(j,j+1:n)))/A(j,j); end x=x';

% transforma las filas % y terminos independientes

% Comienza sustitucin hacia atrs

Aplicacin Real
El Ro de la Plata es una de las principales vas martimas de Amrica del Sur y es por ello que los intereses contrapuestos sobre el manejo del mismo obligan a un tratamiento integrado para el logro de polticas de gestin adecuadas. En este sentido, un requisito bsico para la toma de decisiones es contar con un conocimiento apropiado del comportamiento del ro. Desde hace algunos aos se esta trabajando en el modelado numrico del Ro de la Plata, en la Facultad de Ingeniera de la Universidad de la Repblica y mas precisamente en el Instituto de Mecnica de los Fluidos e Ingeniera Ambiental y con la colaboracin del Centro de Clculo del Instituto de Computacin. El modelo por el cual se opto (RMA-10) utiliza la formulacin de Galerkin residual para la resolucin de un conjunto de ecuaciones que se derivan de la combinacin de las ecuaciones de Navier-Stokes, continuidad volumtrica, adveccin-difusin, y de una ecuacin de estado que relaciona la densidad con la salinidad, temperatura o el sedimento suspendido.

Especificacin
Complejidad En el mtodo de Gauss hay que tener en cuenta el nmero de operaciones de cada uno de los dos procesos: triangularizacin y solucin del sistema triangular. Por consiguiente, cuando se aplica el algoritmo de eliminacin gaussiana a un sistema n * n el nmero de FLOPs es: 2/3.n + 3/2.n - 7/6.n Para valores grandes de n el nmero de operaciones de la solucin del sistema triangular es despreciable con respecto al nmero de operaciones de la triangularizacin. Comparativa de los algoritmos

Pgina | 4

Clculo Numrico

Mtodo Mtodo de Eliminacin de Gauss Mtodo de Eliminacin de Gauss - Jordan

Numero aprox. de operaciones

A pesar que la complejidad de los algoritmos indica que el algoritmo de eliminacin gaussiana es mejor por tener la menor complejidad, la versin en computadora paralela (muchos procesadores) del algoritmo de Gauss-Jordan tiene una menor complejidad que la versin paralela del algoritmo de eliminacin gaussiana. Algoritmos y Computadoras Las computadoras operan realizando instrucciones bsicas paso a paso. Dichas instrucciones son ejecutadas en forma sncrona con un reloj interno. Actualmente un procesador Core 2 tiene aproximadamente una velocidad de reloj de 3 Gigahertz (GHz). Ello quiere decir que dicha computadora es capaz de ejecutar: 3 109 instrucciones bsicas por segundo. El tiempo de ejecucin de un FLOP en las computadoras puede variar; pero supongamos que a nuestra computadora de 3 GHz le toma 2 instrucciones bsicas para completar un FLOP, entonces podramos decir que cada FLOP tomar: 1/( 3109 )/2 segundos. Si quisiramos resolver un sistema 100 x 100 utilizando el algoritmo de Gauss en dicha computadora, entonces, dicho programa realizar 681550 FLOPs, por consiguiente el tiempo que tomar solo en operaciones de punto flotante ser de: 681550/( 3109 )/2 segundos.

Pgina | 5

Clculo Numrico

Problema 2
Mtodo Iterativo
Los mtodos iterativos se usan cuando: no se conoce un mtodo para obtener la solucin en forma exacta el mtodo para determinar la solucin exacta requiere mucho tiempo de clculo una respuesta aproximada es adecuada el nmero de iteraciones es relativamente reducido Un mtodo iterativo consta de los siguientes pasos: 1. inicia con una solucin aproximada (Semilla) 2. ejecuta una serie de clculos para obtener o construir una mejor aproximacin partiendo de la aproximacin semilla. La formula que permite construir la aproximacin usando otra se conoce como ecuacin de recurrencia 3. se repite el paso anterior pero usando como semilla la aproximacin obtenida El mtodo de Jacobi es un mtodo iterativo para resolver sistemas de ecuaciones lineales mas simple y se aplica solo a sistemas cuadrados, es decir a sistemas con tantas incgnitas como ecuaciones. A continuacin se detalla el cdigo utilizado para la resolucin de un sistema lineal Ax = b, utilizando el mtodo de Jacobi:
clear clc A=input('Entre la matriz de coeficientes: '); b=input('Entre el vector vertical de los resultados: '); n=length(b); %Verifico que el tamao de la matriz sea al menos 10 x 10 if n < 10 disp ('El tamano de la matriz debe ser al menos de 10 X 10') return end paro=0; for i=1:n if A(i,i)>sum(abs(A(i,1:(i-1)))) + sum(abs(A(i,(i+1):n))) else disp('A no es de Diagonal Estrictamente Dominante, puede que no converja') end end x0=input('Entre la solucion inicial (vector vertical): '); tol=input('Entre la tolerancia: '); Nmax=100; D=diag(diag(A)); L=D-tril(A); U=D-triu(A); T=(D)^(-1)*(L+U); C=(D)^(-1)*(b); disp('Tj= ') disp(T) disp('Cj= ') disp(C) if max(abs(eig(T)))>=1 disp('El Radio espectral de la matriz de iteracion es mayor o igual a 1') disp('El mtodo no converge') paro=1;

Pgina | 6

Clculo Numrico

break end if paro==1 break end i=1; error=tol+1; while i<=Nmax && error>tol x=T*x0+C; error=norm(x-x0); fprintf('Iteracion %3.0f: ', i) x error i=i+1; x0=x; end if error<tol disp('La solucion aproximada es: ') x fprintf('Es una solucion aproximada con una tolerancia %1.10f encontrada en %1.0f iteraciones. \n',tol,i) else fprintf('\n Fracaso en %0.0f iteraciones.\n',i) end

Convergencia en Jacobi
Uno de los principales problemas de los mtodos iterativos es la garanta de que el mtodo va a converger, es decir, va a producir una sucesin de aproximaciones cada vez efectivamente ms prxima a la solucin. En el caso del mtodo de Jacobi tenemos que si la matriz de coeficientes original del sistema de ecuaciones es diagonalmente dominante, el mtodo seguro converge. Una matriz se dice diagonalmente dominante, si en cada uno de los renglones, el valor absoluto del elemento de la diagonal principal es mayor que la suma de los valores absolutos de los elementos restantes del mismo rengln. A veces la matriz de un sistema de ecuaciones no es diagonalmente dominante pero cuando se cambian el orden de las ecuaciones y las incgnitas el nuevo sistema puede tener matriz de coeficientes diagonalmente dominante.

Costo Computacional
Es difcil estimar el costo computacional de un mtodo iterativo, pues de antemano se desconoce cuantas iteraciones se requerirn para obtener una solucin que satisfaga al usuario. Generalmente se procede a calcular el costo computacional por iteracin. En el caso del mtodo de Jacobi la relacin de recurrencia utilizada es: x i+1 = c + Bx i ; Por lo tanto el costo computacional que involucra: el producto de la matriz B, n n por el vector x i toma n.(2n1) FLOPs, y la suma de dos vectores en n toma n FLOPs lo cual da un total de 2n FLOPs en cada iteracin del mtodo de Jacobi. Utilizando esta informacin podemos concluir que si el algoritmo toma m iteraciones entonces el total de FLOPs ser de: 2mn Por ello es que el mtodo de Jacobi se prefiere en problemas donde n es grande, cuando se puede garantizar la convergencia y cuando el nmero de iteraciones esperado es bajo.

Pgina | 7

Clculo Numrico

Error relativo en una solucin aproximada de Ax = b


Tenemos el sistema lineal de ecuaciones Ax = b, del cual x es la nica solucin exacta (A es invertible). Definimos tambin una solucin aproximada del sistema x* y a partir de sta definimos el residuo correspondiente a la solucin aproximada, r = b Ax* . Buscamos una cota para el error relativo de la solucin aproximada, para lo cual primero encontramos las siguientes desigualdades. La primera, r = b Ax* = Ax Ax* = A( x x* ) Por lo tanto, como A es invertible, x x* = A1r y tomando la norma de lo anterior y aplicando la propiedad submultiplicativa, x x* A1 r (1) Para la segunda desigualdad sabemos que Ax = b, por lo tanto tomando la norma de la misma manera que antes, A x b (2) De las desigualdades (1) y (2) deducimos la siguiente desigualdad,

x x* x

A A 1

r b
(3)

Haremos un clculo similar al visto previamente para encontrar una cota inferior para el error relativo. Primero, como r = A( x x* ) entonces tomando norma, r A ( x x* ) (4) Segundo, como A es invertible se cumple x = A1b , entonces A1 b x (5) Igual que antes, a partir de las desigualdades (4) y (5) deducimos,

x x* r 1 (6) x A A1 b
Y finalmente de las inecuaciones (3) y (6) y de definir el nmero de condicin de A como K ( A) = A A1 hallamos,

x x* r 1 r K ( A) K ( A) b x b
Observaciones: 1. Si la matriz est idealmente condicionada K ( A) = 1 (esto sucede por ejemplo si la matriz A es ortogonal) entonces las cotas que hallamos para el error relativo nos indican que,

x x* = x

r b

Con lo cual si el residuo es tal que r b entonces el error relativo es pequeo 2. Si la matriz est mal condicionada ( K ( A) 1 ), entonces a pesar de tener un residuo pequeo el error relativo puede ser significativo 3. Dado que se puede probar que las soluciones halladas mediante el mtodo de

Pgina | 8

Clculo Numrico

Escalerizacin Gaussiana siempre dan residuos pequeos, las cotas halladas nos dicen que estas soluciones seran de buena precisin si K ( A) es pequeo (no se estn tomando en cuenta posibles perturbaciones de A y b)

Pgina | 9

You might also like