I think this might be because "the maxima used by the calculus package is
different than the one in the interactive interpreter." That's from
sage.calculus.calculus?
Try the following:
sage: from sage.calculus.calculus import maxima as sm
sage: sm.eval('''matchdeclare (xx, lambda ([e], featurep (e, real)));
tellsimpafter (inverse_erf (erf (xx)), xx);
matchdeclare (yy, lambda ([e], -1 < e and e < 1));
tellsimpafter (erf (inverse_erf (yy)), yy);''');
sage: solve(erf(x) == erf(y), x)
[x == inverse_erf(erf(y))]
sage: assume(x, y, 'real')
sage: solve(erf(x) == erf(y), x)
[x == y]
-Ivan
On Dec 30, 2013, at 10:08 AM, Buck Golemon <[email protected]> wrote:
> So I've succeeded in telling maxima how to simplify this, but it doesn't
> translate through to sage:
>
> sage: print maxima.eval('''
>
> declare([x, y], real)
>
> solve(erf(x) = erf(y), x)
>
> ''')
> done
> [x=inverse_erf(erf(y))]
>
> sage: print maxima.eval('''
>
> matchdeclare (xx, lambda ([e], featurep (e, real)));
> tellsimpafter (inverse_erf (erf (xx)), xx);
> matchdeclare (yy, lambda ([e], -1 < e and e < 1));
> tellsimpafter (erf (inverse_erf (yy)), yy);
> ''')
> done
> [inverse_erfrule1,?simp\-inverse\-erf]
> done
> [erfrule1,?simp\-erf]
>
> sage: print maxima.eval('''
> solve(erf(x) = erf(y), x)
> ''')
> [x=y]
>
> sage: var('x y')
> (x, y)
>
> sage: assume(x, y, 'real')
> sage: assumptions()
> [x is real, y is real]
>
> sage: solve(erf(x) == erf(y), x)
> [x == inverse_erf(erf(y))]
>
>
>
> On Sun, Dec 29, 2013 at 9:32 AM, JamesHDavenport <[email protected]>
> wrote:
> In fact you don't really need MathWorld: erf is continuous monotone
> R->(-1,1), so must have an inverse function (-1,1)->R.
> How you tell Sage this needs a Sage expert.
>
> On Saturday, 28 December 2013 19:46:49 UTC, Buck Golemon wrote:
> I've found here:
> http://mathworld.wolfram.com/InverseErf.html
>
> (2)
> with the identity holding for
>
>
> Is this a bit of information that can be added (by me?) to sage?
>
>
> On Saturday, December 28, 2013 11:32:02 AM UTC-8, Buck Golemon wrote:
> Yes, I can, but it doesn't have the intended (or any) effect:
>
> sage: assume(x, 'real')
> sage: assume(y, 'real')
> sage: assumptions()
> [x is real, y is real]
> sage: solve(erf(x) == erf(y), x)
> [x == inverse_erf(erf(y))]
>
>
> On Saturday, December 28, 2013 11:27:09 AM UTC-8, Buck Golemon wrote:
> Thanks.
> If I understand you, the problems lie in the complex domain, where I was only
> thinking of the real numbers.
>
> Can I not do something to the effect of assume(x, 'real') ?
>
> On Saturday, December 28, 2013 10:07:41 AM UTC-8, JamesHDavenport wrote:
> erf, as a function C->C, is not 1:1 (see 7.13(i) of DLMF), so this
> "simplification" would be incorrect.
> I do not know how to tell Sage that you want real-valued functions/variables,
> when of course it would be correct to do the simplification.
>
> On Friday, 27 December 2013 22:40:40 UTC, Buck Golemon wrote:
> 1) Sage seems unable to reduce `erf(x) == erf(y)` to `x == y`. How can I help
> this along?
> solve(erf(x) == erf(y), x)[0].simplify_full()
>
> Actual output: x == inverse_erf(erf(y))
> Expected output: x == y
>
> I had expected that sage would trivially reduce `inverse_erf(erf(y))` to `y`.
>
> 2) This output references 'inverse_erf', which doesn't seem to be importable
> t from anywhere in sage. Am I correct?
>
> ---
>
> My concrete problem is re-deriving the formula for the normal-distribution
> cdf. I get a good solution from sage, but fail in showing that it's
> equivalent to a known solution because:
>
> var('x sigma mu')
> assume(sigma > 0)
> eq3 = (-erf((sqrt(2)*mu - sqrt(2)*x)/(2*sigma)) == -erf((sqrt(2)*(mu -
> x))/(2*sigma)))
> bool(eq3)
>
> Actual output: False
> Expected output: True
>
>
> However this quite similar formula works fine:
>
> eq3 = (-erf(sqrt(2)*mu - sqrt(2)*x) == -erf(sqrt(2)*(mu - x)))
> bool(eq3)
>
> Output: True
>
> ---
> Include:
> Platform (CPU) -- x86_64
> Operating System -- Ubuntu 13.10
> Exact version of Sage (command: "version()") -- 'Sage Version 5.13, Release
> Date: 2013-12-15'
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> You received this message because you are subscribed to a topic in the Google
> Groups "sage-support" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sage-support/OlHZAPXeWdQ/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sage-support.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sage-support.
> For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/groups/opt_out.