comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Fun with Int_tabulated.pro
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Fun with Int_tabulated.pro [message #68546 is a reply to message #68497] Tue, 03 November 2009 16:18 Go to previous message
Paul Van Delst[1] is currently offline  Paul Van Delst[1]
Messages: 1157
Registered: April 2002
Senior Member
Hello,

I've been struggling with int_tabulated recently but for a different reason: it always
performs spline interpolation. If you are integrating high-order Gaussian-like functions
with an insufficient point density (e.g. some satellite sensor measured spectral response
functions), it will always produce terrible results due to Gibbs-type phenomena. In
general that's not unexpected, but a bugger of a problem to track down in automated
day-to-day processing.

I'm writing my own integrator to allow for different interpolation schemes. It handles the
problem you're having too by simply copying the input to temporaries, and then doing all
the sorting/uniq'ing/etc.

Anyway.... apologies for hijacking the thread. I just wanted to mini-vent. :o)

cheers,

paulv

wlandsman wrote:
> I ran into a couple of gotchas with int_tabulated.pro this
> morning, It performs numerical integration for the simple case:
>
> IDL> x = findgen(5)
> IDL> y = x^2
> IDL> print,int_tabulated(x,y)
> 21.3333
>
> But if one has flipped both vectors (say while converting wavelength
> to frequency), then -- even though a plot of the two vectors looks
> exactly the same -- int_tabulated gives a different answer.
>
> IDL> x = reverse(x) & y = reverse(y)
> IDL> print,int_tabulated(x,y)
> 42.3619
>
> A closer look at the int_tabulated documentation tells us that if X if
> not monotonic increasing, then one needs to set the /SORT keyword.
> So now we follow the documentation:
>
> IDL> print,int_tabulated(x,y,/sort)
> 21.3333
>
> and get the right answer again. But as the documentation also "sort"
> of warns
> you, setting the /SORT keyword reorders the input X and Y variables.
> This is
> probably not a problem unless one has modified the Y vector on the fly
> by
> some factor f
>
> f = findgen(5) + 0.5
> print,int_tabulated(x, y*f,/sort)
>
> Upon output, the X vector has been sorted, but the Y vector has not,
> since it
> was passed as part of a temporary variable y*f. So one has lost
> the one to
> one correspondence between X and Y, screwing up all subsequent
> processing.
>
> --Wayne
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: how to tell if run-time IDL app is already running?
Next Topic: Re: Using contour in postscripts produces a "stripe" effect? - solved

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sun Oct 12 05:33:47 PDT 2025

Total time taken to generate the page: 1.44196 seconds