3.metodo directo

4,353 views
4,128 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,353
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

3.metodo directo

  1. 1. 142.2 Métodos directosSon procedimientos para obtener resultados realizando una secuencia finita de operacionesaritméticas. La cantidad de cálculos aritméticos depende del tamaño del problema. El resultadoobtenido será exacto siempre que se puedan conservar en forma exacta los valores calculadosen las operaciones aritméticas, caso contrario se introducirán los errores de redondeo.Ejemplo. Instrumentar un método directo para resolver un sistema triangular inferior deecuaciones lineales.Modelo matemático a1,1x1 = b1 a2,1x1 + a2,2x2 = b2 a3,1x1 + a3,2x2 + a3,3x3 = b3 .... an,1x1 + an,2x2 + ax,3x3 + . . . + an,nxn = bnSiendo: ai,j: coeficientes (datos) bi : constantes (datos) xi : variables (resultados)La formulación matemática del método se obtiene despejando sucesivamente xi de la ecuación i 1 x1 = (b1) a1,1 1 x2 = (b2 - a2,1x1) a2,2 1 x3 = (b3 - a3,1x1 - a3,2x2) a3,3 ...En general: 1 xi = (bi - ai,1x1 - ai,2x2 - . . . - ai,i-1xi-1), i = 2, 3, . . . , n, ai,i ≠ 0 ai,iAlgoritmo 1) Dados n, a, b 1 2) Calcular x1 = (b1) a1,1 3) Para i=2,3,…, n 1 4) Calcular xi = (bi - ai,1x1 - ai,2x2 - . . . - ai,i-1xi-1) ai,i 5) fin 6) El vector x contendrá la solución exactaEste algoritmo es un caso particular del problema general: solución de un sistema de ecuacioneslineales. Los métodos numéricos normalmente se desarrollan para resolver una clase o tipogeneral de problemas
  2. 2. 15Instrumentación computacional en MATLABPara que la instrumentación sea general es preferible diseñar cada método numéricoindependientemente de los datos de un problema particular. Una instrumentación adecuadaconsiste en escribir una función para facilitar el uso del método numérico.El nombre para la función será triangular. La función recibirá como datos la matriz decoeficientes a y el vector de constantes b y producirá como resultado el vector solución x function x = triangular(a, b) n = length(b); x(1) = b(1)/a(1,1); for i = 2: n s = 0; for j = 1: i-1 s = s + a(i,j)*x(j); end x(i) = (b(i) - s)/a(i,i); endEjemplo. Escribir los comandos para resolver el siguiente problema usando la función anterior 3x1 =2 7x1 + 5x2 =3 8x1 + 2x2 + 9x3 = 6 >> a = [3 0 0; 7 5 0; 8 2 9] Definir la matriz >> b = [2; 3; 6] Definir el vector de constantes >> x = triangular(a, b) Uso de la funciónInteracción con MATLAB Ventana de comandos Ventana de Ingreso de edición comandos Escribir y almacenar la Resultados función obtenidos
  3. 3. 162.2.1 Eficiencia de los métodos directosLa eficiencia de un algoritmo está relacionada con el tiempo necesario para obtener la solución.Este tiempo depende de la cantidad de operaciones aritméticas que se deben realizar. Así, si setienen dos algoritmos para resolver un mismo problema, es más eficiente el que requiere menosoperaciones aritméticas para producir el mismo resultado. Adicionalmente, el algoritmo máseficiente acumulará menos error si los resultados son números reales que no puedenrepresentarse en forma exacta en el dispositivo de cálculo.Sea n el tamaño del problema, y T(n) la eficiencia del algoritmo (cantidad de operacionesaritméticas requeridas). Para obtener T(n) se pueden realizar pruebas en el computador condiferentes valores de n registrando el tiempo de ejecución. Siendo este tiempo proporcional a lacantidad de operaciones aritméticas que se realizaron, se puede estimar la función T(n).Esta forma experimental para determinar T(n) tiene el inconveniente que requiere lainstrumentación computacional del algoritmo para realizar las pruebas. Es preferible conocer laeficiencia del algoritmo antes de invertir esfuerzo en la programación computacional.Para determinar T(n) se puede analizar la formulación matemática del método numérico o laestructura del algoritmo.Ejemplo. El siguiente algoritmo calcula la suma de los cubos de los primeros n númerosnaturales. Encontrar T(n)Sea T la cantidad de sumas que se realizan ... s←0 Para i=1, 2, ..., n s←s+i 3 fin ...La suma está dentro de una repetición que se realiza n veces, por lo tanto, T(n) = nEjemplo. El siguiente algoritmo suma los elementos de una matriz cuadrada a de orden n.Encontrar T(n)Sea T la cantidad de sumas ... s←0 Para i=1, 2, ..., n Para j=1, 2, ..., n s ← s + ai, j fin fin ...La suma está incluida en una repetición doble. La variable i, cambia n veces y para cada uno desus valores, la variable j cambia n veces. Por lo tanto. 2 T(n) = n
  4. 4. 17Ejemplo. El siguiente algoritmo es una modificación del anterior. Suponga que se desea sumarúnicamente los elementos de la sub-matriz triangular superior. Obtener T(n) ... s←0 Para i=1, 2, ..., n Para j=i, i+1, ..., n s ← s + ai, j fin fin ...Si no es evidente la forma de T(n), se puede recorrer el algoritmo y anotar la cantidad de sumasque se realizan i j 1 n 2 n-1 3 n-2 ... ... n-1 2 n 1 n n2 nEntonces, T(n) = 1 + 2 + .... + n = (n + 1) = + (suma de una serie aritmética) 2 2 22.2.2 La notación O( )Supongamos que para resolver un problema se han diseñado dos algoritmos: A y B, con 2eficiencias TA(n) = 10n+2, TB(n) = 2n + 3, respectivamente. ¿Cual algoritmo es más eficiente?.Para valores pequeños de n, TB(n) < TA(n), pero para valores grandes de n, TA(n) < TB(n). Esde interés práctico determinar la eficiencia de los algoritmos para valores grandes de n. Por lotanto el algoritmo A es más eficiente que el algoritmo B como se puede observar en el gráfico:Si T(n) incluye términos con n que tienen diferente orden, es suficiente considerar el término demayor orden pues es el que determina la eficiencia del algoritmo cuando n es grande. No esnecesario incluir los coeficientes y las constantes.
  5. 5. 18 2Ejemplo. Suponga T(n) = n + n + 10. Evaluar T para algunos valores de n T(2) = 4 + 2 + 10 T(5) = 25 + 5 + 10 T(20) = 400 + 20 + 10 T(100) = 10000 + 100 + 10 2Se observa que a medida que n crece, T depende principalmente de n . Este hecho se puedeexpresar usando la notación O( ) la cual indica el “orden” de la eficiencia del algoritmo, y se 2 2puede escribir: T(n) = O(n ) lo cual significa que la eficiencia es proporcional a n , y se dice queel algoritmo tiene eficiencia cuadrática o de segundo orden.En general, dado un problema de tamaño n, la medida de la eficiencia T(n) de un algoritmo se 2 3puede expresar con la notación O(g(n)) siendo g(n) alguna expresión tal como: n, n , n , ..., nlog(n), n log(n), ..., 2 , n!, ... la cual expresa el orden de la cantidad de operaciones aritméticasque requiere el algoritmo.Es de interés medir la eficiencia de los algoritmos para problemas de tamaño grande, pues paraestos valores de n se debe conocer la eficiencia. En el siguiente cuadro se ha tabulado T(n) conalgunos valores de n y para algunas funciones típicas g(n).Tabulación de T(n) con algunos valores de n para algunas funciones típicas g(n) 2 3 n n [log(n)] n [n log(n)] n n 2 n! 1 0 1 0 1 1 2 1 3 1 3 3 9 27 8 6 5 1 5 8 25 125 32 120 7 1 7 13 49 343 128 5040 5 9 2 9 19 81 729 512 3.62x10 7 11 2 11 26 121 1331 2048 3.99x10 9 13 2 13 33 169 2197 8192 6.22x10 12 15 2 15 40 225 3375 32768 1.30x10 5 14 17 2 17 48 289 4913 1.31x10 3.55x10 5 17 19 2 19 55 361 6859 5.24x10 1.21x10 6 19 21 3 21 63 441 9261 2.09x10 5.10x10 6 22 23 3 23 72 529 12167 8.38x10 2.58x10 7 25 25 3 25 80 625 15625 3.35x10 1.55x10 15 64 50 3 50 195 2500 125000 1.12x10 3.04x10 30 157 100 4 100 460 10000 1000000 1.26x10 9.33x10Los algoritmos en las dos últimas columnas son de tipo exponencial y factorialrespectivamente. Se puede observar que aún con valores relativamente pequeños de n el valorde T(n) es extremadamente alto. Los algoritmos con este tipo de eficiencia se denominan no-factibles pues ningún computador actual pudiera calcular la solución en un tiempo aceptablepara valores de n grandesLa mayoría de los algoritmos que corresponden a los métodos numéricos son de tipo polinomial 2 3con g(n) = n, n , n .
  6. 6. 192.2.3 Error de redondeoLos métodos numéricos operan con datos que pueden ser inexactos y dispositivos para registraro representar a los números reales. El error de redondeo se atribuye a la imposibilidad dealmacenar todas las cifras de estos números y a la imprecisión de los instrumentos de medicióncon los cuales se obtienen los datos.Definición: Error de redondeoSean X: Valor exacto (normalmente desconocido) X : Valor aproximado (observado o calculado) EX = X – X Error de redondeo .Definición: Error de redondeo relativoSean X: Valor exacto (normalmente desconocido) X : Valor aproximado (observado o calculado) E: Error de redondeo EX EX = eX ≅ : Error de redondeo relativo. (X, X diferentes de cero) X XDebido a que normalmente no es posible calcular exactamente el valor de E, se debe intentar almenos acotar su valor.2.2.4 Error en la representación de los números realesLas operaciones aritméticas pueden producir resultados que no se pueden representarexactamente en los dispositivos de almacenamiento. Si estos errores se producen en formarecurrente entonces el error propagado pudiera crecer en forma significativa dependiendo de lacantidad de operaciones requeridas. Esta cantidad de operaciones está determinada por laeficiencia del algoritmo.Ejemplo. Suponga que un dispositivo puede almacenar únicamente los cuatro primeros dígitosdecimales de cada número real y trunca los restantes (esto se llama redondeo inferior).Se requiere almacenar el número: X = 536.78Primero expresemos el número en forma normalizada, es decir sin enteros y ajustando sumagnitud con potencias de 10: 3 X = 0.53678x10Ahora descomponemos el número en dos partes 3 3 X = 0.5367x10 + 0.00008x10El valor almacenado es un valor aproximado 3 X = 0.5367x10El error de redondeo por la limitación del dispositivo de almacenamiento es 3 3-4 -1 R = 0.00008x10 = 0.8x10 = 0.8x10En general, si n es la cantidad de enteros del número normalizado con potencias de 10, y m esla cantidad de cifras decimales que se pueden almacenar en el dispositivo, entonces si setruncan los decimales sin ajustar la cifra anterior, el error de redondeo absoluto está acotado por: | R |< 1 ∗ 10n−mMientras que el error relativo: max(| R X |) 1 ∗ 10n−m | r |< = = 10 ∗ 10− m (Solo depende del almacenamiento) min(| R |) 0.1 ∗ 10n
  7. 7. 202.2.5 Error de redondeo en las operaciones aritméticasEn los métodos directos debe considerarse el error en las operaciones aritméticas cuando lacantidad de cálculos requeridos es significativoa) Error de redondeo en la sumaSean X, Y : Valores exactos X , Y : Valores aproximadosCon la definición de error de redondeo EX = X - X , EY = Y - Y S=X+Y S = ( X + EX) + ( Y + EY) = ( X + Y ) + (EX + EY) S= X + Y Valor que se almacenaError de redondeo absoluto en la suma EX+Y = EX + EY |EX+Y| ≤ |EX| + |EY|Error de redondeo relativo en la suma EX + Y EX + EY EX EY X EX Y EY eX+ Y = = = + = + X+Y X+Y X+Y X+Y X+Y X X+Y Y X Y = eX + Y ex + eY X+Y X+Y X Y | eX + Y | ≤ | ex | + | eY | X+Y X+Yb) Error de redondeo en la multiplicación P=XY P = ( X + EX) ( Y + EY) = X Y + X EY + Y EX + EXEY P = X Y + X EY + Y EX El último término se descarta por ser muy pequeño P= X Y Valor que se almacenaError de redondeo absoluto en la multiplicación EXY = X EY + Y EX |EXY| ≤ | X EY| + | Y EX|La magnitud del error de redondeo en la multiplicación puede ser tan grande como la suma delos errores de redondeo de los operandos ponderada por cada uno de sus respectivos valores.Error de redondeo relativo en la multiplicación E XE + YEX XEY YEX EY EX e XY = XY = Y = + = + XY XY XY XY Y X e XY e x + e Y = | e XY | ≤ | e x | + |e Y |En general, si los valores de los operandos tienen ambos el mismo signo, se puede concluir quela operación aritmética de multiplicación puede propagar más error de redondeo que la suma.Adicionalmente, si el resultado de cada operación aritmética debe almacenarse hay que agregarel error de redondeo r debido a la limitación del dispositivo de almacenamiento.
  8. 8. 212.2.6 Propagación del error de redondeo en las operaciones aritméticasAlgunos casos de interésa) Suma de números de diferente magnitudEs suficiente considerar tres números: X, Y, Z. Suponer por simplicidad que los datos sonvalores positivos exactos, por lo tanto eX = 0, eY = 0, ez = 0 S = X + Y + Z, con X>Y>Za) La suma se realiza en el orden escrito S = (X + Y) + Z X Y eX + Y = eX + e Y + r1 = r1 r1: error de redondeo al almacenar la suma X+Y X+Y X+Y Z X+Y (X + Y)r1 + (X + Y + Z)r2 = e(X + Y)+ Z eX + Y + =e Z + r2 = r1 + r2 X+Y+Z X+Y+Z X+Y+Z X+Y+Z r2: error de redondeo al almacenar la sumaSi cada resultado se almacena en un dispositivo que tiene m cifras su cota de error de redondeo: | r1,r2 |< 10 ∗ 10− m (2X + 2Y + Z)10 ∗ 10 − m | e(X + Y)+ Z |< X+Y+ZSe puede concluir que la suma de números debe realizarse comenzando con los números demenor magnitudb) Resta de números con valores muy cercanosSuponer que se deben restar dos números muy cercanos X=578.1, Y=577.8 con error deredondeo en el segundo decimal: EX=EY=0.05 aproximadamente (ambos errores pueden ser delmismo signo o de diferente signo, depende de la forma como se obtuvieron los datos X, Y) EX EY e X = 0.000086 = ≅ 0.0086% , e Y = 0.000086 = ≅ 0.0086% X YCota para el error de redondeo relativo: EX − Y EX − EY EX EY = = eX − Y = − X−Y X−Y X−Y X−Y EX EY | eX − Y | ≤ | |+|− | X−Y X−Y 0.05 0.05 | eX − Y | ≤ | |+|− | ≅ 0.3333 =33.33% 578.1 − 577.8 578.1 − 577.8El aumento en la cota del error en el resultado es muy significativo con respecto a los operandos.Se concluye que se debe evitar restar números cuya magnitud sea muy cercana.Adicionalmente habría que aumentar el efecto del error de redondeo r al almacenar el resultado.
  9. 9. 222.2.7 Ejercicios1. Suponga que tiene tres algoritmos: A, B, C con eficiencia respectivamente: TA(n) = 5n + 50 TB(n) = 10n ln(n) + 5 2 TC(n) = 3n + 1 a) Determine n a partir del cual A es más eficiente que B b) Determine n a partir del cual B es más eficiente que C c) Coloque los algoritmos ordenados según el criterio de eficiencia establecido2. Exprese la eficiencia de los algoritmos A, B, C con la notación O( )3. Los computadores actuales pueden realizar 100 millones de operaciones aritméticas en unsegundo. Calcule cuanto tiempo tardaría este computador para resolver un problema de tamañon=50 si el algoritmo es de tipo: a) Polinomial de tercer grado b) Exponencial c) Factorial4. Determine la función de eficiencia T(n) del algoritmo Triangular incluido en el capítulo 1 yexprésela con la notación O( ). Suponga que es de interés conocer la cantidad total demultiplicaciones que se realizan.5. Encuentre la cota del error relativo en la siguiente operación aritmética: T = X(Y – Z) El error de redondeo relativo de los operandos es respectivamente eX, eY, ez, y el error de redondeo relativo en el dispositivo de almacenamiento es rm a) Primero se realiza la multiplicación y luego la resta b) Primero se realiza la resta y luego la multiplicación6. Dado el siguiente algoritmo Ingresar n Mientras n>0 repita d ← mod(n, 2) Produce el residuo entero de la división n/2 n ← fix(n/2) Asigna el cociente entero de la división n/2 Mostrar d fina) Recorra el algoritmo con n = 73b) Suponga que T(n) representa la cantidad de operaciones aritméticas de división que serealizan para resolver el problema de tamaño n. Encuentre T(n) y exprésela con la notación O( )Para obtener T(n) observe el hecho de que en cada ciclo, el valor de n se reduceaproximadamente a la mitad.

×