Expresión analítica y geométrica del producto escalar

El producto escalar es una operación entre dos vectores que retorna un escalar, es decir, un número real. Existen dos definiciones de esta operación que darán el mismo resultado, aunque inicialmente no sea muy intuitivo que así sea: la analítica y la geométrica. Veamos la primera de ellas:

Dados dos vectores del espacio vectorial ℝn, u = (u1, u2, …, un) y v = (v1, v2, …, vn), se define el producto escalar de ambos, u · v como:

u·v = u1 · v1 + u2 · v2 + … + un · vn

En todo espacio vectorial euclídeo, y por lo tanto normado, podemos usar también la definición geométrica, esta nos dice que el producto escalar de dos vectores es el producto del módulo (o norma) de cada uno de ellos por el coseno del ángulo que forman:

Producto escalar

(2)

A continuación, veamos dos ejemplos sencillos en el plano cartesiano, ℝ2, para ver que ambas formas arrojan el mismo resultado. Ya nos advirtió Johan Cruyff: “Un palomo no hace verano”, por lo que estos dos ejemplos no pretenden demostrar nada sino ejemplificar este concepto poco intuitivo. El primer ejemplo consistirá en los vectores u = (2, 2) y v = (2, -2):

ejemplo 1El ángulo entre ambos es, obviamente, 90º, pues cada uno hace un ángulo de 45º con el eje de las abscisas. Como cos(90º) = 0, según la segunda definición el producto escalar también es 0, pues cualquier número multiplicado por 0 es 0. El mismo resultado obtenemos con la forma analítica:

u·v =2·2 + 2·(-2) = 4 – 4 = 0

El segundo ejemplo estará constituido por los vectores u = (1, 1) y v = (2, 0):

Segundo ejemploEn este caso, el ángulo entre ambos es de 45º. El coseno de 45º es √2 / 2, no es tan redondo como el anterior, no obstante, ambas definiciones deben coincidir:

u·v = 1·2 + 1·0 = 2

Para poder calcular según la segunda definición necesitamos saber, en primer lugar, el módulo o norma de cada vector:

modulo de umodulo de vEfectivamente, coinciden:

con cosenoFinalmente, destacar dos aspectos de la definición geométrica. El primero de ellos es que nos permite obtener el ángulo que forman dos vectores pues, obviamente, al aislar el coseno en la ecuación (2) obtenemos:

angulo de dos vectores

(3)

El segundo es que la interpretación geométrica del producto escalar de dos vectores es la proyección de uno sobre otro multiplicada por el módulo de este último. Con los vectores del último ejemplo, u = (1, 1) y v = (2, 0), la proyección de u sobre v sería:

proyeccion de u sobre v

w es la proyeccion de u sobre v

w es un vector cuyo modulo es la distancia desde el origen hasta la proyección de u sobre v; la podemos calcular mediante trigonometría básica:

resiltado de la proyeccion de u sobre v

Atención: el módulo de w no es el producto escalar entre u y v. Para que lo sea, es necesario multiplicar por el módulo del segundo (v):

Siendo esta exactamente la definición geométrica que vimos en la ecuación (2). En definitiva, podemos ver que:

Producto vectorial con proyección de vectores

Producto vectorial con proyección de vectores

Donde:

Proyección de u sobre v

Proyección de u sobre v

Esta fórmula no sale de la nada (aunque sí habrá salido en muchas chuletas), acabamos de ver que el vector w es la proyección del vector u sobre v, como sabemos que:

Por (3):

Para aislar el módulo de w, olvidémonos del coseno y centrémonos en la segunda y tercera igualdad: multiplicando por el módulo de u en ambos lados de la ecuación nos resulta la fórmula de la proyección de u sobre v:

A modo de anécdota, para saber cuál es el vector w, debemos calcular el vector unitario de v, pues ambos van en la misma dirección, y multiplicarlo por |w|.

Preferencia de las operaciones según Casio

Por la preferencia de operadores, así resolvemos la siguiente operación:

O también:

Ahora bien, la Casio fx-83ES Plus opina diferente:

Casio Fx 82ES PLUS error por la preferencia de operaciones

En primer lugar calcula el paréntesis para, a continuación, multiplicarlo por el denominador, resultado que, finalmente, dividirá el numerador.

En cambio, curiosamente muestra el resultado correcto cuando expresamos la división como una fracción:

Si introducimos exactamente lo mismo que hemos visto en la primera imagen en la Casio fx-570SP X II, una calculadora de gama más alta, nos sigue mostrando el mismo resultado, 1, pero esta vez ella misma añade unos ilustrativos paréntesis que hacen el resultado correcto:

Casio fx 570SP X II

Si seguimos el camino que nos indica, es decir, si añadimos paréntesis, sí obtenemos el resultado esperado, en cualquiera de las dos calculadoras, por ejemplo:

En definitiva, el orden de los operadores conduce a la resolución que se ha descrito inicialmente. Ahora bien, en este tipo de operaciones, estas calculadoras no siguen la jerarquía matemáticamente correcta. De hecho, en el manual de la Casio fx-570SP II encontraremos el caso concreto del uso de paréntesis con omisión del signo de multiplicación, y en el de ambas la jerarquía de las operaciones.

Casio Fx 82ES PLUS operacion correcta

Aquí no hemos omitido el signo de multiplicación

Parece ser que, el acrónimo tan usado en informática: RTFM (Read The Fucking Manual) también aplica a ordenadores tan sencillos como una calculadora.

i elevado a i

Una serie de artículos acerca de la exponenciación con números complejos, que di por finalizada en su tercera entrega, y a los que el lector puede recurrir si no entiende algo de lo que en el presente artículo se explica, voy a ampliarla para el curioso caso de ii, y digo curioso pues el resultado es un número real.

Vimos que la generalización de la exponenciación, ab, sean a y b reales1 o complejos, es:

Exponenciación generalizada

En el presente caso, a = i, y si bien el logaritmo complejo existe, aplicando la fórmula de Euler, podremos obtener la forma exponencial para calcular fácilmente ii. En primer lugar, vamos a expresar i en forma polar para obtener dos datos que necesitaremos: el módulo y el argumento. El módulo, obviamente, será 1 y el argumento será π/2 radianes, pues i forma un ángulo recto con la parte real o eje de las ordenadas:

El número imaginario en el plano cartesiano complejo

Por lo tanto, i = 1π/2 en polar, mientras que en binómica es (0 +1i). De esta última, gracias a que conocemos tanto el módulo como el argumento, podemos pasar a la trigonométrica:

Expresión que se deduce por trigonometría:

forma trigonometrica del número complejo

Gracias a la fórmula de Euler donde x es el argumento:

Formula de EulerPodemos convertir, finalmente, la unidad imaginaria a la forma exponencial:

Por lo que:

Como i = √-1:

Y ya hemos calculado ii.

En rojo el número i y en azul r = ii en el plano complejo.


Si a ∈ ℝ, a > 0

Ecuación de la asíntota oblicua

Es frecuente que a los alumnos se les enseñe que, si una función tiene un asíntota oblicua que viene dada por y = ax + b, los términos a y b se calcularán a partir de dos fórmulas que deben memorizar:

término b

(1)

término a

(2)

Pero, ¿de dónde provienen? Si tenemos poca memoria y/o preferimos entender el porqué de las cosas, algo bastante conveniente en matemáticas, debemos tener en cuenta que, para una x infinitamente grande, por las propiedades de los límites, se cumplirá f(x) – y = 0:

ecuación asintota oblicua

(3)

Estas propiedades son debidas a que los límites cumplen con las condiciones de linealidad, vamos a aplicarlas paso a paso para ver cómo se obtiene el término b:

obtencion termino bAhora sólo resta aislarlo y obtendremos la fórmula inicial (1). En la ecuación (3), y dado que b no depende de x, podemos aislar a y obtendremos la fórmula (2).

 

Funciones

En azul la función f(x) = x²/(x+1) En rojo su asíntota oblicua y = x – 1

Cambiando un poco de tema, pero no demasiado, puede verse que si a = 0, entonces se trata de una asíntota horizontal, por lo que podemos ver las asíntotas horizontales como un caso particular de las oblicuas.

Generalización de los espacios vectoriales

El conjunto de los vectores libres del plano ℝ2 o del espacio ℝ3, es sólo uno del los muchos objetos matemáticos que pueden formar un espacio vectorial. Este concepto se puede abstraer para englobar no sólo vectores sino también otros objetos como polinomios, funciones o conjuntos de números. En este artículo expondré cómo se realiza esta generalización, en primer lugar para tenerlo yo claro, y en segundo lugar, para ayudar a otros; aunque para este segundo caso debo aclarar al lector que yo no soy matemático y por lo tanto sugiero contrastar lo que aquí expongo con fuentes acreditadas.

Vectores en el espacio

En color amarillo está representado el vector (3, 2, 1) y en violeta el (-1, 0, 2).

Los vectores, tanto en el plano como en el espacio, tienen dirección, sentido y módulo. Si lo pensamos, la abstracción del concepto ya empieza simplemente si nos desplazamos a ℝ4 , pues, ¿cómo representar en este espacio dichos valores? No podemos, resulta que fuera del plano y el espacio tridimensional donde nos introdujeron los vectores en el Bachillerato, el vector ya es una abstracción. La siguiente definición y propiedades nos permitirá ir más allá de ℝ3, e incluso de los vectores, con rigurosidad:

Un espacio vectorial es un conjunto no vacío V de objetos, llamados vectores, donde se definen las operaciones suma y multiplicación por escalares (número reales), sujetos a estos 10 axiomas:

  1. La suma de u y v, u + v, está en V.
  2. Conmutativa: u + v = v + u
  3. Asociativa de la suma: (u + v) + w = u + (v + w)
  4. Elemento neutro de la suma: u + 0 = u
  5. Elemento opuesto: Para cada u en V, existe un -u tal que u + (-u) = 0
  6. El múltiplo escalar de u por c, cu, está en V.
  7. Distributiva I: c(u + v) = cu + cv
  8. Distributiva II: (c + d)u = cu + du
  9. Asociativa del producto: c(du) = (cd)u
  10. Elemento neutro del producto: 1u = u

Estos axiomas deben cumplirse ∀ u, v, w ∈ V, ∀ c, d ∈ ℝ

A continuación, expondré un par de objetos para los que se cumplen todos estos axiomas; veremos también cómo se cumplen los fundamentales, pero no los diez, pues sería excesivamente largo.

Los polinomios

Para n ≥ 0, el conjunto Pn de grado n o menor consiste en todos los polinomios de la forma:

p(t) =  a0 + a1t + a2t + … + antn

Si tenemos otro polinomio:

q(t) =  b0 + b1t + b2t + … + bntn

p + q se define mediante:

(p + q)(t) = p(t) + q(t) = (a0 + b0) + (a1 + b1)t + … + (an + bn)tn

El múltiplo por un escalar, cp, es el polinomio definido así:

(cp)(t) = cp(t) = ca0 + (ca1)t + (ca2)t + … + (cantn)

Los axiomas 1 y 6 han sido satisfechos, ya que p + q y cp son polinomios de grado igual o menor que n. Los axiomas 2, 3 y del 7 al 10 son consecuencia de las propiedades de los números reales. El polinomio 0 actúa como elemento neutro de la suma (axioma 4), mientras que el elemento opuesto es (-1)p. Por lo tanto, Pn es un espacio vectorial.

Las funciones reales definidas en un intervalo

Sea V el conjunto de todas las funciones reales definidas en un conjunto D (ya sea un intervalo o todos los números reales). f + g es la función cuyo valor en t en el dominio D es f(t) + g(t). La multiplicación por un escalar cf, f ∈ V, es la función cuyo valor en t es cf(t). Si por ejemplo D = ℝ y tenemos la funciones:

f(t) = cos(t) – 2

g(t) = 1/(t2 + 1) + 7

Se cumple que:

(f + g)(t) = cos(t) + 1/(t2 + 1) + 5

(2g)(t) = 2/(t2 + 1) + 14

Dos funciones en V son iguales si y sólo si sus valores son iguales para toda t en D, por lo que el vector 0 es la función f(t) = 0, para todo t, y (-1)f el elemento opuesto de f. Por lo tanto, como se cumplen los axiomas 1, 6, 4 y 5, y los demás se deducen de las propiedades de los números reales, V es un espacio vectorial.

Intuyo que, en general, los objetos matemáticos que cumplen las condiciones de linealidad pueden constituir espacios vectoriales pues, por ejemplo, son espacios vectoriales el conjunto de las matrices reales de m filas y n columnas, el conjunto de las funciones derivables en un punto y el de las integrables en un intervalo.

Funciones de orden superior

Tanto en matemáticas como en informática, las funciones de orden superior son aquellas que cumplen, al menos, una de estas condiciones:

  1. Esperan como argumento/s una o más funciones.
  2. Devuelven una función como resultado.

Ejemplos en matemáticas son la derivada y la antiderivada o función primitiva.

operador diferencial

El operador diferencial es una función de orden superior

Antiderivada

La antiderivada de una función f es una función F tal que F’ = f

En informática son la esencia de los lenguajes funcionales, pero también aparecen en lenguajes de otros paradigmas. Este es un ejemplo en el lenguaje Scheme en el que la función (f x) recibe un argumento y devuelve una función:

(define (f x)
  (lambda (y) (+ x y)))
(display ((f 3) 7))

Puede ejecutarse aquí para ver el resultado.

Cuando nació Javascript, a algunos programadores les pareció un lenguaje orientado a objetos fallido1, sobretodo porque, por razones comerciales, se le puso un nombre que lo asocia con Java. Desconozco si su creador estuvo muy de acuerdo con ese nombre pues, tal y como se diseño este lenguaje, da bastante juego a la programación funcional. En el siguiente ejemplo, el método filter() es una función de orden superior, pues espera recibir una función como parámetro:

function isPrime(x){
  if (x === 2) {
     return true;
  }
  let test = x%2 !== 0;
  let i = 3;
  stop = Math.floor(Math.sqrt(x)); // Raíz entera de x
  while (test && i <= stop) {
	  test = x%i !== 0;
	  i = i + 2;
  }
  return test;
}

const numbers = [47, 139, 137, 213, 2, 3, 45, 1515];
const primeNumbers = numbers.filter(isPrime);
console.log(primeNumbers);

Lo que este programa hace es filtrar la formación de números naturales “numbers“, dejando sólo los que sean primos en “primeNumbers“. Cada elemento de “numbers” será evaluado por la función “isPrime” mediante la criba de Eratóstenes. El lector puede ejecutarlo accediendo a la consola del navegador pulsando F12 y modificar el valor de “numbers” con los números (o el número) que quiera saber si son primos o no.

Este tipo de funciones están en prácticamente todos los lenguajes modernos, incluso en los que no se tuvo en cuenta el paradigma funcional en el momento de su creación. Es el caso de PHP, donde podemos encontrar una gran cantidad de funciones que esperan otra función, como es el caso de, por ejemplo, preg_replace_callback()2:

$capitalice = function($coincidencia) {
    return strtoupper($coincidencia[1]);
};

echo preg_replace_callback('~-([a-z])~', $capitalice, 'hola-mundo');

Además de usar las implementadas en funciones y métodos propios del lenguaje, también podemos crear las nuestras, de forma parecida a un lenguaje completamente funcional. En Javascript, la Wikipedia nos ofrece el siguiente ejemplo:

const twice = (f, v) => f(f(v));
const add3 = v => v + 3;

console.log(twice(add3, 7));

Lo mismo es posible en PHP:

$twice = function($f, $v) {
    return $f($f($v));
};

$f = function($v) {
    return $v + 3;
};

echo($twice($f, 7));

La programación funcional pretende tratar la programación como la evaluación de funciones matemáticas, paradigma muy diferente a la programación imperativa, basada en estados y en instrucciones que lo cambian. Tal vez las características funcionales que tienen algunos lenguajes puedan ayudarnos a introducirnos en un paradigma, el funcional, que nos exige una forma muy distinta de enfocar los problemas.


 

1 Todavía hoy en día, y a pesar de los cambios que ha sufrido en los últimos ECMA, sigue despertando las críticas de los programadores que, debido a su nombre, esperan que se comporte como un lenguaje completamente orientado a objetos, como Java, y se dan de bruces contra la realidad.

2 El parámetro que recibe la función contenida en $capitalize son las coincidencias que encuentre la expresión regular.