En general, operan un número con otro número y devuelven como resultado un valor lógico: verdadero (1) o falso (0). Designando por ☸ a un operador relacional cualquiera, se podría expresar como:
numero ☸ numero ☛ logical [1,0]
En vez de un número, podría tratarse de una expresión que devuelva un resultado numérico.
Los operadores relacionales también pueden operar con vectores. Se pueden dar dos circunstancias: operar un vector con un escalar u operar dos vectores. En ambos casos, los operadores relacionales siempre operan el vector elemento a elemento. Para poder aplicar un operador relacional a dos vectores, los vectores tienen que ser del mismo tamaño. El resultado es siempre otro vector del mismo tamaño que el del operando y con componentes del tipo logical (verdadero o falso). Cada componente del vector será el resultado de aplicar el operador relacional a la componente correspondiente del operando. Algunos ejemplos servirán para entenderlo:
V = [1 -1 0 -2 2]
V < 0 ☛ [0 1 0 1 0]
V <= 0 ☛ [0 1 1 1 0]
W = [1 0 0 -2 1]
V ~= W ☛ [0 1 0 0 1]
Se puede utilizar un operador relacional para extraer determinadas componentes de un vector. El resultado será un subvector con las componentes que cumplen la condición:
V = [1 -1 0 -2 2]
V(V>0) ☛ [1 2]
Siguiendo el mismo esquema, se puede utilizar una expresión relacional para sustituir el valor de determinadas componentes de un vector, como se hace en el siguiente ejemplo:
V = [1 -1 0 -2 2]
V(V>0)=100 ☛ [100 -1 0 -2 100]
Un poco más complicado sería sustituir el valor de determinadas componentes por otro valor basado en el de la propia componente. Un ejemplo podría ser multiplicar por -1 las componentes negativas de un vector, para hacerlas positivas:
V = [1 -1 0 -2 2]
V(V<0) = -1 * V(V>0) ☛ [1 1 0 2 2]
Como se ha visto, los operadores relacionales proporcionan algunas herramientas peculiares al operar con vectores. Dichas herramientas es conveniente dominarlas y entenderlas a la perfección. En la siguiente imagen se resumen las cuatro situaciones mencionadas:
La manera en la que los computadores tratan los números reales da lugar a algunas paradojas que es conveniente tener en cuenta para no cometer errores. Los ordenadores no operan con números reales, sino con unos números denominados de coma flotante. Por
ejemplo en Octave y Matlab se utiliza el formato numérico denominado double para representar los números reales,. El formato double permite operar números con hasta 15 decimales significativos. Esto hace que, en el caso de
los números reales que tengan un número de decimales mayor que 15, el valor utilizado por el formato double sea una aproximación al número truncada a 15 decimales.
Números reales con más de 15 decimales significativos hay infinitos, en particular todos los números irracionales y los números racionales como el 1/3 o el 1/7, que tienen un número infinito de decimales. En todas las operaciones que realicemos con el
ordenador en las que intervenga alguno de estos números, los resultados serán aproximados, no exactos.
Históricamente ha habido algunas catástrofes producidas por no considerar adecuadamente estas aproximaciones que realizan los ordenadores. Así sucedió en el caso de la explosión del cohete Arianne 5 poco después del despegue o en el fallo de una
batería de misiles Patriot que no pudo interceptar un misil SCUD disparado por las tropas iraquíes durante la guerra del Golfo [1 y 2].
Una situación concreta en la que hay que tener cuidado y que se da habitualmente en los problemas que se hacen en el curso es la de comprobar si el resultado de una operación entre números reales es igual a cero. El problema de comprobar si dos números reales son iguales es equivalente al anterior, pues comprobar si x es igual a y es equivalente a comprobar si (x-y) es igual a cero. En general es incorrecto hacer la comparación ‘if x==0′ o la comparación ‘if x==y’.Se puede comprobar con el siguiente ejemplo realizado en la consola de Octave:
Operando con números reales, la comprobación (y-2)==0 debería arrojar un resultado verdadero y, en cambio, arroja un resultado falso. La raíz cuadrada de 2 es un número irracional y, por tanto, el valor utilizado por el ordenador es una aproximación. Si se utiliza el formato largo para mostrar los números en pantalla se podrá comprender lo que está pasando:
Se puede ver que la diferencia(y-2) es un valor muy pequeño, pero no exactamente cero.
Hay muchos ejemplos, algunos con operaciones aparentemente sencillas. El lector puede comprobar que al sumar 1/3 + 4/3 + 1/3 no se obtiene exactamente 2, como se muestra en la siguiente figura:
Para actuar de manera controlada en estas situaciones se puede utilizar un valor umbral, que se suele denominar tolerancia, para comparar si determinada cantidad es cero. Lo que se hace es comprobar si la cantidad es menor en valor absoluto que
el valor umbral utilizado. Si así sucede, se considera que dicha cantidad es cero. Por ejemplo, si se toma como valor umbral de la tolerancia 1e-10, se podría hacer la siguiente
comparación:
El valor umbral utilizado para la tolerancia dependerá del problema concreto. Por ejemplo, si se está trabajando en un problema de altitudes del terreno medidas en metros para una obra pública, puede ser suficiente considerar que un milímetro es la cantidad
más pequeña a considerar, con lo que la tolerancia en ese caso podrá ser 1e-3 . En otros casos será necesario utilizar valores menores o mayores. Cuando se trate en el curso la resolución
de ecuaciones no lineales se podrán ver algunos ejemplos.
Octave y Matlab proporcionan una constante denominada eps , que corresponde a la precisión de la máquina, y que depende del ordenador utilizado. El épsilon de la máquina es el número decimal más pequeño que, sumado a 1, la computadora nos arroja un valor
diferente de 1, es decir, que no es redondeado. En el computador que hemos probado, el valor de eps es:
Este valor no nos sirve para utilizarlo como tolerancia, hay que utilizar valores de la tolerancia seleccionados adecuadamente y que se adapten bien al problema concreto. Se puede comprobar que, en el ejemplo de la raíz de 2, el valor de la constante
eps sería menor que el error que se comete y, por tanto, la comprobación seguiría arrojando valores erróneos:
Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.
Cookies estrictamente necesarias
Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.
Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.