#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(\tau) = \sum_{\tau_{0}=1}^{m-\tau} ((\epsilon_{\tau{_0}} * \epsilon_{\tau+\tau_{0}})/m ) - (\sum_{\tau_{0}=1}^m \epsilon_{\tau_{0}}/m)^2
该公式的另一种形式是:
g(\tau) = <\epsilon_{\tau_{0}}\epsilon_{\tau_{0}+\tau}>-<\epsilon_{\tau_{0}}>^2
其中表示对 a 的期望。