Re: Strange result in MMa 3.0
- To: mathgroup at smc.vnet.net
- Subject: [mg8178] Re: Strange result in MMa 3.0
- From: murray at math.umass.edu (Murray Eisenberg)
- Date: Mon, 18 Aug 1997 03:07:01 -0400
- Organization: University of Massachusetts, Amherst
- Sender: owner-wri-mathgroup at wolfram.com
Julian Stoev !!! Address is anti-spamed !!! (stoev at removespam.usa.net) wrote:
: I am used to think, that the definition of NullSpace is:
: NullSpace of linear operator A is a set N(A) defined by all elements x for
: which A.x=[0]
: But Mathematica 3.0 gives me this strange result:
: =========
: In[1]:= A = {{0, 1, 1, 2, -1}, {1, 2, 3, 4, -1},{2, 0, 2, 0, 2}}
: Out[1]= {{0, 1, 1, 2, -1}, {1, 2, 3, 4, -1},{2, 0, 2, 0, 2}}
: In[2]:= NullSpace[A]
: Out[2]= {{-1, 1, 0, 0, 1}, {0, -2, 0, 1, 0},{-1, -1, 1, 0, 0}}
: (*this is correct, but transposed and this makes problems later*)
: In[3]:=
: A . Transpose[NullSpace[A]]
: Out[3]=
: {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
: ===========================
: The problem is that in Mathematica A . transpose(nullspace(A))=[0].
: [snip]
: So I was wondering why Mathematica gives result for NullSpace transposed?
: Is the definition I am using for NullSpace wrong?
Mathematica rather consistently works with row vectors rather than
column vectors. For example, Eigenvectors also returns row vectors.
I cannot comment on the design reasons for that. Of course there's a
dissonance with what's commonly done in many math books, but think of
how much screen space vectors would take if they always were formed
into vertical columns.
Of course, there is really no such thing as a row vector or a column
vector in Mathematica -- just lists. A simple list of scalars has an
interpretation as a row vector and, of course, displays horizontally
by default.
A column vector is a matrix with one column, so to form it in
Mathematica you need a list of the form {{a}, {b}, {c}, ... }.
You can readily convert the output from NullSpace by the following:
tocol[vect_] := Map[List, vect]
(* that converts a single row vector into the form of a list of
1-element lists that, using MatrixForm upon it, will display as a
column vector *)
Map[tocol, NullSpace[A]]
The latter converts each of the (row)vectors in the result of
NullSpace into a column vector.
By the way, strictly speaking, the result from NullSpace is NOT the
null space, but rather a BASIS OF the null space!
--
Murray Eisenberg Internet: murray at math.umass.edu
Mathematics & Statistics Dept. Voice: 413-545-2859 (W)
University of Massachusetts 413-549-1020 (H)
Amherst, MA 01003 Fax: 413-545-1801