Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Expresiones

Variables

Al igual que la mayoría de los otros lenguajes de programación, el lenguaje de MATLAB® ofrece expresiones matemáticas, pero a diferencia de la mayor parte de los lenguajes, estas expresiones incluyen matrices completas.

MATLAB no requiere que se declaren los tipos o tamaños de las variables. Cuando MATLAB encuentra el nombre de una nueva variable, la crea de forma automática y asigna la cantidad de almacenamiento apropiada. Si la variable ya existe, MATLAB cambia su contenido y, de ser necesario, asigna más espacio de almacenamiento. Por ejemplo:

num_students = 25

crea una matriz de 1 por 1 llamada num_students y almacena el valor 25 en su único elemento. Para ver la matriz asignada a cualquier variable, tan solo introduzca el nombre de la variable.

Los nombres de las variables constan de una letra, seguida de cualquier cantidad de letras, dígitos o guiones bajos. MATLAB distingue entre letras mayúsculas y minúsculas. A y a no constituyen la misma variable.

Aunque los nombres de variables pueden tener cualquier longitud, MATLAB usa solo los primeros N caracteres del nombre (donde N es el número generado por la función namelengthmax) e ignora el resto. Por consiguiente, es importante que cada nombre de variable sea único en los primeros N caracteres para que MATLAB pueda distinguir correctamente las variables.

N = namelengthmax
N =
    63

Números

MATLAB usa notación decimal convencional, con punto decimal opcional y un signo "más" o un signo "menos" antepuesto. En la notación científica se usa la letra e para especificar una potencia de 10 como factor de escala. Los números imaginarios usan i o j como sufijo. A continuación, se enumeran algunos ejemplos de números válidos:

3              -99            0.0001
9.6397238      1.60210e-20    6.02252e23
1i             -3.14159j      3e5i

MATLAB almacena todos los números internamente usando el formato largo especificado por el estándar de punto flotante IEEE®. Los números de punto flotante tienen una precisión finita de aproximadamente 16 dígitos decimales significativos y un rango finito que va aproximadamente de 10-308 a 10+308.

Los números que se representan en el formato doble tienen una precisión máxima de 52 bits. Cualquier doble que requiera más de 52 bits pierde algo de precisión. Por ejemplo, el siguiente código muestra cómo dos valores desiguales son idénticos porque ambos están truncados:

x = 36028797018963968;
y = 36028797018963972;
x == y
ans =
      1
Los números enteros tienen precisiones disponibles de 8 bits, 16 bits, 32 bits y 64 bits. Si se almacenan los mismos números como enteros de 64 bits, se mantiene la precisión:
x = uint64(36028797018963968);
y = uint64(36028797018963972);
x == y
ans =
      0

MATLAB almacena las partes reales e imaginarias de un número complejo. El software trata la magnitud de las partes de diferentes formas según el contexto. Por ejemplo, la función sort ordena valores usando la magnitud y resuelve empates usando el ángulo de fase.

sort([3+4i, 4+3i])
ans =
   4.0000 + 3.0000i   3.0000 + 4.0000i

Esto se debe al ángulo de fase:

angle(3+4i)
ans =
    0.9273
angle(4+3i)
ans =
    0.6435 

El operador relacional “igual a”, ==), requiere que tanto las partes reales como las imaginarias sean iguales. Los otros operadores relacionales binarios, >, <, >= y <=, ignoran la parte imaginaria del número y consideran solo la parte real.

Operadores de matrices

Las expresiones usan operadores aritméticos y reglas de precedencia familiares.

+

Adición

-

Sustracción

*

Multiplicación

/

División

\

División izquierda

^

Potencia

'

Trasposición conjugada compleja

( )

Especifican el orden de evaluación

Operadores de arreglos

Cuando se extraen del mundo del álgebra lineal, las matrices se convierten en arreglos numéricos bidimensionales. En los arreglos, las operaciones aritméticas se realizan elemento por elemento. Esto significa que la adición y la sustracción funcionan de la misma manera para arreglos y matrices, pero que las operaciones multiplicativas son diferentes. MATLAB utiliza un punto, o punto decimal, como parte de la notación para las operaciones multiplicativas de los arreglos.

La lista de operadores incluye:

+

Adición

-

Sustracción

.*

Multiplicación elemento por elemento

./

División elemento por elemento

.\

División izquierda elemento por elemento

.^

Potencia elemento por elemento

.'

Trasposición de arreglo no conjugada

Si el cuadrado mágico de Durero se multiplica por sí mismo con la multiplicación de arreglos,

A.*A

el resultado es un arreglo que contiene los cuadrados de los números enteros del 1 al 16, en un orden inusual:

ans =
   256     9     4   169
    25   100   121    64
    81    36    49   144
    16   225   196     1

Creación de tablas

Las operaciones con arreglos son útiles para crear tablas. Suponga que n es el vector columna

n = (0:9)';

Entonces,

pows = [n  n.^2  2.^n]

crea una tabla de cuadrados y potencias de 2:

pows =
     0     0     1
     1     1     2
     2     4     4
     3     9     8
     4    16    16
     5    25    32
     6    36    64
     7    49   128
     8    64   256
     9    81   512

En los arreglos, las funciones matemáticas elementales funcionan elemento por elemento. Por lo tanto,

format short g
x = (1:0.1:2)';
logs = [x log10(x)]

crea una tabla de logaritmos.

 logs =
      1.0            0 
      1.1      0.04139
      1.2      0.07918
      1.3      0.11394
      1.4      0.14613
      1.5      0.17609
      1.6      0.20412
      1.7      0.23045
      1.8      0.25527
      1.9      0.27875
      2.0      0.30103

Funciones

MATLAB proporciona una gran cantidad de funciones matemáticas elementales estándar, incluidas abs, sqrt, exp y sin. Tomar la raíz cuadrada o el logaritmo de un número negativo no es un error; el resultado complejo apropiado se produce automáticamente. MATLAB también ofrece muchas funciones matemáticas más avanzadas, como las funciones de Bessel y la función gamma. La mayoría de estas funciones acepta argumentos complejos. Para obtener una lista de las funciones matemáticas elementales, escriba

help elfun

Para obtener una lista de funciones matemáticas y matriciales más avanzadas, escriba

help specfun
help elmat

Algunas de las funciones, como sqrt y sin, están integradas. Las funciones integradas forman parte del núcleo de MATLAB y por eso son muy eficientes, pero los detalles computacionales no son accesibles fácilmente. Otras funciones están implementadas en el lenguaje de programación de MATLAB; por lo tanto, sí se pueden ver sus detalles computacionales.

Existen algunas diferencias entre las funciones integradas y las demás funciones. Por ejemplo, en el caso de las funciones integradas, no se puede ver el código. En otras funciones, el código es visible, e incluso se puede modificar.

Existen varias funciones especiales que proporcionan valores de constantes útiles.

pi

3.14159265...

i

Unidad imaginaria, 1

j

Igual que i

eps

Precisión relativa de punto flotante, ε=252

realmin

El menor número de punto flotante, 21022

realmax

El mayor número de punto flotante, (2ε)21023

Inf

Infinito

NaN

No es un número

El infinito se genera mediante la división por cero de un valor distinto de cero, o mediante la evaluación de expresiones matemáticas bien definidas que alcanzan un desbordamiento, es decir, exceden el valor máximo realmax. El valor "no es un número" se genera al intentar evaluar expresiones como 0/0 o Inf-Inf que no tienen valores matemáticos bien definidos.

Los nombres de las funciones no están reservados. Es posible sobrescribir cualquiera de ellos con una nueva variable, como por ejemplo,

eps = 1.e-6

y luego usar ese valor en cálculos posteriores. La función original se puede restaurar con

clear eps

Ejemplos de expresiones

Ya ha visto varios ejemplos de expresiones de MATLAB. A continuación, encontrará algunos ejemplos más, y los valores resultantes:

rho = (1+sqrt(5))/2
rho =
    1.6180

a = abs(3+4i)
a =
     5

z = sqrt(besselk(4/3,rho-i))
z =
   0.3730+ 0.3214i

huge = exp(log(realmax))
huge =
  1.7977e+308

toobig = pi*huge
toobig =
   Inf