#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main ()
{
double g_1, e_1, e_2, e_3, e_4, e_5;
int k;
// double e[k];
e_1 = 3.0;
e_2 = 9.0;
e_3 = 27.0;
e_4 = 81.0;
e_5 = 243.0;
g_1 = ((e_1*e_2 + e_2*e_3 + e_3*e_4 + e_4*e_5)/5) - (((e_1)* + (e_2) + (e_3) +(e_4) + (e_5)/5)*((e_1)* + (e_2) + (e_3) +(e_4) + (e_5)/5));
printf("\n\n this is g(1): %f",g_1);
return (0);
}
我正在尝试编写一个计算值之间相关性的程序。我所使用的数学函数是自相关函数或数学相关函数,其形式为:
g(T) = sum(from t = 1 to m-T) [ (e_t)*(e_(T+t)] - (sum(from t = 1 to m) [e_t/m] )^2
其中m是我拥有的值的数量。
上面我试图用最简单的方式,取5个数字并将它们直接插入公式中。但最终我需要能够读取一个包含100到5000个任意值的文件,并找出它们之间的相关性。我以后会考虑将文件读取到数组的条目中,但首先我想知道是否有一种使用数组的逻辑方法来完成这个任务?
例如,我尝试做以下操作:
e[1] = 3.0;
e[2] = 9.0;
e[3] = 27.0;
e[4] = 81.0;
e[5] = 243.0;
for(k=1;k<=5;k++)
{
g[k]= ((e[k]*e[k+1] + e[k+1]*e[k+2] + e[k+2]*e[k+3] + e[k+3]*e[k+4])/5) - (((e[k] + e[k+1] + e[k+2] + e[k+3] + e[k+4])/5)*((e[k] + e[k+1] + e[k+2] + e[k+3] + e[k+4])/5))
}
但这只对k = 1有意义,因为到了k = 5的时候,k+1将是6,k+2将是7.. 我没有这些值.. 但我不确定如何编程.. 有人可以帮忙吗?
谢谢
这是使用MathJax的公式
g(τ) = ∑ τ0=1m−τ ((ετ0∗ετ+τ0)/m) − (∑ τ0=1m ετ0/m)^2
一个替代公式是:
g(τ) =<ετ0ετ0+τ>−<ετ0>^2
其中< >表示期望。