Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I observed that there is no Q-function representation in Mathematica. The definition of Q-Function is:

\begin{align} Q(x) &= \frac{1}{\sqrt{2\pi}} \int_x^\infty e^{-\frac{u^2}{2}}du \\ &=\frac{1}{2} \mathrm{erfc}(\frac{x}{\sqrt{2}}) \end{align}

a nother representation of Q-function is: \begin{align} Q(x) = \frac{1}{\pi} \int_0^{\frac{\pi}{2}} e^{\left(\frac{-x^2}{2\sin^2{\phi}} \right)}d\phi \end{align}

there is only Complementary Error Function representation Erfc.

$\mathrm{erfc}(x) = \frac{2}{\sqrt{\pi}} \int_{x}^{\infty} \exp(-t^2) dt$

Is there any possiblity that define a new function in Mathematica? so that it will be a permanent function.

Note: In statistics, the Q-function is the tail probability of the standard normal distribution. In other words, Q(x) is the probability that a normal (Gaussian) random variable will obtain a value larger than x standard deviations above the mean.

share|improve this question
2  
How about: q[x_] := Erfc[x/Sqrt[2]]/2; –  bill s Oct 17 '13 at 15:05
5  
or even q[x_] := SurvivalFunction[NormalDistribution[0,1],x] –  chuy Oct 17 '13 at 17:42
add comment

2 Answers

up vote 4 down vote accepted

There are two parts to your question: how to define the function and how to make it persist between sessions. I suggested

q[x_] := Erfc[x/Sqrt[2]]/2;

though chuy's suggestion looks fine too.To make it persist, you can place this function definition in an initialization cell, and then this will run whenever the notebook is opened. You can find instructions for this here and other information here about running the cell on startup.

share|improve this answer
    
is it possible in the future versions in Mathematica contain this function? I mean can you tell them or suggest this to them? –  barznjy Oct 17 '13 at 23:40
1  
I guess you might want to ask Wolfram about that. On the support page wolfram.com/support/contact/email you can email them about bugs or with suggestions. –  bill s Oct 18 '13 at 0:06
add comment

If this the function that you use daily, you can put it into you initialization file. Use the command in a notebook:

$UserBasedDirectory

Usually there is a ./Kernel/init.m file. It is evaluated when Mathematica kernel starts. You can put these line in it:

q::usage="q[x] is my Q-function. You cannot modify it, aha!"
q[x_:0] := Erfc[x/Sqrt[2]]/2
Protect[q]

Then you will have several good features:

better def

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.