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
>>
>> [image: erf^(-1)(erf(x))][image: =][image: x,]
>> (2)
>>
>> with the identity holding for [image: x in R]
>>
>> 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.