# Obtain function that models strange oscillating data points

I've collected some interesting data from a fairly complex Python program I've written and I'm curious to figure out the mathematics behind it; or, at least, the empirical mathematics. Analyzing the program itself is far beyond my skills, so I'm wondering if there's a specific technique that may be helpful for fitting a curve to the observed data. The plot essentially looks like this (both X and Y are discrete, and ignore the sudden truncation at the end (x should continue indefinitely)):

So it kind of looks like the non-negative part of a sine wave whose period increases as $x$ does, and whose amplitude is decreasing. What techniques do you know to fit a function to data like this? If you know these techniques, can you apply it to this data? I will provide it in CSV format here for those who are interested:

• The pattern is clear: it is close to a periodic symmetric triangular wave as a function of $\log_3(X)$: that is, it repeats every time you triple the value of $X.$ (The response is remarkably homoscedastic, despite the appearances.) That should give you some clues concerning what aspect(s) of your program are determining this behavior. – whuber Mar 23 '18 at 14:34