#!/bin/lua require 'utils' require 'mathlib' function comp(...) local s = 'return function (x,y,z) return %s end' return assert(loadstring(s:format(...)))() end local x1 = 0 local x2 = pi local p = comp(arg[1] or '-0.5')() local defh = (x2 - x1) / 1024 local h = comp(arg[4] or defh)() for x = x1, x2, h do y = 1 / (p^2 + 1 + 2*p*cos(x)) if p < 0 then g = y * (p + 1)^2 else g = y * (p - 1)^2 end db = 10*log(g)/log(10) print(x, g) end printf("p=%f\n", p)