Guest User

Untitled

a guest
Jan 29th, 2023
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.30 KB | None | 0 0
  1. import HCubature: hquadrature as integrate
  2. using SpecialFunctions, Plots
  3.  
  4. ωmin, ωmax = 1e-10, 1000; imsmax = 100;
  5. tgrid = range(-1, 1, length = 666)
  6.  
  7. fω(ω, a, b) = 1/(im*b*abs(ω)^a - ω)
  8.  
  9. function fs(s, a, b, sgnt)
  10.     a1 = sgnt > 0 ? 2 - a : a
  11.     s1 = s/abs(a - 1)
  12.     s2 = (1/2) * abs(a1) * s1
  13.     gammas = gamma(s) * (gamma(s1) * gamma(1 - s1)) / (gamma(s2) * gamma(1 - s2))
  14.     return - 2*π*im/abs(a - 1) * sign(a1) * b^(s/(a - 1)) * gammas
  15. end
  16.  
  17. function f(t, a, b)
  18.     fωt(ω) = exp(im*ω*t)*fω(ω, a, b)
  19.     valp, errp = integrate(fωt,  ωmin,  ωmax)
  20.     valm, errm = integrate(fωt, -ωmax, -ωmin)
  21.     return valp + valm
  22. end
  23.  
  24. function 🦊H(t, a, b)
  25.     c = abs(a - 1)/2
  26.     sgnt = sign(t)
  27.     fst(ims) = (s = c + ims*im; ds = im; 1/(2*π*im) * abs(t)^(-s) * fs(s, a, b, sgnt) * ds)
  28.     val, err = integrate(fst,  -imsmax,  imsmax)
  29.     return val - π*im*(a > 1)*sign(t)
  30. end
  31.  
  32. function makeplot(a, b)
  33.     fourier = [imag(f(t, a + 1e-6, b)) for t ∈ tgrid]
  34.     mellin = [imag(🦊H(t, a + 1e-6, b)) for t ∈ tgrid]
  35.     plot(tgrid, [fourier mellin],
  36.         label = ["original integral, a = $a, b = $b" "uglier integral, a = $a, b = $b"],
  37.         framestyle = :zerolines)
  38. end
  39.  
  40. animate_being = @animate for a ∈ -1:0.1:3 makeplot(a, 1) end
  41. gif(animate_being, fps = 10)
Advertisement
Add Comment
Please, Sign In to add comment