miércoles, 3 de febrero de 2010

Tensor de deformaciones. Diagonalizar matrices con Maxima



Empezamos la colección de ejercicios resueltos con este problema que aparece en el libro "Resistencia de materiales" de Luis Ortiz Berrocal, en la página 51, ejercicio 1.6:

Enunciado

En un determinado punto P de la superficie de un sólido elástico sometido a carga se midieron las siguientes deformaciones: Un alargamiento longitudinal unitario de 0.0001 en la dirección x; un acortamiento longitudinal unitario de 0.0005 en la dirección de y, perpendicular a x y una deformación angular de -2·Raíz(7)·10-4 rad.
  1. Calcular analítica y gráficamente las deformaciones principales, así como las direcciones correspondientes.
  2. Determinar el valor de la deformación angular máxima.
  3. Hallar las componentes intrínsecas del vector deformación unitaria correspondiente a una dirección contenida en el plano xy que forma un ángulo de 45º con la dirección positiva del eje x, contado en sentido antihorario

Usaremos

  • matrix([fila1],[fila2]...): Para definir una variable como matriz. El argumento se compone por las filas, pasadas como listas, separadas por comas. Y cada fila, que es una lista, se limita por los corchetes con los elementos separados por comas. Es más difícil contarlo que hacerlo...
  • diagmatrix(rango,valor): Genera una matriz diagonal del rango que definamos y con el valor en la diagonal que definamos
  • sqrt(num): Raíz cuadrada de un número
  • determinant(matriz): Calcula el determinante de la matriz
  • .: El punto es el operador para el producto de dos matrices. (El asterisco * es el operador del producto miembro a miembro.
  • Matriz[fila,columna]: Para referirnos al término de la matriz de las filas y columnas indicadas.

Resolución

No vamos a hacer la resolución gráfica (círculo de Mohr) porque el ejercicio es un pretexto para ver las matrices en Maxima. Buscaremos las deformaciones principales y las direcciones principales.
Escribimos la matriz. Como todo está multiplicado por 10-4 lo podemos obviar: Los resultados estarán también multiplicados por 10-4
La matriz M:
M:matrix([1,-sqrt(7)],[-sqrt(7),-5]);
Al resultado anterior (%) le restamos una matriz diagonal (de rango 2 y de valor e):
%-diagmatrix(2,e);

Calculamos el determinante;
determinant(%);

Y resolvemos la ecuación de el determinante igual a cero
solve(%=0, e);

La dos soluciones de e son las deformaciones principales (recordemos que está multiplicado por 10-4).

Las direcciones de los vectores principales las dejo para otro día se calculan sustituyendo las soluciones en la matriz de (%o2) y multiplicando por el vector de coordenadas incógnita. Hay dos soluciones que nos definen dos matrices:
M1:subst(e=2,%o2);
M2:subst(e=-6,%o2);

Definimos el vector (columna):
V:matrix([x],[y]);

Y las matrices resultantes de multiplicar M1 y M2 por el vector V.
M1V:M1.V;
M2V:M2.V;

Las coordenadas del vector resultante deben ser cero. Resolvemos el sistema (los dos sistemas)
solve([M1V[1,1]=0,M1V[2,1]=0], [x,y]);
solve([M2V[1,1]=0,M2V[2,1]=0], [x,y]);

Y el resultado es paramétrico (los parámetros son %r1 y %r2). Claro, buscamos una dirección, no un vector. Cualquier valor de los parámetros nos dará un vector de cualquier módulo, pero siempre la misma dirección)

Seguro que el último paso se puede hacer más sencillo, pero tengo que saber más Maxima