[SciPy-User] orthonormal polynomials (cont.)
josef.pktd at gmail.com
josef.pktd at gmail.com
Thu Jun 16 12:38:03 EDT 2011
On Thu, Jun 16, 2011 at 12:00 PM, Charles R Harris
<charlesr.harris at gmail.com> wrote:
>
>
> On Thu, Jun 16, 2011 at 9:29 AM, <josef.pktd at gmail.com> wrote:
>>
>> .......... <still working>
>>
>> example with Emerson recursion
>>
>> laguerre for weight function gamma pdf with shape=0.5 instead of shape=1
>>
>> >>> mnc = moments_gamma(np.arange(21), 0.5, 1)
>> >>> myp = orthonormalpoly_moments(mnc, 10, scale=1)
>> >>> innerprod = dop.inner_cont(myp, 0., 100, stats.gamma(0.5).pdf)[0]
>> >>> np.max(np.abs(innerprod - np.eye(innerprod.shape[0])))
>> 5.1360515840315202e-10
>> >>> for pi in myp: print pi.coeffs
>> ...
>> [ 1.]
>> [ 1.41421356 -0.70710678]
>> [ 0.81649658 -2.44948974 0.61237244]
>> [ 0.2981424 -2.23606798 3.35410197 -0.55901699]
>> [ 0.07968191 -1.1155467 4.18330013 -4.18330013 0.52291252]
>> [ 0.01679842 -0.37796447 2.64575131 -6.61437828 4.96078371 -0.49607837]
>> [ 2.92422976e-03 -9.64995819e-02 1.08562030e+00 -5.06622805e+00
>> 9.49917760e+00 -5.69950656e+00 4.74958880e-01]
>> [ 4.33516662e-04 -1.97250081e-02 3.25462634e-01 -2.44096975e+00
>> 8.54339413e+00 -1.28150912e+01 6.40754560e+00 -4.57681829e-01]
>> [ 5.59667604e-05 -3.35800562e-03 7.63946279e-02 -8.40340907e-01
>> 4.72691760e+00 -1.32353693e+01 1.65442116e+01 -7.09037640e+00
>> 4.43148525e-01]
>> [ 6.39881348e-06 -4.89509231e-04 1.46852769e-02 -2.22726700e-01
>> 1.83749528e+00 -8.26872874e+00 1.92937004e+01 -2.06718219e+01
>> 7.75193320e+00 -4.30662955e-01]
>>
>> I haven't had time to figure out QR yet.
>>
>
> One way to think of QR in this context is to think of the columns of the
> Vandermonde matrix V as the basis functions. Then
>
> QR = V
> Q = V*R^-1
>
> Since R and its inverse are upper triangular, the orthonormal columns of Q
> are expressed as linear combinations of the basis functions in the columns
> of V of degree <= the column index. For general numerical reasons I would
> use a Chebyshev basis rather than powers of x.
>
> I can't find a reference on the Emerson recursion. I'm guessing that it is
> for a power series basis and generates new columns on the fly as c_i =
> x*c_{i -1} so that the new column is orthogonal to all the columns c_j, j <
> i - 2. Anyway, that's what I would do if I wanted better numerical
> conditioning ;)
I pretty much implemented this after I discovered that they use
zero-based indexing and it didn't look too scary
J. C. W Rayner, O. Thas, and B. De Boeck, “A GENERALIZED EMERSON RECURRENCE
RELATION,” Australian & New Zealand Journal of Statistics 50, no. 3
(September 1, 2008): 235-240.
http://onlinelibrary.wiley.com/doi/10.1111/j.1467-842X.2008.00514.x/abstract
Before that, I tried your QR example for a while but I had two problems,
* the resulting polynomials are not orthogonal if I integrate, int
poly_i(x) * poly_j(x) dx
* I need orthogonality with respect to a weight function: int
poly_i(x) * poly_j(x) * w(x) dx == (i==j).astype(int)
The first I may not need anymore. emerson works for continuous functions.
The second I would like to figure out when I move to discrete
distribution, where I have sum instead of integral. (But after I
finish with the continuous distributions).
sum_{x in X} poly_i(x) * poly_j(x) * w(x) dx == (i==j).astype(int)
Is there a way to get weights into QR?
The Emerson recursion that I have only works with power series, so I
still don't know how to do it with any other basis functions.
Josef
>
> <snip>
>
> Chuck
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
More information about the SciPy-User
mailing list