Преобразование Падуа
Здесь приводится преобразование Падуа и обратное преобразование с точным объяснением нормализации и точек.
using FastTransforms
Определим точки Падуа и извлечем декартовы составляющие:
N = 15
pts = paduapoints(N)
x = pts[:,1]
y = pts[:,2];
Возьмем преобразование Падуа для функции:
f = (x,y) -> exp(x + cos(y))
f̌ = paduatransform(f.(x , y));
и используем коэффициенты для создания аппроксимации функции :
f̃ = (x,y) -> begin
j = 1
ret = 0.0
for n in 0:N, k in 0:n
ret += f̌[j]*cos((n-k)*acos(x)) * cos(k*acos(y))
j += 1
end
ret
end
#3 (generic function with 1 method)
В какой точке функция хорошо аппроксимирована?
f̃(0.1,0.2) ≈ f(0.1,0.2)
true
Возвращает ли нас обратное преобразование назад к сетке?
ipaduatransform(f̌) ≈ f̃.(x,y)
true