sinft.txt

来自「《Delphi常用数值算法集》的配书源码」· 文本 代码 · 共 33 行

TXT
33
字号
Procedure SINFT(var Y:array of real; N:integer);
var
    I,J,M,JJ:integer;  THETA,WR,WI,WPR,WPI,WTEMP,Y1,Y2,SUM:real;
begin
    THETA:=3.14159265358979 / N;
    WR:=1;
    WI:=0;
    WPR:=-2 * Sqr(Sin(0.5 * THETA));
    WPI:=Sin(THETA);
    Y[1]:=0;
    M:=N div 2;
    For J:=1 To M  do
    begin
        WTEMP:=WR;
        WR:=WR * WPR - WI * WPI + WR;
        WI:=WI * WPR + WTEMP * WPI + WI;
        Y1:=WI * (Y[J + 1] + Y[N - J + 1]);
        Y2:=0.5 * (Y[J + 1] - Y[N - J + 1]);
        Y[J + 1]:=Y1 + Y2;
        Y[N - J + 1]:=Y1 - Y2;
    end;
    REALFT(Y, M, 1);
    Sum:=0;
    Y[1]:=0.5 * Y[1];
    Y[2]:=0;
    For JJ:=1 To M do
    begin
        J:= 2 * JJ - 1;
        SUM:=SUM + Y[J];
        Y[J]:=Y[J + 1];
        Y[J + 1]:=SUM;
    end;
end; 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?