How to solve equation using math symbolic and get erfinv as output?

1 view (last 30 days)
Hi,
When I type this code:
syms x y
solve(erf(x) - y,x)
I get the following
ans =
[ empty sym ]
When it's clear that the answer is x = erfinv(y), if we assume that y belongs to (0,1).
Is there some way in which I can get erfinv(y)as an answer? I guess the problem is that I didn't specify that y is between 0 and 1. If so, how can I do that?
Thanks,
Caio

Accepted Answer

Alexander
Alexander on 20 Apr 2012
Hi Caio,
If you have MATLAB R2012a you can simpliy use the assume command to say that y belongs to (0, 1):
assume(0<y<1)
>> solve(erf(x) - y,x)
ans =
erfinv(y)
If you have an older version, you need to use evalin:
evalin(symengine, 'assume(0<y<1)')
You can also try to use the option IgnoreAnalyticConstraints. With this option, the symbolic engine is a little less restrictive when doing calculations:
syms y clear
solve(erf(x) - y,x, 'IgnoreAnalyticConstraints', true)
ans =
erfinv(y)

More Answers (1)

Caio
Caio on 20 Apr 2012
Thanks! It keeps not working here, but I'll have a closer on this. If it worked on yours matlab it should work on mine. I have the R2011a.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!