From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Anyone have an inverse erf function VI?

I am looking to convert from the area under the normal (Gaussian) curve from -Z to +Z to obtain the value of Z. This is the inverse of the erf function, which is available in LabVIEW (except base package).

The only thoughts I have to solve this is either:
(1) interpolating a set of data obtained from use of the erf function, or
(2) doing a binary search / goal seek using the erf function until satisfied with the precision.
0 Kudos
Message 1 of 9
(4,401 Views)
I scratched my head and searched the internet for a few hours. I cannot think of a better solution that the two you posted. It looks like you are forced into the classic tradeoff of time or space.

The problem is that the error function (erf) is a "Special Function" which means that its derivative cannot be expressed with more elementary functions. Thus, there is no way to find the inverse by solving for the variable. This leaves us with numerical approximation methods.
0 Kudos
Message 2 of 9
(4,401 Views)
Thanks for your response, and your effort!
0 Kudos
Message 3 of 9
(4,401 Views)

See attached for a spin-off from altenbach's contribution here:

 

http://forums.ni.com/ni/board/message?board.id=170&requireLogin=False&thread.id=173012


Certified LabVIEW Architect
TestScript: Free Python/LabVIEW Connector

One global to rule them all,
One double-click to find them,
One interface to bring them all
and in the panel bind them.
0 Kudos
Message 4 of 9
(4,056 Views)

I've found the link to the erfinv function done in Fortran (from a Matlab file) and converted it in Labview.

The link is http://fnapcf.fnal.gov/~ron/p/matlab/v2006a/toolbox/matlab/specfun/erfcore.F

 

My own vi follows:

 

 

 

0 Kudos
Message 5 of 9
(3,961 Views)
Ok, here's the optimization of my last vi.  I also added the precision increase (from Newton's correction and Halley's step).  To do the erfcinv, you just need to call the erfinv since erfcinv(x)=erfinv(1-x).
0 Kudos
Message 6 of 9
(3,943 Views)

Hi,

 

Can you please help me realize the erf_inv VI in labview communication design please

 

Thanks

0 Kudos
Message 7 of 9
(2,953 Views)

emnajaoua wrote: 

Can you please help me realize the erf_inv VI in labview communication design please

 


You keep posting in the wrong forum. Almost nobody here will be able to open *.gvi files.

 

If you also have LabVIEW, you can look inside the inverse error function (it is plain LabVIEW code!) and duplicate it to your code. Long ago I also made a version that uses Newton-Raphson to invert the error function, have a look there too. It's just math! 😄

 

 

0 Kudos
Message 8 of 9
(2,933 Views)

Hi,

 

I have been trying to copy the math modules from the VI that you have posted there to another VI in labview communications design but as I said before there is a problem in implementing the "erf" function in the C node.I didn't resolve it so far.

Here you can find the VI and the GVI that I want to make.

 

I really need help!

 

Download All
0 Kudos
Message 9 of 9
(2,907 Views)