RE: Change of Basis function

• To: mathgroup at smc.vnet.net
• Subject: [mg69005] RE: [mg68949] Change of Basis function
• From: "David Park" <djmp at earthlink.net>
• Date: Sat, 26 Aug 2006 02:04:51 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```David,

How about...

vectorComponents[vec_, basis : {_Symbol, _Symbol, _Symbol}] :=
Coefficient[vec, basis]
vectorComponents[vec : {_, _, _},
basis_?MatrixQ /; Dimensions[basis] == {3, 3}] :=
Module[{a, b, c, eqns},
eqns = Thread[vec == {a, b, c}.basis];
{a, b, c} /. First@Solve[eqns, {a, b, c}]
]

vectorComponents[{1, 2, 3}, {{1, 2, 0}, {0, 1, 0}, {0, 0, 1}}]
{1, 0, 3}

vectorComponents[f x1 - b x2 + x3 - x2, {x1, x2, x3}]
{f, -1 - b, 1}

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/

From: David Boily [mailto:dsboily at fastmail.ca]
To: mathgroup at smc.vnet.net

I would like to know if there is a function capable of giving as output
the representation of a vector in a given basis. For example:

FunctionX[{1,2,3}, {{1,2,0},{0,1,0},{0,0,1}}]

(where the first argument is the vector and the second the basis)

would yield

{1,0,3}

and

FunctionX[f x1 - b x2 + x3 - x2, {x1,x2,x3}]

would yield

{f, -b-1, 1}

I'm more interested in the second case, obviously, because the first one
can be achieved with a simple matrix multiplication.

David Boily
Center for Intelligent Machines
Mcgill University

```

• Prev by Date: Re: Symmetric polynomials
• Next by Date: Re: Symmetric polynomials
• Previous by thread: Re: Change of Basis function
• Next by thread: path along equi-contours