Mostrando entradas con la etiqueta CAS. Mostrar todas las entradas
Mostrando entradas con la etiqueta CAS. Mostrar todas las entradas

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

martes, 6 de junio de 2023

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