Defining N for a new entity
- To: mathgroup at smc.vnet.net
- Subject: [mg66719] Defining N for a new entity
- From: Giuseppe Bilotta <bilotta78 at hotpop.com>
- Date: Sat, 27 May 2006 21:03:28 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hello,
I'm try to build a Mathematica toolbox to work with Stolfi's affine
expression. Until now, I've had no problems: I use AffineExpression[c,
{{i, xi}, ...}] (where c and xi are Reals and the i are Integers) to
represent c + \sum xi e_i and I can define addition, multiplication,
quotient and everything else without any problems.
Recently, I've begun using these entities in more complex expression,
and in particular as elements of matrices to be fed to LinearSolve.
In the specific context, LinearSolve seems to apply N to all of its
arguments, but as a side-effect of this the indices (i in the
expressions above) are turned into Reals, so that for example
AffineExpression[ .5, {{1, .2},{2, .1}}]
comes out as
AffineExpression[ .5, {{1., .2}, {2., .1}}]
This has aesthetical and functional disadvantages (my codes also
exploits the fact that the indices are integer), so I have to apply
Rationalize or some other such function to re-convert the indices into
Integers.
So I was looking for a way to tell Mathematica that applying N to an
AffineExpression should only actually apply it to c and xi, something
like
N[AffineExpression[c_, dev_]] :=
AffineExpression[N[c], MapAt[N,#,{2}]&/@ dev]
but if I actually do this and then call
AffineExpression[1, {{1, 1}}]
N[%]
the Mathematica kernel (5.2.0.0) dies without any message.
Does anybody have an idea of what could the reason be? And what could
I do as a workaround?
--
Giuseppe "Oblomov" Bilotta
Axiom I of the Giuseppe Bilotta
theory of IT:
Anything is better than MS
- Follow-Ups:
- Re: Defining N for a new entity
- From: "Carl K. Woll" <carlw@wolfram.com>
- Re: Defining N for a new entity