Está en la página 1de 19

MTODOS NUMRICOS APLICADOS CON MATLAB

1
APROXIMACIN NUMRICA Y ERRORES CON MATLAB

Al realizar una cantidad de operaciones matemticas en la computadora, a travs de un programa nos podemos encontrar con distintos tipos de errores. Asumamos que, finalmente, despus de batallar un tiempo, logramos construir un programa que realiza el clculo que queremos hacer. Por ejemplo, la mayora de las operaciones entre nmeros reales se realizan, a travs de la representacin de los mismos en 64 bits. Esto introduce el primer error denominado error de redondeo. Los errores de redondeo son caractersticos del hardware. Existe otro tipo de error, denominado error de truncamiento, que es caracterstico del procedimiento numrico que estamos ejecutando. Por ejemplo, para calcular la funcin seno(x) podemos utilizar una representacin en serie, evidentemente no podemos sumar la serie completamente, y slo conviene utilizar la mnima cantidad de trminos que me aseguren determinada precisin. El resto de esa suma es el error que se est cometiendo en el clculo de la funcin. Como si esto fuera poco, debemos prestar atencin a la estabilidad del algoritmo. Imaginemos que estamos resolviendo una ecuacin diferencial, que puede tener varias soluciones posibles, de acuerdo con el orden de la misma y por otras caractersticas puramente matemticas. Sencillamente, un algoritmo es estable si para un gran conjunto de parmetros siempre se obtiene la misma solucin. Las relaciones de recurrencia entre funciones especiales son casos tpicos en los cuales, de acuerdo a cmo se utiliza la recurrencia, se pueden obtener algoritmos estables o inestables. Un aspecto importante de los errores de aproximacin es su estabilidad numrica. Dicha estabilidad se refiere a la manera en como dentro de un algoritmo de mtodos numricos, el error de aproximacin es propagado dentro del propio algoritmo.

LUIS LORENZO JIMNEZ GARCA

1.1 Representacin cientfica de los nmeros


En el clculo cientfico, los nmeros se representan de la forma llamada coma o punto flotante, mediante la representacin cientfica normalizada: N = s m b Dnde: b es la base. x es el exponente. m es la mantisa con b - 1 e m < 1 1 e m < b La mantisa es un nmero real cuya parte entera slo consta de un dgito -que ser la primera cifra significativa del valor a representar. Por ejemplo, el nmero en sistema decimal 123.456 puede ser representado en punto flotante normalizado como 1.23456x102 0.123456x 103. 1.2 Representacin de los nmeros en la computadora La mayor parte de las computadoras trabajan con nmeros reales en sistema binario, en punto flotante, segn las normas establecidas por el Institute of Electrical and Electronics Engineers, Inc. (Instituto de Ingenieros Elctricos y Electrnicos IEEE) de Estados Unidos de Norteamrica (Yang et al., 2005).
x

Con la mantisa(m) siguiendo las normas anteriores, e    e   . Segn la norma IEEE 754 (Standard for Binary Floating-Point Arithmetic) se representan en unidades de memoria NSU (Numerical Storage Unit) o palabras distribuidas en tres campos: un campo de 1 bit, destinado al signo; otro campo de 11 bits destinado al exponente y un campo de 52 bits para la mantisa. El software MatLab sigue los procedimientos establecidos en la norma IEEE 754-1985 (Norma de la Aritmtica Binaria de Punto Flotante) en doble precisin y, utiliza un sistema numrico de punto flotante de 64 bits para representar todos los nmeros de la forma siguiente:
63 Signo(S) 62 Exponente (E) 52 51 Mantisa (m) 0

MTODOS NUMRICOS APLICADOS CON MATLAB

El signo es 0 para nmeros positivos y 1 para nmeros negativos; y para el menor bit significativo.

e e

1.3 Cantidades mximas y mnimas que se pueden representar en MatLab


Cuando en un clculo numrico se alcanza un nmero mayor que el ms grande nmero mquina posible, se dice que hemos alcanzado un overflow (sobreflujo) o desbordamiento de exponente. En muchas computadoras, se produce un error fatal y se detiene el proceso. Si se alcanza un nmero ms pequeo que el ms pequeo nmero mquina posible, se produce un underflow (subflujo) o subdesbordamiento de exponente, la mquina suele asignar el valor 0 y el clculo contina. MatLab proporciona informacin sobre el nmero ms grande y el nmero ms pequeo que puede manejar, mediante los siguientes comandos:

Comando realmax realmin intmax intmin Inf NaN

Descripcin Mayor nmero real positivo utilizable. Menor nmero real positivo utilizable. Mayor nmero entero utilizable. Menor nmero entero utilizable. Infinito. No es un nmero. (Not a Number). Indeterminacin.

Realizando los clculos en la Ventana de Comandos (Command Window) del software MatLab tenemos (MatLab presenta los nmeros por defecto con cuatro dgitos despus del punto decimal):

LUIS LORENZO JIMNEZ GARCA

>> valor_mas_grande = realmax valor_mas_grande = 1.7977e+308 >> valor_mas_pequeno = realmin valor_mas_pequeno = 2.2251e-308 >> entero_mas_grande = intmax entero_mas_grande = 2147483647

>> entero_mas_pequeno = intmin entero_mas_pequeno = -2147483648 >> valor_mas_grande*5 ans = Inf >> valor_mas_pequeno^5 ans = 0

El valor de realmax corresponde aproximadamente a , un valor que resulta del hecho de que las computadoras realizan sus clculos en aritmtica binaria (base 2). Cuando se realizan operaciones, si se sobrepasa la cantidad mxima permisible, MatLab enva un mensaje de respuesta de Inf y si se sobrepasa la cantidad mnima permisible, MatLab enva un mensaje de respuesta de 0. Por ejemplo, obsrvese cmo responde el programa al ejecutar el siguiente comando:

>> 1.0/0.0 Warning: Divide by zero ans = Inf Para MatLab el infinito se representa como Inf. MatLab tiene tambin una representacin especial para los resultados que no estn definidos como nmeros. Por ejemplo, ejectense los siguientes comandos y obsrvense las respuestas obtenidas: >> 0/0 Warning: zero ans = NaN Divide >> inf/inf by ans = NaN

MTODOS NUMRICOS APLICADOS CON MATLAB

En ambos casos la respuesta es NaN. Este tipo de respuesta, as como la de Inf. son importantes en MatLab, pues permiten controlar la fiabilidad de los resultados de los clculos matemticos. Los NaN se propagan al realizar con ellos cualquier operacin aritmtica en el sentido de que, por ejemplo, cualquier nmero sumado a un NaN da otro NaN, MatLab tiene esto en cuenta. Algo semejante sucede con los Inf. Al realizar clculos con nmeros muy grandes o muy pequeos, puede ser posible reordenar los clculos para evitar un desbordamiento o un subdesbordamiento. Por ejemplo, al realizar los siguientes clculos:

(2.5 x 10 200 ) x ( 2 x 10 200 ) x ( 1 x 100 100 )


La respuesta es 5 x 10 300 , dentro de los lmites permisibles por MatLab. Sin embargo, considera lo que ocurre cuando ingresa el problema en MatLab:

>> 2.5e200*2e200*1e-100 ans = Inf

Puesto que MatLab ejecuta la operacin de izquierda a derecha, la primera multiplicacin produce un valor fuera del rango permisible ( 5 x 100 400 ) , lo que resulta en una respuesta de infinito. Sin embargo, al reordenar el problema de la siguiente forma:

>> 2.5e200*1e-100*2e200 ans = 5.0000e+300 Se evita el desbordamiento y se encuentra la respuesta correcta.

1.4 Concepto de precisin de la computadora


Se llama precisin de la computadora al nmero ms pequeo que sumado a 1 lo modifica. MatLab tiene la precisin con la que trabaja almacenada en un comando llamado eps.

LUIS LORENZO JIMNEZ GARCA

>>

eps 2.2204e-016

ans =

Lo cual significa una precisin de 2-52 } 2.2204e-016. Los errores sern del orden de la dcimo sexta cifra significativa en la representacin decimal de un nmero de punto flotante. Estas consideraciones confirman el cumplimiento de la norma IEEE 754-1985. Para analizar los tipos de errores, tenemos las siguientes definiciones: y Exactitud. Se refiere a la cercana de un nmero o de una medida, al valor verdadero que se supone representa. Precisin. Se refiere al nmero de cifras significativas que representa una cantidad, a esto se refiere cuando se habla de doble precisin, dependiendo de la computadora que estemos utilizando. Dgitos significativos. Son aquellos nmeros diferentes de cero, en una cifra o guarismo, leyendo de izquierda a derecha; empiezan con el primer dgito diferente de cero y terminan con el tamao que permitan los campos que guardan a la mantisa. Inexactitud, tambin conocida como sesgo, se define como un alejamiento sistemtico del valor verdadero.

1.5

Errores inherentes, errores de truncamiento y errores de redondeo

Los errores numricos se generan con el uso de aproximaciones para representar cantidades y/u operaciones. Esto da lugar a tres tipos de errores, entre otros: Errores inherentes, errores de truncamiento y errores de redondeo. 1. Errores inherentes. Son propios de los datos con los que se va a operar, pueden ocurrir debido a errores sistemticos por la imprecisin de los aparatos de medicin; a errores accidentales por la apreciacin del observador y otras causas, finalmente, por el valor en s del propio dato. Dentro de los ejemplos clsicos tenemos el valor de T, e, 2 , etctera. MatLab tiene comandos para trabajar con los siguientes nmeros:

MTODOS NUMRICOS APLICADOS CON MATLAB

Nmero pi exp(1)

Descripcin Nmero T = 3.141592653589... Nmero e = 2.718281828459...

>> pi ans = 3.1416

>> exp(1) ans = 2.7183

>> sqrt(2) ans = 1.4142

2. Errores de truncamiento. En este caso se presentan, tanto en los datos como en un proceso numrico o en un nmero finito de intervalos. El error de truncamiento en los datos es el trmino usado para reducir el nmero de dgitos a la derecha del punto decimal, descartando los menos significativos. Ejemplo 1.1 Dados los nmeros reales: 3.14159265358979; 32.438191288; 6.3444444444 , truncar (cortar) estos nmeros a cuatro dgitos a la derecha del punto decimal. Solucin: El resultado es: 3.1415; 32.4381; 6.3444 Ntese que en algunos casos, el truncamiento dar el mismo resultado que el redondeo, pero el truncamiento no redondea hacia arriba ni hacia abajo los dgitos, solamente los corta en el dgito especificado. El error de truncamiento puede ser hasta el doble del error mximo que se puede tener usando redondeo. El error de truncamiento en el proceso tiene relacin con el mtodo de aproximacin que se usar, ya que generalmente frente a una serie infinita de trminos se tender a cortar el nmero de estos, introduciendo en ese momento un error, por no utilizar la serie completa (que se supone es exacta). Por ejemplo, para calcular la funcin podemos utilizar una representacin en serie. Evidentemente no podemos sumar la serie completamente, ya que es infinita y slo conviene utilizar la mnima cantidad de trminos que me aseguren determinada precisin. El resto de esa suma, es decir, la parte que se trunca o se omite, es el error que se est cometiendo en el clculo de la funcin.

LUIS LORENZO JIMNEZ GARCA

Ejemplo 1.2 Calcular el error por truncamiento que se comete al evaluar la funcin exponencial mediante la Serie de Taylor, cuando X = 1. Solucin: Haciendo los clculos numricos y resumiendo los datos tenemos:

Nmero de trminos

Tomando n elementos mediante la Serie de Taylor con ayuda del comando taylor(exp(x),n) de MatLab tenemos:

Aproximacin al valor de la Serie exponencial de ex cuando x=1 1 2 2.5 2.666666667 2.708333333 2.716666667 2.718055556

1 2 3 4 5 6 7

1 1+x 1+x+1/2*x^2 1+x+1/2*x^2+1/6*x^3 1+x+1/2*x^2+1/6*x^3+1/24*x^4 1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5 1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5 +1/720*x^6 1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5 +1/720*x^6+1/5040*x^7 1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5 +1/720*x^6+1/5040*x^7+1/40320*x^8

2.718253968

2.718278770

El resultado obtenido es: e } 2.718278770 y el error por truncamiento lo producen los trminos que se omitieron para este clculo. En una iteracin, el error de truncamiento se entiende como el error por no seguir iterando y seguir aproximndose a la solucin. En un intervalo que se subdivide para realizar una serie de clculos sobre l, se asocia al nmero de paso, resultado de dividir el intervalo "n" veces.

MTODOS NUMRICOS APLICADOS CON MATLAB

3. Errores de redondeo. Este tipo de errores se debe a las limitaciones propias de las computadoras para representar cantidades que requieren un gran nmero de dgitos y debido a que las computadoras slo guardan un nmero finito de cifras significativas durante un clculo. Por ejemplo, si slo se guardan siete cifras significativas, la computadora puede almacenar y usar T como T= 3.141592 y generando un error de redondeo. Existen ciertas reglas para redondear los nmeros: Las reglas de redondeo se aplican al decimal situado en la siguiente posicin al nmero de decimales que se quiere transformar, es decir, si tenemos un nmero de siete decimales y queremos redondear a tres, se aplicar las reglas de redondeo al cuarto decimal. a) Dgito < 5: Si el siguiente decimal es menor que 5, el anterior no se modifica. Ejemplo: 32.6523483. Redondeando a 3 decimales deberemos tener en cuenta el cuarto decimal: 32.6523483 = 32.652. b) Dgito u 5: Si el siguiente decimal es mayor o igual que 5, el anterior se incrementa en una unidad. Ejemplo: 32.6528483. Redondeando a 3 decimales deberemos tener en cuenta el cuarto decimal: 32.6528483=32.653. c) Para el caso de nmeros negativos, el ltimo dgito se disminuye en una unidad si el primer dgito despreciado es u 5. Ejemplo: -32.6528 redondeando a 3 decimales deberemos tener en cuenta el cuarto decimal: -32.6528 = -32.653. En general, los nmeros positivos son redondeados hacia arriba (2.5 se convierte en 3) y los nmeros negativos son redondeados hacia abajo (-2.5 se convierte en -3).

1.6

Error Absoluto y Error Relativo

Error Absoluto. Es la diferencia en valor absoluto de un valor verdadero (X) y una aproximacin a dicho valor verdadero (X 0): E. A. = X - X 0 Esta definicin de error tiene sus inconvenientes como veremos en el siguiente caso:

Ejemplo 1.3 Al medir la longitud de una varilla de acero para construccin se obtiene el resultado aproximado de 1,999 cm, mientras que al medir la longitud de un clavo acerado, se obtiene el resultado de 9 cm. Suponiendo que los valores verdaderos de la varilla y el clavo son de 2,000 cm y 10 cm, respectivamente, calcular el error absoluto en ambos casos.

10

LUIS LORENZO JIMNEZ GARCA

Solucin: Tenemos los siguientes resultados: Para el caso de la varilla de acero, el error absoluto se calcula como: E. A. = 2,000 1,999 = 1 cm Para el caso del clavo acerado, el error absoluto se calcula como: E.A. = 10 9 = 1 cm En ambos casos, el error absoluto es igual, pero tiene mayor trascendencia el error en el caso del clavo que en el caso de la varilla, es decir, necesitamos comparar el error absoluto contra el valor verdadero. Error Relativo. Es el cociente del error absoluto entre el valor verdadero.  siempre que X 0.     

 

Error Relativo Porcentual. Es el error relativo expresado en porcentaje:     

De hecho el error que ms usamos es este ltimo, ya que nos da una idea en tanto por ciento del error que se est cometiendo. Por ejemplo, en el caso de la varilla de acero el error relativo porcentual es: 

Mientras que en el caso del clavo acerado, el error relativo porcentual es: 

Podemos observar que el error relativo porcentual refleja mejor la gravedad o no del error que se est cometiendo. Es claro, que en el caso de la varilla de acero no es trascendente ya que representa solamente un 0.05% con respecto al valor verdadero,

MTODOS NUMRICOS APLICADOS CON MATLAB

11

mientras que en el caso del clavo acerado, el error si es representativo ya que es del 10% del valor verdadero. Finalmente, mencionaremos que un proceso de aproximacin puede detenerse cuando el error relativo porcentual es menor que una cierta cota fijada de antemano. Sin embargo, todava tenemos un pequeo problema en nuestro anlisis del error. Los mtodos numricos se aplican a problemas que no se pueden resolver analticamente o son muy complejos. Por lo tanto, en una situacin real, desconoceremos el valor verdadero de la solucin al problema; entonces estaremos imposibilitados de calcular el error relativo porcentual. La forma de resolver este problema es pensar que para llegar a la aproximacin de un valor, se obtuvo una aproximacin anterior al mismo valor. Una vez calculada la nueva aproximacin, procedemos a calcular otra aproximacin al mismo valor y as sucesivamente. Si el mtodo realmente converge a un resultado (que esperamos sea a la solucin del problema), todas las aproximaciones se estarn aproximando entre s y al valor al cual convergen. Entonces, definimos el error aproximado porcentual como sigue:
I ! X actual  X anterior X actual x100

Como mencionamos anteriormente, el proceso se detiene cuando se logra disminuir el error aproximado porcentual hasta un cierto grado de precisin establecido.

1.7

Uso de los comandos de MatLab para la disminucin de los errores

Una de las ventajas del software MatLab es su empleo para la realizacin de operaciones aritmticas como si se tratara de una calculadora cientfica, pero con una importante diferencia sobre ella: la precisin en el clculo. Las operaciones son realizadas correctamente en forma exacta, o bien, especificando el grado de precisin que se desea. Esta precisin ilimitada en el clculo es la caracterstica que diferencia a MatLab de otros programas de clculo numrico, donde la longitud de la palabra con que trabaja la computadora determina la precisin, con lo que se convierte en algo inherente al hardware y no se puede modificar (Prez, 2002). La exactitud de la salida de los resultados de las operaciones con el software Matlab puede manipularse utilizando tcnicas especiales de aproximacin al resultado exacto con un determinado grado de precisin. MatLab presenta los resultados con exactitud, pero aunque internamente siempre trabaja con clculos exactos para no arrastrar errores de redondeo, pueden habilitarse diferentes formatos de representacin aproximada, que en ocasiones facilitan la interpretacin de los resultados.

12

LUIS LORENZO JIMNEZ GARCA

A continuacin se presentan los comandos MatLab que permiten aproximaciones numricas y redondeo de nmeros: Comando
format short

Descripcin
Se trata del formato por defecto de MatLab. Ofrece los resultados con cuatro dgitos decimales despus del punto para nmeros entre 0.001 y 1000 (Ver short e). Ofrece los resultados con 16 dgitos decimales en total, para nmeros entre 0.001 y 100 (Ver long e). Ofrece los resultados con 16 dgitos decimales en total, ms la potencia de 10 necesaria. Ofrece los resultados con cuatro dgitos decimales despus del punto, ms la potencia de 10 necesaria. Ofrece los resultados en formato largo ptimo con 15 dgitos decimales en total. Ofrece los resultados en formato corto ptimo con 5 dgitos decimales en total. Ofrece los resultados con dos dgitos decimales despus del punto. Ofrece los resultados en forma de nmero racional aproximado. Ofrece el signo de los resultados (+, -) e ignora la parte imaginaria de los nmeros complejos. Suprime el exceso de lneas de salidas. Contrasta con loose. Aade lneas a la salida para que sea ms legible. Contrasta con compact. Ofrece los resultados en el sistema hexadecimal. Ofrece el resultado de las operaciones con n dgitos decimales exactos para nmeros enteros; vpa (variable precission arithmetic). Retorna el valor de x con doble precisin.

format long

format long e

format short e

format long g

format short g

format bank

format rat

format +

format compact

format loose

format hex

vpa operaciones n

double(x)

MTODOS NUMRICOS APLICADOS CON MATLAB

13

digits(n) round(x) fix(x) ceil(x) floor(x)

Ofrece los resultados con n dgitos exactos. Redondea hacia el entero ms prximo. Redondea hacia el entero ms prximo a 0. Valor entero ms prximo hacia + Valor entero ms prximo hacia - Devuelve -1 si x<0; 0 si x=0 y 1 si x>0. Aplicada a un nmero complejo, devuelve un vector unitario en la misma direccin.

sign(x)

Ejemplo 1.4 Veamos varias representaciones de la divisin: 257 z 13. Mediante el comando format obtenemos una aproximacin numrica de manera especificada en el tipo de formato.

>> 257/13 ans = 19.7692 >> format long >>257/13 ans = 19.76923076923077 >> format long e >>257/13 ans = 1.976923076923077e+001 >> format long g >>257/13 ans = 19.7692307692308

>> format short e >>257/13 ans = 1.9769e+001 >> format short g; >>257/13 ans = 19.769 >> format loose >> 257/13 ans = 19.7692 >> format compact >> 257/13 ans = 19.7692

14

LUIS LORENZO JIMNEZ GARCA

>> format bank >>257/13 ans = 19.77 >> format hex; 257/13 ans = 4033c4ec4ec4ec4f

>> vpa ans =

' 257/13 '

12

19.7692307692 >> vpa ans = 19.769230769230769 >> digits(25); vpa '257/13' ans = 19.76923076923076923076923 ' 257/13 ' 17

>>%Para el nmero T y el nmero e tenemos: >>% Valor de pi con 20 dgitos >> vpa ans = 3.1415926535897932385 >>% Valor de pi con 50 dgitos >> vpa ans = 3.1415926535897932384626433832795028841971693993751 >>% Valor de e con 25 dgitos >> vpa ans = 2.718281828459045235360287 >>% Valor de e con 55 dgitos >> vpa ans = 2.718281828459045235360287471352662497757247093699959575 >> digits(55); vpa 'exp(1)' 'exp(1)' 55 'exp(1)' 25 'pi' 50 'pi' 20

MTODOS NUMRICOS APLICADOS CON MATLAB

15

ans = 2.718281828459045235360287471352662497757247093699959575

1.8

Manejo de los nmeros enteros, reales y complejos en MatLab

Nmeros enteros. En MatLab, todas las operaciones usuales con nmeros enteros se realizan de forma exacta, independientemente del tamao que tenga la salida del resultado, incluso cuando tiene ms dgitos de los que cabran a lo ancho de la pantalla. Si queremos que el resultado de una operacin aparezca en pantalla con un determinado nmero de cifras exactas, utilizamos el comando de clculo simblico vpa, cuya sintaxis ya se trat (Prez, 2002). Los nmeros enteros no tienen punto decimal en MatLab. Ejemplo 1.5 Al calcular 12 elevado a la potencia 300 con 390 cifras exactas se obtiene como sigue:

>> vpa '12^300' ans =

390

568033323600758879410809882596518844427765050357579567802377727242 529017498263537150538587023238433026677804323428505832968299373805 879351860735336158759220288565102059486427874208964673321825501246 550113428500464560132230624660243323716513335481349273825909086029 515025224797847031305108944583217651567620935100716470501376.

El resultado de la operacin es exacto siempre que aparezca un punto al final del resultado. En este caso no fueron necesarias las 390 cifras para expresar el resultado de la operacin propuesta, con esto la solucin es exacta. Si se requieren menos cifras, MatLab redondea la cifra y completa el resultado con potencias de 10. >> vpa ans = .56803332360075887941080988259651884442776505035758e324 Nmeros reales. Llamaremos nmero real al que puede ser racional o irracional, por consiguiente, el conjunto de los nmeros reales es la unin del conjunto de nmeros '12^300' 50

16

LUIS LORENZO JIMNEZ GARCA

racionales y el conjunto de nmeros irracionales. Los nmeros reales tienen punto decimal. Un nmero racional (Prez, 2002) es de la forma p/q, donde p es un entero y q otro entero. Luego los racionales son nmeros que se pueden representar como el cociente de dos nmeros enteros. El conjunto de los nmeros racionales est compuesto por los nmeros enteros y por los fraccionarios. Los nmeros enteros son racionales, pues se pueden expresar como cociente de ellos mismos por la unidad: a = a/1. Los nmeros racionales no enteros se llaman fraccionarios. MatLab tambin puede trabajar con ellos de modo exacto, de manera que el resultado de expresiones en las que intervienen nmeros racionales es siempre otro nmero racional o entero. Para ello es necesario activar el formato racional con el comando format rat. Pero MatLab tambin devuelve aproximaciones decimales de los resultados si el usuario lo desea, activando cualquier otro tipo de formato (por ejemplo, format short o format long). La operacin a la calculadora la resuelve MatLab en modo exacto de la siguiente forma: >> format rat >> 1/2 + 1/3 + 1/4 ans = 13/12 Al hacer operaciones con nmeros racionales el resultado siempre se puede conseguir exacto. Por ello, mientras MatLab est tratando con nmeros racionales como cocientes enteros, los mantiene en esta forma. As, no se arrastran errores de redondeo en los clculos con fracciones, que pueden llegar a ser muy graves como se ha visto anteriormente en el Anlisis de Errores. Ntese que una vez habilitado el formato racional, cuando se pide que MatLab sume dos racionales, devuelve un racional como cociente de enteros y as lo representa simblicamente. Una vez habilitado el formato trabajo racional, las operaciones con racionales sern exactas hasta que no se habilite otro formato, en cuyo caso tambin podemos obtener aproximaciones decimales a los nmeros racionales. Un nmero con punto flotante, o sea, un nmero con punto decimal, se interpreta como exacto siempre que est habilitado el formato racional. Si hay un nmero con punto flotante en la expresin, MatLab trata toda la expresin como racional exacta y representa el resultado en nmeros racionales. A su vez, si existe un nmero irracional en una expresin racional, MatLab lo hace corresponder a una fraccin para trabajar en formato racional.

MTODOS NUMRICOS APLICADOS CON MATLAB

17

>> format rat >> 10/23 + 2.45/44 ans = 1183/2412 El otro subconjunto fundamental dentro de los nmeros reales es el de los nmeros irracionales, que por su especial naturaleza siempre han generado dificultades en los procesos de clculo numrico. Los nmeros irracionales son aquellos que se escriben mediante una expresin decimal con infinitas cifras y no peridicas La imposibilidad de representar un irracional de forma exacta en modo numrico (usando las diez cifras del sistema de numeracin decimal) es la causa de la mayora de los problemas. MatLab representa los resultados con la mayor precisin que puede o con la precisin requerida por el usuario. Los irracionales no se pueden representar exactamente como la razn entre dos enteros. Si se pide la raz cuadrada del nmero 27, MatLab devuelve la cantidad 5.1962 para el formato por defecto. >>sqrt (27) ans = 5.1962 Nmeros complejos. El trabajo en el campo de los nmeros complejos est implementado en MatLab. Una i o una j representan el nmero imaginario  1 , que es el valor clave en todo el anlisis de variable compleja. Sobre los nmeros complejos pueden ser aplicados los operadores habituales que con los reales, adems de algunas funciones especficas. Tanto la parte real como la parte imaginaria de los nmeros complejos pueden ser constantes simblicas o cualquier nmero real y, las operaciones con ellos se realizan siempre en modo exacto, a no ser que en alguna intervenga una aproximacin decimal, en cuyo caso se devuelve una aproximacin del resultado (Prez, 2002). Un nmero complejo es de la forma (a + bi) donde a y b son nmeros reales e i representa por definicin  1 (i2 = -1). En forma ms general, los nmeros complejos se representan en MatLab de la siguiente manera: complejo = a + bi; complejo = a + bj; complejo = a + b*i; Obsrvese que la unidad imaginaria puede representarse tanto con i como con j.

18

LUIS LORENZO JIMNEZ GARCA

Con los nmeros complejos podemos realizar las mismas operaciones que con los nmeros reales. La utilizacin del operador de multiplicacin * es necesaria en caso de que la parte imaginaria, b se obtenga como resultado de la aplicacin de una funcin o alguna expresin ms compleja que un simple nmero.

1.9 Costo Operativo y Eficiencia


El nmero de operaciones elementales -floating-point operations (flops)- que un mtodo numrico necesita en su aplicacin, se denomina costo operativo y supone una medida de lo que se denomina complejidad del mtodo, esto es, medida de tiempos y de esfuerzo de clculo. MatLab dispone de funciones que permiten calcular el tiempo empleado en las operaciones matemticas realizadas. Algunas de estas funciones son las siguientes:
Comando Descripcin Devuelve el tiempo de CPU (con precisin de centsimas de segundo) desde que el programa arranc. Llamando antes y despus de realizar una operacin y restando los valores devueltos, se puede saber el tiempo de CPU empleado en esa operacin. Este tiempo sigue corriendo aunque MatLab est inactivo. Tiempo transcurrido entre los vectores t1 y t2 (atencin al orden!) obtenidos como respuesta al comando clock. Proporciona el tiempo en segundos requerido por ops. El comando tic pone el reloj a cero y toc obtiene el tiempo transcurrido. Tiempo real como un vector de la fecha.

cputime

etime(t2, t1)

tic ops toc

clock

A modo de ejemplo, el siguiente cdigo mide de varias formas el tiempo necesario para resolver un sistema de 1000 ecuaciones con 1000 incgnitas. Tngase en cuenta que los tiempos pequeos (del orden de las dcimas o centsimas de segundo), no se pueden medir con gran precisin. Se han puesto varias sentencias en la misma lnea para que se ejecuten todas sin tiempos muertos al pulsar intro enter. Esto es especialmente importante en la lnea de comandos en la que se quiere medir los tiempos. Todas las sentencias de clculos

MTODOS NUMRICOS APLICADOS CON MATLAB

19

matriciales van seguidas de punto y coma (;) con objeto de evitar la salida de resultados. Conviene ejecutar dos o tres veces cada sentencia para obtener tiempos ptimos, ya que la primera vez que se ejecutan se emplea un cierto tiempo en cargar las funciones a memoria. >> n=1000; a=rand(n); b=rand(n,1); x=zeros(n,1); >> tiempoini=clock; x=a\b; tiempo=etime(clock, tiempoini) tiempo = 0.8750 >>time=cputime; time = 0.8594 >>tic; x=a\b; toc x=a\b; time=cputime-time

Elapsed time is 0.844000 seconds.

El tamao de los errores es ciertamente un criterio til. Podramos elegir el mtodo que no d los menores errores. No obstante hay un criterio mejor; quedarse con el mtodo que, dando errores dentro de unos lmites predeterminados, necesite el menor trabajo. Este equilibrio entre precisin y costo operativo se llama eficiencia y diremos que un mtodo es ms eficiente que otro si dando errores parecidos es menos costoso o que siendo parecido de costoso es ms preciso.

También podría gustarte