On Mon, May 07, 2007 at 10:26:36PM -0600, Robert Dodier wrote:
> On 5/7/07, Daniel Lakeland <dlakelan at street-artists.org> wrote:
>
> > matchdeclare(aa,atom,bb,atom,cc,atom);
> > tellsimpafter(laplace(signum(aa-bb),aa,cc),exp(-bb*cc)/cc);
>
> OK, here is a partial solution. A complete solution isn't possible
> due to strangeness in the pattern-matching code; sorry about that.
>
> matchdeclare ([aa, cc], symbolp, bb, lambda ([e], not symbolp(e)));
> laplace (signum (aa + bb), aa, cc);
> tellsimpafter (''%, exp (bb * cc) / cc);
>
> laplace (signum (x - a), x, s);
> => laplace(signum(x - a), x, s)
> ''%;
> => %e^-(a*s)/s
>
> It turns out this formulation works but there are lots of almost-
> identical ones which don't.
... Thanks Robert. I'll take a look at this when I've gotten over my
current upper respiratory infection :-( In the mean time, to set the
record straight, my original mathematics was wrong as well.
laplace(unit_step(x-a),x,s) => exp(-a*s)/s
laplace(signum(x-a),x,s) => something else which I'm too sick at the
moment to figure out.
Defining the unit_step (heaviside) function in terms of signum has
potential issues as well, since (1+signum(x-a))/2 = 1/2 at x=a which
makes no difference unless you multiply by a delta function at x=a
These are all mathematical questions which are independent of the
pattern matching issues, I just didn't want to let the math error slip
by undedected in the email archive.
--
Daniel Lakeland
dlakelan at street-artists.org
http://www.street-artists.org/~dlakelan