Logo by Sockratease - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. April 26, 2024, 08:30:55 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: series acceleration  (Read 650 times)
0 Members and 1 Guest are viewing this topic.
quaz0r
Fractal Molossus
**
Posts: 652



« on: October 17, 2015, 12:18:30 PM »

im not sure what exact methodologies you mandelbrot guys are using with your handling of series approximation, but lately ive decided that i am rather dissatisfied with my own experience with it.  i found the mandelmachine thread where he mentions checking terms against each other and bailing when a term grows too large, and that is the general idea of anything i recall reading on the matter on these forums.  ive tried a few variations on this, all with similar results.  plenty of times it works out rather well and other times it leaves you holding a bigger bag of iterations to burn through than you would like, with respect to what actually ends up being the lowest iteration for a given location.

i decided to experiment with series acceleration with the hope that it could help improve matters, and indeed it seems to be the magic bullet i was hoping it would be.  my test for when to bail on series approximation now consists of checking for when the series approximation starts to deviate from the result of running it through the Levin u-transform available in the gnu scientific library.  so far in my tests this is taking me right up to the event horizon of what will end up being the lowest iteration, even in locations that used to cause the other methods to bail on the series approximation way sooner, but it also does not seem to be going too far so as to cause glitchy artifacts.  it seems to be just right, across the board, which i find to be rather exciting!  maybe you guys were already doing it better than i was doing it, but this is turning out to be a huge improvement for me at least.
Logged
mclarekin
Fractal Senior
******
Posts: 1739



« Reply #1 on: October 18, 2015, 03:24:24 AM »

 afro afro afro
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #2 on: December 18, 2015, 08:26:27 PM »

rather exciting!

cool stuff!  are you using the accelerated series to initialize points?  or just for stopping condition?  how are you choosing thresholds for stopping?  Need to read up more on the u-transform, any pages/papers you recommend?
Logged
skychurch
Alien
***
Posts: 22



« Reply #3 on: August 09, 2016, 02:33:14 AM »

Are you still running with this Quazor? 'Cos this would be the paradigm to follow. If it's still good then I will need to implement it.
Since no replies from the established publishers then I can only assume they're relying on the glitch fix stage.

regards skychurch.  smiley
Logged
quaz0r
Fractal Molossus
**
Posts: 652



« Reply #4 on: August 09, 2016, 03:55:51 AM »

oops, i never noticed i got any replies to this.  well, it seemed great at the time, but after a while it seemed to be taking the series approximation too far, resulting in some glitchy locations, so i ended up reverting to the old way.  though the rest of my code wasnt as solid as it is now, so it might be worth another look to make sure.

Quote
are you using the accelerated series to initialize points?  or just for stopping condition?  how are you choosing thresholds for stopping?

when i first wondered if series acceleration could be useful at all, i imagined using it to make the approximation itself more accurate, though in my tests it seemed to not change the value at all.  given that it wasnt having any effect on the value, i decided to try using it as a stop condition, simply stopping when there was any difference between the series approximation and the accelerated approximation.  this is where my experimenting stopped.  this was getting me very close to the min iteration each time but eventually it seemed to be taking me too far sometimes (i think).  though like i say i should give it another try now that the rest of my code is pretty solid and glitch-free; my program was still less than perfect at the time.  also you guys are the math professors not me, maybe there is some other way of doing things that would work better.  i just like to screw around and try different things and hope that i hit on something once in a while.   smiley

some further thoughts:

im sure there has to be some more direct, less rube-goldberg way of measuring the error, such that it gets you as far as you can go but also does not bail prematurely.  knighty posted some math to this effect in one of the other perturbation threads somewhat recently, though it sounded like the consensus was that it would both be computationally expensive and result in bailing prematurely.  so it seems this is still an open problem.
« Last Edit: August 09, 2016, 06:40:40 PM by quaz0r » Logged
quaz0r
Fractal Molossus
**
Posts: 652



« Reply #5 on: August 09, 2016, 06:53:57 PM »

ok, so it turns out, rather unsurprisingly, that my memory of my screwing around with this stuff a year ago was no good, and my program was no good back then either, so my previous post last night about what i thought i was remembering was also no good.

my previous check was just what i gleaned from the discussion on the forums here, checking for when the last term in the series grows larger by a few orders of magnitude than any of the other terms.  maybe that is an incomplete or otherwise flawed solution, and maybe you guys did it better or more complete than how i did it, i dont know.  i reimplemented the acceleration check, and it looks very promising indeed.  similar to the other method, i check for when the accelerated sum differs from the unaccelerated sum by a few orders of magnitude as the bail condition.  in my bit of testing this morning, when testing the other method with a setting that causes it to go far enough that it starts producing some questionable results, the method of checking the accelerated sum is able to go substantially farther than that, but with what appears to be correct results.  this indicates to me that the other method or at least my implementation of it is flawed / incomplete / unreliable, sometimes stopping in time and sometimes going too far, whereas the method of checking the accelerated sum looks to be more consistent.  more testing is necessary, but it looks promising and i am kind of hopeful about this again.  im glad you guys resurrected this post  smiley

...i also wonder again if there could be any benefit in actually utilizing the accelerated sum to initialize points.  should test that also.  in my mind im not sure if the result should actually be a better value, or the opposite, a magnification of the error.

another thing, if one was to decide to call this good and roll with it, i guess you would need to strip the acceleration routine out of libgsl and modify it (or write your own routine) so that it can use more than just doubles, like our extended-exponent types. (groan)   well, looking at the gsl code, its only a few pages long, so it shouldnt be too big a deal.
« Last Edit: August 09, 2016, 09:32:36 PM by quaz0r » Logged
skychurch
Alien
***
Posts: 22



« Reply #6 on: August 09, 2016, 09:11:43 PM »

Good work!  A Beer Cup
Logged
quaz0r
Fractal Molossus
**
Posts: 652



« Reply #7 on: August 09, 2016, 09:36:47 PM »

thanks  smiley

Quote from: me
i check for when the accelerated sum differs from the unaccelerated sum by a few orders of magnitude as the bail condition.

i said that wrong.  what im currently doing is checking if the larger sum divided by the smaller sum is greater than bailCondition, setting bailCondition to something like 1.001.  so its when the accelerated sum starts to diverge from the unaccelerated sum past a certain number of mantissa digits?  or however you would best say it
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #8 on: August 09, 2016, 09:40:17 PM »

however you would best say it

I'd say it was something like "relative error exceeds a threshold".

Thanks for the additional infomration!  I might try it out at some point.  If I do, I'll report back on this thread.
Logged
Pages: [1]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
More 6d images, flower series and Apocalypse series Images Showcase (Rate My Fractal) M Benesi 0 1851 Last post September 17, 2010, 05:46:53 AM
by M Benesi
A Series of Tubes Mandelbulb3D Gallery Don Whitaker 0 593 Last post April 05, 2012, 06:47:41 AM
by Don Whitaker
Infinite Series I Fractal Science Kit Gallery Ross Hilbert 0 467 Last post June 24, 2012, 05:42:12 PM
by Ross Hilbert
Series approximation Images Showcase (Rate My Fractal) Kalles Fraktaler 0 2142 Last post July 01, 2013, 08:40:30 AM
by Kalles Fraktaler
series approximation Mandel Machine quaz0r 1 2189 Last post July 29, 2016, 01:49:25 AM
by skychurch

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.383 seconds with 24 queries. (Pretty URLs adds 0.036s, 2q)