DCTI公司

来自Citizendium
跳转到导航 跳转到搜索
这篇文章正在开发中,尚未获得批准。
主要文章
讨论
相关文章 [?]
参考文献 [?]
外部链接 [?]
可引用版本 [?]
 
此可编辑的主要文章是正在开发中并受免责声明.

DCTI公司是离散类比的实现之一余弦傅里叶操作人员

DCTII这个名字的选择与维基百科类似[1]和符号C中的数字配方 [2].

DCTI或I类离散Cos变换是正交变换,用于替换数组长度的包含元素,到阵列包含元素

对于

规范化表单

正交化变换可以用运算符定义,作用于数组按以下方式:

操作员是它自己的反面;

数字实现

这个C类++第一类离散cos变换的数值实现由3个文件组成zfour1.cin公司,zrealft.cin公司,zcosft1.cin公司; 为了编译示例,应该将这些文件加载到工作目录。对于波动光学的应用,z类型应定义为双“或复合(双); 然而,对于其他应用,也可以用其他方式定义这种类型。函数的名称和参数的意义由C中的数字配方,数组变换的调用长度的具有表单zcosft1(F-1,N);在这样的调用之后,数组元素的值替换为使用上述表达式(1)计算的值。对于,评估要求的顺序为操作

近似余弦傅里叶

这个余弦傅立叶运算符转换函数函数的非负参数按以下方式:

对于这个算子的离散近似,假设一些较大的自然数.让.Let函数平滑并在无穷远处快速衰减。然后可以近似如下:

对于,可以这样写:

在转换时,假设可以忽略为.以这种方式,

余弦傅里叶逼近的数值检验

文件夹zfour1.cin公司,zrealft.cin公司,zcosft1.cin公司应该加载到工作目录,以便编译下面的测试文件。

示例的数值实现余弦傅里叶下面建议使用上一节中描述的近似变换。自傅里叶函数的C++数值余弦傅里叶变换可以实现如下:

#包括<math.h>#包括<stdio.h>#包括<stdlib.h>//#包括<复杂>//使用命名空间标准;#定义z_type双精度#包括“zfour1.cin”#包括“zrealft.cin”#包括“zcosft1.cin”main(){z_type*a,*b;int j,k,N=16;双d,x,y;a=(z_type*)malloc((size_t)((N+1)*sizeof(z_type)));b=(z_type*)malloc((size_t)((N+1)*sizeof(z_type)));d=平方英尺(M_PI/N);对于(j=0;j<N+1;j++){x=j*d;a[j]=b[j]=exp(-x*x/2);}zcosft1(a-1,N);对于(j=0;j<N+1;j++)a[j]*=sqrt(2./N);对于(j=0;j<N+1;j++)printf(“%12.9f%12.9f%22.9f%11.4e\N”,j*d,a[j],b[j]、a[j]-b[j]);免费(a);自由(b);}

上述代码生成以下输出:

0.0000000001.0000000001.000000-2.3238e-120.443113463 0.906490462 0.906490962 2.3206e-120.886226925 0.675231907 0.6752319007-2.3094e-121.329340388 0.413303564 0.413303564 2.2924e-121.772453851 0.207879576 0.2078795076-2.2688e-122.215567314 0.085917370 0.0859173 70 2.2417e-122.658680776 0.029179416 0.02917941-2.2100e-123.101794239 0.008143268 0.008143268 2.1780e-123.544907702 0.001867443 0.001867443-2.1444e-123.988021165 0.000351903 0.0003511903 2.1124e-124.431134627 0.000054491 0.000054491-2.0815e-124.874248090 0.000006933 0.0000069332.0543e-125.317361553 0.000000725 0.000000725-2.0309e-125.760475015 0.000000062 0.000000062 2.0121e-126.203588478 0.000000004 0.000000004-1.9832e-126.646701941 0.000000000 0.000000000 2.4651e-127.089815404 0.0000000000.0000000001.0175e-11

第0列表示坐标,以下两个–其DTFI和输入函数,最后一个显示用DTFI例程逼近余弦傅里叶算子。

示例表明,对于最简单的自傅里叶函数,17节点近似给出了12位正确的十进制数字。

对于上述代码的分析,应注意,自傅里叶函数是傅里叶算子特征值为1;

四级效率的评估

是带周期实变元的偶数周期函数:

,

然后,傅里叶级数的展开式可以写成

傅里叶系数

,

假设某个较大的自然数.让.系数的近似值,将积分替换为有限和:

,

与方程式(1)的比较得出

,

给定膨胀系数,网格上的函数可以使用进行评估,使用对于.

傅里叶级数展开的数值试验

.让。膨胀系数预计为,,; 所有其他系数预计为零。上述近似值可以在C类++具有以下代码:

#包括<math.h>#包括<stdio.h>#包括<stdlib.h>#定义z_type双精度#包括“zfour1.cin”#包括“zrealft.cin”#包括“zcosft1.cin”main(){z_type*a,*b,*c;int j,k,N=8;双d,x,y;a=(z_type*)malloc((size_t)((N+1)*sizeof(z_type)));b=(z_type*)malloc((size_t)((N+1)*sizeof(z_type)));c=(z_type*)malloc((size_t)((N+1)*sizeof(z_type)));d=M_PI/N;对于(j=0;j<N+1;j++){x=j*d;a[j]=b[j]=1.+.1*cos(x)+.01*coszcosft1(a-1,N);对于(j=0;j<N+1;j++)c[j]=a[j];zcosft1(a-1,N);对于(j=0;j<N+1;j++)printf(“%2d%12.9f%12.9f%12.9f\N”,j,b[j],c[j],a[j]);免费(a);自由(b);}

上面的代码可以用文件编译zfour1.cin公司,zrealft.cin公司,zcosft1.cin公司并生成以下输出:

0  1.110000000  8.000000000  4.4400000001  1.099459021  0.400000000  4.3978360842  1.070710678  0.040000000  4.2828427123  1.031197275 -0.000000000  4.1247891024  0.990000000  0.000000000  3.9600000005  0.954660589 -0.000000000  3.8186423566  0.929289322 -0.000000000  3.7171572887  0.914683115 -0.000000000  3.6587324588  0.910000000  0.000000000  3.640000000

第0列仅为网格的节点编号。

第一列显示初始函数。

2d列表示DCTI公司初始函数的转换。此列中的数字是初始函数中使用的傅里叶系数乘以因子.最后一列是运算符附加应用的结果DCTI公司和表示函数的相同初始值乘以相同因子。

结论

可用于评估余弦傅里叶等距函数值数组上的运算符,假设函数连续且在无穷远处平滑衰减。数组应该具有元素,并且计数应该以零开始。

相同的离散运算符可用于计算傅里叶系数对称周期函数,以及通过给定的傅里叶系数对函数进行截断计算傅里叶级数.

数值实现对于对一些人来说自然数 . TheC类++实现存储在例程中zfour1.cin公司,zrealft.cin公司,zcosft1.cin公司; 它们可以复制并包含到用户代码中,而无需任何“安装”。为了处理实数,输入z类型可以定义为“double”;为了处理复数,它可以定义为复合(双).

工具书类

本条内容采用自http://tori.ils.uec.ac.jp/tori/index.php/DCTI网站