Mostrando entradas con la etiqueta GNU MAXIMA. Mostrar todas las entradas
Mostrando entradas con la etiqueta GNU MAXIMA. Mostrar todas las entradas

viernes, 9 de junio de 2023

Ejemplo de representación gráfica, con GNU MAXIMA, de planos en el espacio euclídeo $\mathbb{R}^3$

Visualicemos, por ejemplo, la incidencia entre los planos $\pi:z-x-y+1=0$ y $\sigma:z+x-y=0$:

(%i57)	
  pi:x+y-1$
  sigma:-x+y$
  wxplot3d([x+y-1,-x+y,[x,-1,1],[y,-1,1]]);    

Se puede apreciar claramente la recta de intersección, cuya ecuación viene dada por la solución del sistema de ecuaciones compatible indeterminado $\left\{\begin{matrix}-x-y+z=-1 \\ x-y+z=0\end{matrix}\right.$; tomando una de las variables como parámetro libre, podemos calcular cualquiera de los infinitos puntos de los que consta dicha recta en el espacio. Se puede comprobar fácilmente que, de las ecuaciones implícitas (cartesianas) de arriba se llega a las siguientes ecuaciones paramétricas para la recta solución: $$ \left\{(x,y,z)=(-1/2\,,\,1/+\lambda\,,\,\lambda):\forall\,\lambda \in \mathbb{R}\right\}$$

$\diamond$

miércoles, 7 de junio de 2023

Cosas que pasan cuando se empieza a trabajar con una herramienta CAS

Un ejemplo con GNU MAXIMA:

(%i1)	/* Habiendo asignado un valor concreto a la variable
	x ...*/
	x:3$
	
(%i2)	/* Quiero calcular, a continuación, la derivada 
	de una función, de variable x, por ejemplo ... */
	diff(x^2+x+1,x);
    
	/* y me encuentro con el siguiente problema: 
    MAXIMA nos dice ... */
    
       diff: second argument 
       must be a variable; found 3
       -- an error. 
       To debug this try: debugmode(true);

(%i3)	/* Para solucionarlo (no hace falta entrar en el modo
        depuración de código), basta con borrar la asignación
	    de valor que, en un principio 
        había realizado a la variable */ 
    
	kill(x)$

(%i4)	/* Ahora sí podré obtener la derivada ...*/
	diff(x^2+x+1,x);

(%o4)	2*x+1

$\diamond$

-oOo-

Utilidades:

  [1] GNU MAXIMA

Un ejercicio con matrices del tipo triangular inferior

ENUNCIADO. Sean $a,b,c,d$ números reales, la matriz triangular inferior $A=\begin{pmatrix}a&0\\ b&a\end{pmatrix}$ no nula y la matriz triangular inferior $B=\begin{pmatrix}c&0\\ d&c\end{pmatrix}$ no nula (nótese que los elementos de las diagonales principales son tales que $A_{11}=A_{22}=a$ y $B_{11}=B_{22}=c$). Compruébese que, así definidas, las matrices $A$ y $B$ conmutan.

SOLUCIÓN. Los cálculos simbólicos los he realizado con ayuda de la herramienta CAS, GNU MAXIMA [1]

(%i28)	A:matrix( [a,0],[b,a]   ); /* Defino una matriz genérica A */
(%o28)	matrix(
		[a,	0],
		[b,	a]
	)
(%i29)	B:matrix( [c,0],[d,c]   ); /* Defino una matriz genérica B */
(%o29)	matrix(
		[c,	0],
		[d,	c]
	)
(%i30)	is(A.B=B.A); /* Compruebo si conmutan. Nótese que en MAXIMA 
                      es necesario usar el punto bajo (.)
                      para la multiplicación de matrices 
                      en lugar del punto elevado (·), pues éste
                      multiplica elemento a elemnto; tal cosa
                      da lugar a muchas confusiones */
(%o30)	true /* En efecto, así es */


(%i31)	A.B; /* Observo el por qué */
(%o31)	matrix(
		[a*c,	0],
		[a*d+b*c,	a*c]
	)
(%i32)	B.A;
(%o32)	matrix(
		[a*c,	0],
		[a*d+b*c,	a*c]
	)
(%i33)	A.B-B.A;
(%o33)	matrix(
		[0,	0],
		[0,	0]
	)
$\diamond$

-oOo-

Utilidades:

  [1] GNU MAXIMA