laplace() and tellsimpafter()



Thanks for reporting this problem!

It turns out that there are two issues here:

1) tellsimpafter attaches the simplification property to the *verb* laplace,
not the *noun* laplace (cf. noun and verb section of
manual<http://maxima.sourceforge.net/docs/manual/en/maxima_6.html#SEC31>;),
but the simplification needs to be on the noun.  It is unclear whether this
is a bug; it is conceivable that one would want different transformations
on the verb form and the noun form.

2) when the laplace function returns a result, it marks it as simplified
without giving the simplifier a chance to apply tellsimpafter rules.  This
is a bug, which should be corrected.

The workaround for the first problem is to explicitly define the
simplification on the noun form:

    tellsimpafter('laplace(T1(t),t,s),T1(s))

The workaround for the second problem is to resimplify the result of
laplace, using expand(...,0,0) -- this resimplifies the expression without
actually doing any expansions.

Putting it together:

(%i1) display2d:false;
(%o1) false
(%i2) tellsimpafter('laplace(T1(t),t,s),T1(s));
(%o2) [laplacerule1,false]
(%i3) laplace(T1(t),t,s);
(%o3) 'laplace(T1(t),t,s)
(%i4) expand(%,0,0);
(%o4) T1(s)

Does this solve your problem?

             -s

On Sun, Nov 25, 2012 at 11:07 AM, Michael Roth <mroth at nessie.de> wrote:

>  Hello,
>
> first, thank you for all your effort to make Maxima such a nice open
> source project!
>
> Now, for my question: I'm playing a little bit with laplace in Maxima and
> have a small problem:
>
>     (%i1) declare(T1, linear);
>     (%o1)                                done
>
>     (%i2) laplace(T1(2*t+3), t, s);
>                                                     3 T1(1)
>     (%o2)                  2 laplace(T1(t), t, s) + -------
>                                                        s
>
> Now I would like to have T1(s) instead laplace(T1(t), t, s):
>
>     (%i3) %, laplace(T1(t), t, s) = T1(s);
>                                              3 T1(1)
>     (%o3)                          2 T1(s) + -------
>                                                 s
>
> This worked fine. But now I try to make this simplification self-acting:
>
>     (%i4) tellsimpafter(laplace(T1(t), t, s), T1(s));
>     (%o4)                        [laplacerule1, false]
>
>     (%i5) laplace(T1(2*t+3), t, s);
>                                                     3 T1(1)
>     (%o5)                  2 laplace(T1(t), t, s) + -------
>                                                        s
>
> But this doesn't work. Why? How can I achieve that laplace(T1(t), t, s)
> gets automatically rewritten to T1(s)?
>
> Thanks,
>
> Michael Roth
>
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>
>