Transformada discreta de Txebixov

De testwiki
Salta a la navegació Salta a la cerca

En matemàtiques aplicades, una transformada discreta de Txebixov (DCT) és un anàleg de la transformada discreta de Fourier per a una funció d'un interval real, convertint en qualsevol direcció entre els valors de la funció en un conjunt de nodes de Txebixov i coeficients d'una funció en base polinomial de Txebixov. Igual que els polinomis de Txebixov, rep el nom de Pafnuti Txebixov.[1]

Els dos tipus més comuns de transformades discretes de Txebixov utilitzen la graella de zeros de Txebixov, els zeros dels polinomis de Txebixov del primer tipus. Tn(x) i la graella de Txebixov extrema, l'extrem dels polinomis de Txebixov del primer tipus, que també són els zeros dels polinomis de Txebixov del segon tipus Un(x). Ambdues transformacions donen lloc a coeficients de polinomis de Txebixov del primer tipus.[2]

Altres transformacions discretes de Txebixov impliquen quadrícules i coeficients relacionats de polinomis de Txebixov del segon, tercer o quart tipus.[3]

Transformació discreta de Txebixov a la graella d'arrels

La transformada discreta de Txebixov de u(x) en els punts xn ve donada per: [4]

am=pmNn=0N1u(xn)Tm(xn)

on:

xn=cos(πN(n+12))

am=pmNn=0N1u(xn)cos(mcos1(xn))

on pm=1m=0 i pm=2 altrament.

Utilitzant la definició de xn ,

am=pmNn=0N1u(xn)cos(mπN(N+n+12))

am=pmNn=0N1u(xn)(1)mcos(mπN(n+12))

i la seva transformada inversa:

un=m=0N1amTm(xn)

Això es pot demostrar amb el següent codi MATLAB :

function a=fct(f, l)
% x =-cos(pi/N*((0:N-1)'+1/2));

f = f(end:-1:1,:);
A = size(f); N = A(1); 
if exist('A(3)', 'var') && A(3)~=1
 for i=1:A(3)
 a(:,:,i) = sqrt(2/N) * dct(f(:,:,i));
 a(1,:,i) = a(1,:,i) / sqrt(2);
 end
else
 a = sqrt(2/N) * dct(f(:,:,i));
 a(1,:)=a(1,:) / sqrt(2);
end

De fet, la transformada discreta del cosinus (dct) es calcula utilitzant un algorisme ràpid de transformada de Fourier a MATLAB. I la transformada inversa ve donada pel codi MATLAB:

function f=ifct(a, l)
% x = -cos(pi/N*((0:N-1)'+1/2)) 
k = size(a); N=k(1);

a = idct(sqrt(N/2) * [a(1,:) * sqrt(2); a(2:end,:)]);

end

Referències

Plantilla:Referències