Smarter every day: Fourier series

  • 6 Replies
  • 339 Views

0 Members and 1 Guest are viewing this topic.

Offline RedshiftRider

  • *
  • Global Moderator
  • *******
  • Dendritic Entity
  • Posts: 172
  • Dagomar Schreuder
    • Youtube
« on: December 10, 2018, 10:43:07 PM »

Offline RedshiftRider

  • *
  • Global Moderator
  • *******
  • Dendritic Entity
  • Posts: 172
  • Dagomar Schreuder
    • Youtube
« Reply #1 on: December 17, 2018, 09:04:27 PM »

I have to admit, while Destin's video was a great introduction I still had a many questions on it. Luckily 3blue1brown has made a more in-depth video on how the Fourier series works.

If I remember correctly, FTIR spectroscopy applies this principle for chemical analysis, I'll have a look into it.

Offline tavis

  • *
  • Fractal Fanatic
  • ***
  • Posts: 37
  • Bill Tavis
    • Mandelmap poster
« Reply #2 on: January 28, 2019, 07:00:58 PM »
I would love to see a Fourier series that traces the boundary of the Mandelbrot set with epicycles! Given the close relationship the set has with a circle, It totally seems reasonable that there would be a formulaic way of devising this series, but I have no idea of what that would be. Has anyone done any work in this area?  Seems like it could be a way to prove the local connectedness thing
Check out the Mandelmap poster

Offline RedshiftRider

  • *
  • Global Moderator
  • *******
  • Dendritic Entity
  • Posts: 172
  • Dagomar Schreuder
    • Youtube
« Reply #3 on: January 28, 2019, 08:35:47 PM »
That sounds really cool.

Offline Softology

  • *
  • Fractal Fanatic
  • ***
  • Posts: 38
« Reply #4 on: January 28, 2019, 09:53:43 PM »
I would love to see a Fourier series that traces the boundary of the Mandelbrot set with epicycles! Given the close relationship the set has with a circle, It totally seems reasonable that there would be a formulaic way of devising this series, but I have no idea of what that would be. Has anyone done any work in this area?  Seems like it could be a way to prove the local connectedness thing

See this coding train video for code on tracing (potentially any shape) using fourier series.

https://youtu.be/MY4luNgGfms

Offline claude

  • *
  • 3e
  • *****
  • Posts: 1063
    • mathr.co.uk
« Reply #5 on: January 28, 2019, 10:18:05 PM »
a better approach than tracing path numerically could be to analytically calculate Fourier series of inverse Boettcher map (Laurent series) applied to w = r exp(i theta) and take the limit as r -> 1 from above https://en.wikipedia.org/wiki/External_ray#Uniformization_2

edit I think it works out quite easily:
\[
\mathcal{F}_t(\Psi_{M}(r e^{i t}))(\omega) =r \delta(\omega + 1) - {\frac{1}{2}}\delta(\omega)+{\frac{1}{8r}}\delta(\omega-1)-{\frac{1}{4r^{2}}}\delta(\omega-2)+{\frac{15}{128r^{3}}}\delta(\omega - 3)+\ldots
 \]

edit2 see also https://www.mrob.com/pub/muency/laurentseries.html

Just tried it, converges rather slowly.
Haskell code using the data-memocombinators package:
Code: [Select]
import qualified Data.MemoCombinators as Memo

import Control.Monad (forM_)
import Data.Complex (Complex((:+)), cis)
import Data.List (intercalate)

-- https://www.mrob.com/pub/muency/laurentseries.html#coef

b :: Integer -> Rational
b = Memo.integral b'
  where
    b' 0 = -1/2
    b' n = -(w n (n + 1)) / fromInteger n

w :: Integer -> Integer -> Rational
w = Memo.memo2 Memo.integral Memo.integral w'
  where
    w' 0 _ = 0
    w' n m = a (m - 1) + w (n - 1) m + sum [ a j * w (n - 1) (m - j - 1) | j <- [0 .. m - 2] ]

a :: Integer -> Rational
a = Memo.integral a'
  where
    a' j = u 0 (j + 1)

u :: Integer -> Integer -> Rational
u = Memo.memo2 Memo.integral Memo.integral u'
  where
    u' n k
      | 2 ^ n - 1 == k = 1
      | 2 ^ n - 1 >  k = sum [ u (n - 1) j * u (n - 1) (k - j) | j <- [ 0 .. k ] ]
      | 2 ^ (n + 1) - 1 > k = 0
      | otherwise = (u (n + 1) k - sum [ u n j * u n (k - j)  | j  <- [ 1 .. k - 1 ] ]) / 2

psi :: Double -> [Double]
psi r = r : [ fromRational (b n) / r^n | n <- [(0 :: Integer) .. ] ]

point :: Int -> Double -> Double -> Complex Double
point n r t = sum [ fmap (p *) $ cis t ^^ m | (p, m) <- take n $ psi r `zip` [ 1, 0 .. ] ]

curve :: Int -> Int -> Double -> [Complex Double]
curve m n r = [ point n r (2 * pi * t) | i <- [ 0 .. m ], let t = fromIntegral i / fromIntegral m ]

plot :: [Complex Double] -> String
plot ps = unlines (map plot1 ps)
  where
    plot1 (x :+ y) = unwords (map show [x, y])

main :: IO ()
main = do
  forM_ [ 0 .. 9 ] $ \l -> do
  forM_ [ 1 .. 100 ] $ \n -> do
    let r = 1 + 0.5 ^ l
    writeFile (show l ++ "_" ++ show3 n ++ ".dat") (plot $ curve 1024 n r)

show3 :: Int -> String
show3 = reverse . take 3 . (++ "000") . reverse . show

edit there was a bug, code is fixed now...

image is with r = 1 + 0.5^9, 100 harmonics
« Last Edit: January 29, 2019, 12:04:40 AM by claude, Reason: bugfix, image »

Offline tavis

  • *
  • Fractal Fanatic
  • ***
  • Posts: 37
  • Bill Tavis
    • Mandelmap poster
« Reply #6 on: January 30, 2019, 11:21:41 PM »
Quote
a better approach than tracing path numerically could be to analytically calculate Fourier series of inverse Boettcher map
Yes! That's what I was talking about, really cool that you seem to have gotten something working. Now I just need to try to wrap my head around what a Laurent series is, thanks for the links to read!


clip
Fourier series in escape time fractals

Started by v on Fractal Mathematics And New Theories

0 Replies
186 Views
Last post December 19, 2018, 07:32:09 PM
by v
xx
Eclipse Series #3

Started by Holocene on Fractal Image Gallery

0 Replies
103 Views
Last post March 16, 2018, 12:38:59 AM
by Holocene
xx
How to Get More Than 3 Series Approximation Terms?

Started by Byte11 on Fractal Mathematics And New Theories

16 Replies
844 Views
Last post December 21, 2017, 09:09:44 AM
by knighty
xx
Bubble Tree Series #102

Started by Ventrella on Fractal Image Gallery

1 Replies
75 Views
Last post November 03, 2018, 06:25:44 AM
by 3DickUlus
xx
Bubble Tree Series #103

Started by Ventrella on Fractal Image Gallery

0 Replies
52 Views
Last post November 03, 2018, 06:30:03 AM
by Ventrella