Subject: Matrix times zero vector isn't zero vector?
From: Richard Fateman
Date: Wed, 01 May 2013 15:04:55 -0700
I've written some stuff about matrix manipulation where the matrix is
not explicit, but
described as (say) block diagonal of size (symbolic N) X N; the
blocks must be of size
a,b,...z such that a+b+...+z = N. What can you "compute" with this..
You can indeed
prove various things without knowing what N is.
.
www.eecs.berkeley.edu/~*fateman*/papers/symmat2.pdf?
An alternative cut through the matrix manipulation morass is this:
The commercial Macsyma has a huge amount of extra stuff under the topic
"matrice" (not matrix).
While this documentation is, I think, all online, and it is hardly
exciting to reverse engineer something
like this, it might be possible as a project.
There is
http://www.cs.berkeley.edu/~/fateman///macsyma//
I haven't looked at that recently, but as a SMALL excerpt from
the*online *documentation...
MATRICE(symbol, options, object) [MATRICE package] - creates a matrice
described by the options with its elements taken from the object and
attaches
the newly created matrice to the symbol. The object may be a matrix, a
two-dimensional array, the word ZEROES (in which case the matrice will be
filled with zeroes), the pseudofunction VALUE(k) (in which case the nonzero
portion of the matrice will be filled with the value specified by k), or
a list
of lists. In the last case, the (sub)lists will be used to fill the
secondary
arrays of the matrice directly so that this operation performs the
inverse of
ICE2LIST. (As a shorthand, a single unlistified expression will
abbreviate a
sublist of identical copies of this expression.) If the object is
omitted then
MATRICE will call ENTERMATRICE. The options consist of zero or more
descriptors providing the parameters of the matrice. If a descriptor is a
positive integer or a list containing a single positive integer then the
number
will be taken for the row and column dimension of the matrice. If a
descriptor
is a list containing two positive integers then the first integer will
be taken
to be the row dimension and the second the column dimension of the matrice.
(Note that if the object that is provided to MATRICE is a matrix or a
two-dimensional array then the OBJECT's dimensions will be used for the
matrice and so do not need to be explicitly specified.) A descriptor may
also indicate the mathematics of the matrice (REAL or COMPLEX - default is
REAL), the form of its elements (NUMERICAL, CRE [Canonical Rational
Expressions] or GENERAL_EXPRESSIONS [the default]) or its type (default is
GENERAL). The possible types that may be specified are given in the first
column of the following table:
GENERAL m x n
HERMITIAN n x n
+GENERAL_BANDED n x n*
+HERMITIAN_BANDED n x n
UPPER_TRIANGULAR m x n
LOWER_TRIANGULAR m x n
UPPER_HESSENBERG n x n
LOWER_HESSENBERG n x n
SYMMETRIC n x n REAL HERMITIAN
+BANDED n x n* GENERAL_BANDED
DIAGONAL m x n GENERAL_BANDED(1)
TRIDIAGONAL n x n GENERAL_BANDED(2)
HERMITIAN_TRIDIAGONAL n x n HERMITIAN_BANDED(2)
+SYMMETRIC_BANDED n x n REAL HERMITIAN_BANDED
SYMMETRIC_TRIDIAGONAL n x n REAL HERMITIAN_BANDED(2)
TRIANGULAR m x n UPPER_TRIANGULAR
HESSENBERG n x n UPPER_HESSENBERG
*May be m x n if the half-bandwidth is 1.
The first 8 entries are the basic matrice types while the remaining entries
designate certain special aliases whose equivalents are given in the third
column of the table. The second column displays the possible dimensions
each
matrice of the indicated type can take. Here, m and n are positive integers
where m need not be equal to n. The (banded) types preceeded by a plus (+)
can also be given in the form of pseudo-functions with the half-bandwidth as
their argument (for example, GENERAL_BANDED(3) indicates a type of
GENERAL_BANDED with a half-bandwidth of 3). If any necessary
descriptors are
omitted and cannot be defaulted then their values will be prompted for
interactively. MATRICE returns as its value the description of the newly
created matrice produced by MATRICEINFO.
On 5/1/2013 11:43 AM, Henry Baker wrote:
> Is there any way to simply indicate the 'shape' of A, so that A.transpose([0,0])=transpose([0,0]) ?
>
> ---
> Maxima 5.28.0-2 http://maxima.sourceforge.net
> using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (a.k.a. GCL)
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) x:transpose([0,0]);
> [ 0 ]
> (%o1) [ ]
> [ 0 ]
> (%i2) A.x;
> [ 0 ]
> (%o2) A . [ ]
> [ 0 ]
> (%i3)
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima