You are on page 1of 9

Contenido

Problema 1 ................................................................................................................... 2 Método de escalerización .............................................................................................. 2 Aplicación Real ............................................................................................................ 4 Especificación .............................................................................................................. 4 Problema 2 ................................................................................................................... 6 Método Iterativo ........................................................................................................... 6 Convergencia en Jacobi ................................................................................................ 7 Costo Computacional ................................................................................................... 7

La segunda parte es simplemente la solución del sistema triangular superior. tal que A′ sea triangular superior. la primera es la triangularización del sistema. Página | 2 . Que los sistemas sean equivalentes quiere decir que la solución de Ax = b es exactamente la misma solución de A′x = b′. para reducir los errores e redondeo conviene escoger el pivote máximo en valor absoluto. por medio de operaciones elementales. A cada uno de los términos que aparecen en la diagonal de la matriz A′ se le denomina pivote. hay dos técnicas: Pivoteo Parcial y Pivoteo Total. La misma consiste en ubicar en la fila pivote el término de mayor magnitud de tal forma que al realizar la división por dicho término no se incurre en la violación de división por números cercanos a cero ni la división por cero. Esta permutación de filas es útil también cuando el pivote es pequeño aunque no nulo.Cálculo Numérico Problema 1 Método de escalerización El método de Gauss para resolver el sistema Ax = b tiene dos partes. Para ello. se construye un sistema: A′x = b′ equivalente al primero. ya que siempre se divide por el valor de pivote y esto puede producir grandes errores de redondeo. Pivoteo Total Dado que en la práctica esta técnica no suele usarse (la mejora obtenida frente al pivoteo parcial no compensa su complejidad). en el proceso de escalerización puede ser preciso el intercambio de filas. Por consiguiente. y es necesario que estos elementos no sean nulos para poder resolver A′x = b′. donde k<=i<=n. El proceso como tal es idéntico a eliminación gaussiana simple solo que antes de calcular los multiplicadores se realiza el pivoteo si es necesario. no la mencionaremos. Al realizar el pivoteo se obtienen valores lo más pequeños posibles para los multiplicadores reduciendo así el error de redondeo. después se realiza el intercambio de filas. En cada etapa k se busca que el mayor de los elementos de la columna k ocupe la posición akk. es decir. Por lo tanto. Pivoteo Parcial Esta técnica es utilizada para combatir los errores de truncamiento por ceros en la diagonal o los errores de redondeo por números cercanos a cero.

disp([A b]) fprintf('\n') fprintf('Oprima un tecla para continuar \n') fprintf('\n') pause end Página | 3 .j))). % y los terminos independientes b(j)=b(fila_pivote). así garantizo pivoteo encontre= 0. b(fila_pivote)=temp.:)=A(fila_pivote. j). será necesario pivotear\n'). % Busca la fila pivote fila_pivote=fila_pivote+j-1. % Intercambia las filas A(j. fprintf('\n') end n=Tamano(1).:). fila_pivote. fila_pivote]=max(abs(A(j:n.:)=Aux. if pivote<1e-10 fprintf('Matriz singular \n') fprintf('\n') return end if fila_pivote~=j fprintf('Intercambia las filas %d y %d \n'. mostrando como va cambiando % el sistema de ecuaciones en cada paso. utilizando una estrategia de pivoteo parcial: function x=Gauss(A. 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.Cálculo Numérico A continuación se detalla el código utilizado para la escalerización de una matriz. fprintf('Oprima un tecla para continuar \n'). temp=b(j). else i= i + 1. if m ~= n disp ('La matriz debe ser cuadrada') return end %Verifico que el tamaño de la matriz sea al menos 10 x 10 if Tamano < 10 disp ('El tamaño de la matriz debe ser al menos de 10 X 10') return end %Verifico que al menos exista un 0 en la diagonal. fprintf('Oprima un tecla para continuar \n') fprintf('\n') pause Aux=A(j. n] = size(A). A(fila_pivote.i) == 0 encontre = 1. pause for j=1:n-1 [pivote. fprintf('\n') fprintf('Sistema a escalerizar: \n') fprintf('\n') disp([A b]) fprintf('\n') Tamano= size(A).:). %Verifico que la matriz sea cuadrada [m. i= 1.b) % Escaleriza el sistema Ax=b con pivoteo parcial. while (encontre == 0 & i<=n) if A(i.

El modelo por el cual se opto (RMA-10) utiliza la formulación de Galerkin residual para la resolución de un conjunto de ecuaciones que se derivan de la combinación de las ecuaciones de Navier-Stokes.j).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 Para valores grandes de n el número de operaciones de la solución del sistema triangular es despreciable con respecto al número de operaciones de la triangularización. Especificación Complejidad En el método de Gauss hay que tener en cuenta el número de operaciones de cada uno de los dos procesos: triangularización y solución del sistema triangular.7/6.j)/A(j. advección-difusión.*A(j.n³ + 3/2. continuidad volumétrica.j+1:n)))/A(j. En este sentido. cuando se aplica el algoritmo de eliminación gaussiana a un sistema n * n el número de FLOPs es: 2/3. Desde hace algunos años se esta trabajando en el modelado numérico del Río de la Plata. en la Facultad de Ingeniería de la Universidad de la República y mas precisamente en el Instituto de Mecánica de los Fluidos e Ingeniería Ambiental y con la colaboración del Centro de Cálculo del Instituto de Computación. temperatura o el sedimento suspendido. Por consiguiente.j:n)-Factor*A(j. b(i)=b(i)-Factor*b(j). y de una ecuación de estado que relaciona la densidad con la salinidad.n).Cálculo Numérico for i=j+1:n Factor=A(i.j:n)=A(i.j:n). Comparativa de los algoritmos Página | 4 . end x=x'.n))<1e-10 fprintf('Matriz singular \n') fprintf('\n') return end x(n)=b(n)/A(n. A(i. un requisito básico para la toma de decisiones es contar con un conocimiento apropiado del comportamiento del río. for j=n-1:-1:1 x(j)=(b(j)-sum(x(j+1:n).n² . % transforma las filas % y terminos independientes % Comienza sustitución hacia atrás Aplicación Real El Río de la Plata es una de las principales vías marítimas de América del Sur y es por ello que los intereses contrapuestos sobre el manejo del mismo obligan a un tratamiento integrado para el logro de políticas de gestión adecuadas.

Ello quiere decir que dicha computadora es capaz de ejecutar: 3 × 109 instrucciones básicas por segundo.Jordan Numero aprox. Dichas instrucciones son ejecutadas en forma síncrona con un reloj interno. Actualmente un procesador Core 2 tiene aproximadamente una velocidad de reloj de 3 Gigahertz (GHz). Página | 5 . entonces podríamos decir que cada FLOP tomará: 1/( 3×109 )/2 segundos. la versión en computadora paralela (muchos procesadores) del algoritmo de Gauss-Jordan tiene una menor complejidad que la versión paralela del algoritmo de eliminación gaussiana. Si quisiéramos resolver un sistema 100 x 100 utilizando el algoritmo de Gauss en dicha computadora. de operaciones A pesar que la complejidad de los algoritmos indica que el algoritmo de eliminación gaussiana es mejor por tener la menor complejidad. El tiempo de ejecución de un FLOP en las computadoras puede variar.Cálculo Numérico Método Método de Eliminación de Gauss Método de Eliminación de Gauss . pero supongamos que a nuestra computadora de 3 GHz le toma 2 instrucciones básicas para completar un FLOP. Algoritmos y Computadoras Las computadoras operan realizando instrucciones básicas paso a paso. por consiguiente el tiempo que tomará solo en operaciones de punto flotante será de: 681550/( 3×109 )/2 segundos. dicho programa realizará 681550 FLOPs. entonces.

for i=1:n if A(i. A continuación se detalla el código utilizado para la resolución de un sistema lineal Ax = b. D=diag(diag(A)).i)>sum(abs(A(i. ejecuta una serie de cálculos para obtener o construir una mejor aproximación partiendo de la aproximación semilla. La formula que permite construir la aproximación usando otra se conoce como ecuación de recurrencia 3. C=(D)^(-1)*(b).Cálculo Numérico Problema 2 Método Iterativo Los métodos iterativos se usan cuando: no se conoce un método para obtener la solución en forma exacta el método para determinar la solución exacta requiere mucho tiempo de cálculo una respuesta aproximada es adecuada el número de iteraciones es relativamente reducido Un método iterativo consta de los siguientes pasos: 1. se repite el paso anterior pero usando como semilla la aproximación obtenida El método de Jacobi es un método iterativo para resolver sistemas de ecuaciones lineales mas simple y se aplica solo a sistemas cuadrados. tol=input('Entre la tolerancia: '). puede que no converja') end end x0=input('Entre la solucion inicial (vector vertical): '). n=length(b). inicia con una solución aproximada (Semilla) 2. Página | 6 .1:(i-1)))) + sum(abs(A(i. L=D-tril(A). 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 método no converge') paro=1.(i+1):n))) else disp('A no es de Diagonal Estrictamente Dominante. es decir a sistemas con tantas incógnitas como ecuaciones. utilizando el método de Jacobi: clear clc A=input('Entre la matriz de coeficientes: '). Nmax=100. %Verifico que el tamaño 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. U=D-triu(A). b=input('Entre el vector vertical de los resultados: '). T=(D)^(-1)*(L+U).

el método seguro converge. En el caso del método de Jacobi tenemos que si la matriz de coeficientes original del sistema de ecuaciones es diagonalmente dominante. \n'.0f iteraciones. es decir. A veces la matriz de un sistema de ecuaciones no es diagonalmente dominante pero cuando se cambian el orden de las ecuaciones y las incógnitas el nuevo sistema puede tener matriz de coeficientes diagonalmente dominante. si en cada uno de los renglones.Cálculo Numérico break end if paro==1 break end i=1. En el caso del método de Jacobi la relación de recurrencia utilizada es: x i+1 = c + Bx i . Página | 7 . x0=x.(2n−1) FLOP’s. va a producir una sucesión de aproximaciones cada vez efectivamente más próxima a la solución. n × n por el vector x i toma n. y la suma de dos vectores en ℜ n toma n FLOP’s lo cual da un total de 2n² FLOP’s en cada iteración del método de Jacobi. while i<=Nmax && error>tol x=T*x0+C.\n'. i) x error i=i+1.tol. fprintf('Iteracion %3. Costo Computacional Es difícil estimar el costo computacional de un método iterativo. Por lo tanto el costo computacional que involucra: el producto de la matriz B. end if error<tol disp('La solucion aproximada es: ') x fprintf('Es una solucion aproximada con una tolerancia %1. error=norm(x-x0).10f encontrada en %1.0f: '. pues de antemano se desconoce cuantas iteraciones se requerirán para obtener una solución que satisfaga al usuario.i) end Convergencia en Jacobi Uno de los principales problemas de los métodos iterativos es la garantía de que el método va a converger.i) else fprintf('\n Fracaso en %0. el valor absoluto del elemento de la diagonal principal es mayor que la suma de los valores absolutos de los elementos restantes del mismo renglón. Generalmente se procede a calcular el costo computacional por iteración. cuando se puede garantizar la convergencia y cuando el número de iteraciones esperado es bajo. error=tol+1.0f iteraciones. Utilizando esta información podemos concluir que si el algoritmo toma m iteraciones entonces el total de FLOPs será de: 2mn² Por ello es que el método de Jacobi se prefiere en problemas donde n es grande. Una matriz se dice diagonalmente dominante.

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. como r = A( x − x* ) entonces tomando norma. x − x* ≤ A−1 r (1) Para la segunda desigualdad sabemos que Ax = b. para lo cual primero encontramos las siguientes desigualdades. Buscamos una cota para el error relativo de la solución aproximada. r = b − Ax* . x − x* = x r b Con lo cual si el residuo es tal que r ≪ b entonces el error relativo es pequeño 2. a partir de las desigualdades (4) y (5) deducimos. Definimos también una solución aproximada del sistema x* y a partir de ésta definimos el residuo correspondiente a la solución aproximada. x − x* r 1 (6) ≤ x A A−1 b Y finalmente de las inecuaciones (3) y (6) y de definir el número de condición de A como K ( A) = A A−1 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. Dado que se puede probar que las soluciones halladas mediante el método de Página | 8 . r ≤ A ( x − x* ) (4) Segundo. como A es invertible. entonces a pesar de tener un residuo pequeño el error relativo puede ser significativo 3. x − x* x ≤ A A −1 r b (3) Haremos un cálculo similar al visto previamente para encontrar una cota inferior para el error relativo. x − x* = A−1r y tomando la norma de lo anterior y aplicando la propiedad submultiplicativa. del cual x es la única solución exacta (A es invertible). La primera. como A es invertible se cumple x = A−1b . r = b − Ax* = Ax − Ax* = A( x − x* ) Por lo tanto. Primero. Si la matriz está mal condicionada ( K ( A) ≫ 1 ).Cálculo Numérico Error relativo en una solución aproximada de Ax = b Tenemos el sistema lineal de ecuaciones Ax = b. entonces A−1 b ≥ x (5) Igual que antes.

las cotas halladas nos dicen que estas soluciones serían de buena precisión si K ( A) es pequeño (no se están tomando en cuenta posibles perturbaciones de A y b) Página | 9 .Cálculo Numérico Escalerización Gaussiana siempre dan residuos pequeños.