⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cosft.cpp

📁 此程序为VC++常用数值算法这本书附赠的光盘中包含了本书中全部的源代码
💻 CPP
字号:
void cosft(double y[],int &n,int &isign)
{
	int m,j,temp,i;
	double theta,wr,wi,wpr,wpi,wtemp,sum,y1,y2,even,odd;
	double sum0,sume,enf0;
	temp=1;
    theta = 3.14159265358979 / n;
    wr = 1.0;
    wi = 0.0;
    wpr = -2.0 * sin(0.5 * theta)*sin(0.5 * theta);
    wpi = sin(theta);
    sum=y[1];
    m = n / 2;
    for (j = 1; j<=m-1; j++)
	{
        wtemp = wr;
        wr = wr * wpr - wi * wpi + wr;
        wi = wi * wpr + wtemp * wpi + wi;
        y1 = 0.5 * (y[j + 1] + y[n - j + 1]);
        y2 = (y[j + 1] - y[n - j + 1]);
        y[j + 1] =y1 - wi * y2;
        y[n - j + 1] =y1 + wi * y2;
		sum=sum+wr*y2;
    }
    realft(y, m, temp);
    y[2]=sum; 
    for (j = 4; j<=n; j+=2)
	{
        sum = sum + y[j];
        y[j] = sum;
    }
    if (isign == -1)
	{
        even = y[1];
        odd = y[2];
        for (i = 3; i<=n - 1; i+=2)
		{
            even = even + y[i];
            odd = odd + y[i + 1];
        }
        enf0 = 2.0 * (even - odd);
        sum0 = y[1] - enf0;
        sume = (2.0 * odd / n) - sum0;
        y[1] = 0.5 * enf0;
        y[2] = y[2] - sume;
        for (i = 3; i<=n - 1; i+=2)
		{
            y[i] = y[i] - sum0;
            y[i + 1] = y[i + 1] - sume;
        }
    }
}

⌨️ 快捷键说明

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