Message Boards Message Boards


Interpolate the following implicit function?

Posted 7 months ago
5 Replies
1 Total Likes

Hi, I have a problem with solve. I need to define this function b of two variables, which is implicitly defined. I need it later to enter it into some other really nasty equations, which then again have to be solved numerically. So I wanted to define a grind of x and ss and then use an interpolation to get a smooth function version of b. However, I cannot even get a solution at a single point. (Maple does that without problems, so it shouldn't be a mathematical problem, but more of my stupidity). Below find the code an error text. If I use "NSolve" I even get no output. Any ideas?



    b[x_, ss_] :=  Solve[b == x - ss*Quantile[NormalDistribution, b], b, Reals]


Solve::inex: Solve was unable to solve the system with inexact coefficients or the system obtained by direct rationalization of inexact numbers present in the system. Since many of the methods used by Solve require exact input, providing Solve with an exact version of the system may help.
5 Replies

Last my correct answer don't work for you ?

Solve can't solve transcentental equation and is a mathematical problem.

Maple gave you solution by RootOf function.It is eqivalent to Mathematica Root,but in MMA works only for polynomial equation. In Maple works for all equation. See in Maple Online Help.

enter image description here

Posted 7 months ago

Dear Mariusz, The first answer did not work, as I wrote. Unfortunately, I don't know why. I didn't manage to transform the second one to a function definition, so that I can call it in other functions (including again NSolve or FindRoot and Integrals, so I need it quite often) later on. Best, Christian

I checked my code on Mathematica 10.2 and 11.3 and works fine.

In Mathematica help says: "NSolve deals primarily with linear and polynomial equations".

If I am not wrong, the equation

b == x - ss*InverseCDF[NormalDistribution[0, 1], b][[1]]

should be equivalent to

2 b == Erfc[(b - x)/(Sqrt[2] ss)]

and this one Mathematica can do:

b[x_, ss_] := 
 Solve[2 b == Erfc[(b - x)/(Sqrt[2] ss)] && 0 <= b <= 1, b, Reals]
b[3/10, 1/10]
Posted 7 months ago

Awesome! Thanks a lot.

Question to the developers: Why can't the system do this automatically??

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract