HTML CON JAVASCRIPT VECTORES EN EL ESPACIO PRODUCTO ESCALAR, VECTORIAL Y MIXTO DE VECTORES Vamos a construir un documento en formato HTML que se pueda visualizar con un navegador y en el que incluiremos una pequeña aplicación en JavaScript que nos permita calcular el producto escalar, vectorial y mixto de tres vectores cualesquiera. Considera los vectores u(2,2,1), v(4,3,0) y w(0,12,5) ¿Cómo hallar el producto escalar uv, el producto vectorial uxv y el producto mixto (u,v,w) automáticamente? Lo que pretendemos construir se ilustra en la siguiente figura: Si es preciso consulta la introducción a los documentos HTML que se incluye en el documento intro. CÓDIGO Introduce el siguiente documento HTML en el Bloc de notas (Notepad) o utiliza el procedimiento de “copiar y pegar”. Puedes guardarlo en formato “solo texto” con nombre vectores.htm. No olvides la extensión .htm para que sea interpretado como un documento en formato HTML y puedas visualizarlo en tu navegador (Explorer o similar). <html> <head> <title>Vectores</title> <script > function calcular() { ux=parseFloat(document.vect[0].value); uy=parseFloat(document.vect[1].value); uz=parseFloat(document.vect[2].value); vx=parseFloat(document.vect[3].value); vy=parseFloat(document.vect[4].value); vz=parseFloat(document.vect[5].value); wx=parseFloat(document.vect[6].value); wy=parseFloat(document.vect[7].value); wz=parseFloat(document.vect[8].value); document.vect.uv.value=ux*vx+uy*vy+uz*vz; uvx= uy*vz-uz*vy ; uvy=-ux*vz+uz*vx ; uvz= ux*vy-uy*vx; document.vect.uvx.value=uvx ; document.vect.uvy.value=uvy ; document.vect.uvz.value=uvz; document.vect.uvw.value=(ux*vy*wz+uy*vz*wx+vx*wy*uz)-(uz*vy*wx+uy*vx*wz+vz*wy*ux); document.vect.mu.value= Math.sqrt(ux*ux+uy*uy+uz*uz); document.vect.mv.value= Math.sqrt(vx*vx+vy*vy+vz*vz); document.vect.mw.value= Math.sqrt(wx*wx+wy*wy+wz*wz); document.vect.uxv.value= Math.sqrt(uvx*uvx+uvy*uvy+uvz*uvz); } </script> </head> <body text=white bgcolor=blue> Introduce las coordenadas de tres vectores: <form name="vect"> u =<input type="text" size="3"><input type="text" size="3"><input type="text" size="3"><BR> v =<input type="text" size="3"><input type="text" size="3"><input type="text" size="3"><BR> w=<input type="text" size="3"><input type="text" size="3"><input type="text" size="3"> <input type="button" value="Calcular" onClick="calcular()"><BR><BR> |u|=<input type="text" size="5"name="mu"> |v|=<input type="text" size="5"name="mv"> |w|=<input type="text" size="5"name="mw"><BR> Producto escalar............u v = <input type="text" size="3" name="uv"><BR> Producto vectorial.......u x v=( <input type="text" size="3"name="uvx">, <input type="text" size="3"name="uvy">, <input type="text" size="3"name="uvz">)<BR> Producto mixto..........(u,v,w)=<input type="text" size="3"name="uvw"><BR> Módulo del producto vectorial....|uxv|=<input type="text" size="3"name="uxv"><BR> </form> </body> </html> DESCRIPCIÓN: Hay que distinguir dos partes: • La primera es la cabecera ( incluida entre <head> y </head>) y contiene un título del documento y una construcción con JavaScript ( incluida entre <script> y </script>) que contiene una función calcular( ) para obtener los diferentes productos y módulos a partir de los valores introducidos en el formulario que luego se describe. La función calcular comienza leyendo los datos introducidos en las casillas del formulario vect. Las 9 primeras casillas (numeradas de 0 a 8) contienen las coordenadas de los tres vectores. Al leerlos se les antepone la función ParseFloat para que los valores sean considerados como números. Con estos valores se obtiene el producto escalar uv y se asigna al valor de la casilla del formulario vect denominada uv. Esto se consigue con la expresión document.vect.uv.value= . De igual forma se obtiene el producto mixto (determinante) y las coordenadas del producto vectorial y se asignan a la “propiedad value” de las casillas correspondientes del formulario. Para hallar la raíz cuadrada que aparece en el cálculo de módulos se utiliza la función Math.sqrt(..). • La parte final ( incluida entre <body> y </body>) contiene lo que realmente se visualiza en pantalla. Tras un título aparece el “formulario vect” ( definido entre <form> y </form>) que contiene 9 casillas para albergar las coordenadas de los vectores u, v y w, un botón “Calcular” que al ser pulsado ( OnClick) invoca la función calcular( ) y varias casillas inferiores para mostrar los diferentes resultados. Al invocar la función calcular() se desencadena la lectura de datos y el cálculo y escritura de resultados en las casillas inferiores. UTILIZACIÓN: Para abrir el documento creado basta hacer doble clic con el ratón sobre su nombre y el navegador nos mostrará en pantalla el formulario en blanco. Para introducir el vector u(2,2,1) sitúa el cursor sobre la primera casilla y escribe 2, en la segunda casilla 2, y en la tercera 1. Puedes saltar a cada casilla siguiente pulsando la tecla tabulador. Introduce a continuación las coordenadas de los otros vectores v y w. No olvides el signo si algún coeficiente es negativo. Al pulsar el botón Calcular obtendrás los resultados en las casillas inferiores. PRÁCTICA: • Introduce en la hoja las coordenadas de los siguientes vectores u, v y w y obtén los correspondientes productos escalar, vectorial y mixto, así como sus respectivos módulos. u:=[1, 2, 1] v:=[-1, 1, -1] w:=[0, 3, 0] u:=[0, 0, 0] v:=[-1, 1, -2] w:=[0, 2, -1] u:=[123, 675, 432] v:=[-317, 401, -212] w:=[10, 27, -19] u:=[3.51 , 1.37 , 2.41] v:=[-1.23 , 2.31 , -7.22] w:=[0.11 , 2.43 , -1.06] • Para tres vectores u,v y w cualesquiera halla los siguientes productos deduciendo de los resultados las correspondientes propiedades: Producto escalar: uv vu uu Producto vectorial: uxv Producto mixto: (u,v,w) (v,u,w) vxu uxu u0 ( vector 0(0,0,0) ) u x 3u ( toma como vector v el triple de u) • Considera los vectores i=[1, 0, 0], j=[0, 1, 0] y k=[0, 0, 1]. Halla los siguientes productos vectoriales: ixj ixk jxk jxi kxj kxi Ten en cuenta en cada caso qué vector debes introducir en la hoja como u y como v. AMPLIACIÓN Puedes completar el documento para hallar el ángulo formado por los vectores u y v. Para ello debes añadir una casilla más al formulario (name=”angulo”) y en la función “calcular” incluir en una línea la siguiente expresión que calcula el cociente entre el producto escalar y el producto de los módulos: Document.vect.angulo.value= (uv=ux*vx+uy*vy+uz*vz)/( Math.sqrt(ux*ux+uy*uy+uz*uz)* Math.sqrt(vx*vx+vy*vy+vz*vz)) Si previamente asignamos a uv, mu y mv el producto escalar y los módulos, la expresión se reduce a la siguiente: Document.vect.angulo.value=uv/(mu*mv) Puesto que el modulo de un vector (a,b,c) se utiliza varias veces puedes definir una función de la siguiente forma: function modulo(a,b,c) { return Math.sqrt(a*a+b*b+c*c) } Inclúyelo antes de la función calcular() ( después de la línea <script > ) y modifica las líneas correspondientes a: módulo de u = modulo(ux,uy,uz) Módulo de v = modulo(vx,vy,vz) Módulo de w = modulo(wx,wy,wz) Módulo de uxv =modulo(uvx,uvy,uvz) También puedes ampliar el formulario e incluir casillas para hallar la suma de los dos vectores u+v y el producto de un escalar k por el vector u. Para ello deberás insertar una casilla en el bloque inicial para introducir el valor de k y dos filas de tres casillas en el bloque final para mostrar las coordenadas de u+v y de ku. En la función calcular() deberás añadir las líneas correspondientes para leer k, y para calcular y mostrar u+v y ku.