As it turns out, we can generalise this dependence to arbitrary sets of random variables with a fairly simple observation. ]]>

where

So far we have derived and implemented the probability density function and the characteristic function of the multivariate normal distribution that governs such random vectors but have yet to do the same for its cumulative distribution function since it's a rather more difficult task and thus requires a dedicated treatment, which we shall have in this post. ]]>

Specifically, given a

has linearly dependent normally distributed elements, a mean vector of

where

We got as far as deducing the characteristic function and the probability density function of the multivariate normal distribution, leaving its cumulative distribution function and its complement aside until we'd implemented both them and the random variable itself, which we shall do in this post. ]]>

Whilst it demonstrated that we can find multivariate versions of distribution functions such as the probability density function, the cumulative distribution function and the characteristic function, the uniform distribution is fairly trivial and so, for a more interesting example, this time we shall look at generalising the normal distribution to multiple dimensions. ]]>

We have also seen how quasi random sequences fill areas more evenly than pseudo random sequences and so you might be asking yourself whether we could do better by using the former rather than the latter to approximate integrals.

Clever you! ]]>

When solving integrals of multivariate functions mathematically we typically integrate over each argument in turn, treating the others as constants as we do so. At each step we remove one argument from the problem and so must eventually run out of them, at which point we will have solved it.

It is consequently extremely tempting to approximate multivariate integrals by recursively applying univariate numerical integration algorithms to each argument in turn. ]]>

Specifically, if we join two points

In regions where a function is rapidly changing we need a lot of trapeziums to accurately approximate its integral. If we restrict ourselves to trapeziums of equal width, as we have done so far, this means that we might spend far too much effort putting trapeziums in regions where a function changes slowly if it also has regions where it changes quickly.

The obvious solution to this is, of course, to use trapeziums of

Now it will occasionally be the case that we should prefer to use quasi random sequences in place of pseudo random number generators and to do so we shall need to present an interface to the former that exactly matches that of the latter. ]]>

At the risk of being tedious, there are two more sequences that I'd like to cover before we move on to a new topic. ]]>

Whilst the implementations of arithmetic and geometric sequences and their associated series were somewhat subtle, they're not particularly interesting from a mathematical perspective and so this time we'll take a look at something a little more complicated. ]]>

Now this behaviour is somewhat atypical, in the sense that most sequences that we bother to name have values that are

We saw that despite looking completely different to the congruential generators that we covered earlier, they are surprisingly similar, not least in that we must be extremely careful when setting them up if we want to generate sequences of bits that take as long as possible to enter into a cycle.

Finally, we noted that it was possible to generalise LFSRs so that they generate numbers rather than bits, which we shall do in this post. ]]>