Ejemplo 6. Divergencia de un campo vectorial.

Continuemos con un ejemplo algo más útil, en el que vamos a usar:
  • Vectores de 3 dimensiones.
  • Derivadas parciales.
Para comenzar te recomiendo visitar el siguiente artículo de Khan Academy:

Voy a resumir la parte teórica en lo siguiente, la divergencia de un campo vectorial $\nabla \cdot \vec{F}$ en coordenadas cartesianas o rectangulares está dada por:

$$\nabla \cdot \vec{F}=\frac{\partial F_x}{\partial x}+\frac{\partial F_y}{\partial y}+\frac{\partial F_z}{\partial z}$$

Haremos una función que calcule la divergencia de un campo vectorial en coordenadas rectangulares con las variables x, y y z.

La función debe verificar que se ingresa un vector de 3 dimensiones, si se ingresa uno con menos o más dimensiones debe regresar el mensaje "Error de dimensión".

Para comenzar, el vector es una estructura de datos que en TI-BASIC se asemeja bastante a la lista, prácticamente sus diferencias son las operaciones que se pueden hacer con ellos. Por ejemplo, con un vector podemos hacer operaciones vectoriales como producto punto y producto cruz, una lista también lo permite. En cambio con una lista podemos sumar todos sus elementos, elevar todos y cada uno de los elementos a una potencia, dividirlos entre un número, etc, un vector no permite eso:


dotP(vec1,vec2) -> Realiza el producto punto entre dos vectores. Como se observa, tanto como con vectores como con listas da un resultado.

crossP(vec1,vec2) -> Realiza el producto cruz entre dos vectores. También funciona con vectores y listas.

sum(lsit) -> Realiza la suma de todos los elementos de una lista. Sólo funciona con los elementos de una lista, con un vector realizaría la suma de vectores y no de sus componentes.
 

[1,2,3]^2 no se puede pero {1,2,3}^2 eleva al cuadrado cada elemento de la lista.

Hablando de la forma de acceder digamos, no a un elemento del vector sino a una de sus componentes se hace de la misma forma que la lista. Sea vec un vector de dimensión n:
vec[indiceFila, indiceColumna]
La primer componente tiene indice=1, la última tiene indice=n.
Un vector siempre tiene una fila y n columnas.


Por ejemplo, para el vector vec = [xy, 3x, 2yz], accedemos a la componente $\hat{i}$:
vec[1,1] = xy
Para la componente $\hat{j}$:
vec[1,2] = 3x
Para la componente $\hat{k}$:
vec[1,3] = 2yz
Ahora veamos las derivadas parciales.

Usamos el "comando" de la calculadora:

Se pulsa la tecla:
En el menú seleccionamos el símbolo de derivada.

Simplemente escribimos respecto a qué variable se va a derivar y la función:


Es bastante sencillo, aunque no tiene como tal el símbolo que queremos $\frac{\partial}{\partial x}$.

Dicho esto comenzamos con nuestra función.

El algoritmo sería el siguiente:
  1. Inicia la función con argumento vector.
  2. Se comprueba si la dimensión de vector.
    1. Si la dimensión de vector es igual a 3.
      1. Aplicar $\nabla \cdot \vec{F}=\frac{\partial F_x}{\partial x}+\frac{\partial F_y}{\partial y}+\frac{\partial F_z}{\partial z}$.
    2. Si la dimensión de vector es diferente a 3.
      1. Regresar "Error de dimension".
  3. Fin de la función.
En forma de diagrama de flujo:

Agregamos un Editor de programas a un Documento, lo creamos como función:
NOTA: Lo nombré divR por divergencia Rectangular 😉. Recuerda que puedes poner el nombre que gustes.

Declaramos la variable para el argumento:
NOTA: Para almacenar un vector no es necesario llamar vector a una variable, puede ser cualquiera, sólo lo hago así para recordar que contiene un vector.

Declaremos variables que necesitamos:
  • Una variable para el resultado.
¿En serio, solo una? Si, es suficiente. Incluso se puede hacer sin declarar una sola variable.

Ahora comprobemos que el vector es de 3 dimensiones:
(Cambié la vista porque literalmente no cabía en la pantalla)

Nota que usé el comando colDim(vector) en el bloque If. 
Cuando se tiene 2 o más filas se trata de una matriz. Por lo tanto, sólo debemos "contar" las columnas del vector.

Accedo a la componente del vector con:
vector[1,1]
vector[1,2]
vector[1,3]

Eso debería funcionar, probemos. Usaré los siguientes vectores:
El primero debe funcionar a la perfección, es de 3 dimensiones.
El segundo es de dos dimensiones, debe arrojar el mensaje de error.
El ultimo es de cuatro dimensiones, también debe mostrar el error.


El resultado que da está factorizado, es correcto. Ahora TU puedes hacer otras dos funciones, una para la divergencia en coordenadas esféricas y otra para coordenadas cilíndricas. Puedes revisar lo siguiente:

Con esto termina el ejemplo. Puedes descargar el archivo en:
https://github.com/ailr16/TINspireCXCAS-Programacion/blob/master/TI%20Basic/cursoDeProgramacion/ejemplo6Divergencia.tns

Ya sabes, dudas en los comentarios, si es necesario incluso hago una entrada intentando explicar.

Comments

Popular posts from this blog

Programación Calculadora TI Nspire CX CAS en TI-BASIC

Ejemplo 8. Uso de matrices: Serie trigonométrica de Fourier.