関数imsequence_dispersion マニュアル

(The documentation of function imsequence_dispersion)

Last Update: 2021/12/8


◆機能・用途(Purpose)

フーリエスペクトルのサンプルの値の分散を計算する。
Calculate the dispersion of the sample values of a Fourier spectral data.


◆形式(Format)

#include <sequence/statistics.h>
inline double imsequence_dispersion(struct imsequence seq)


◆引数(Arguments)

seq 計算に用いるフーリエスペクトルを表す構造体。
A structure to represent the Fourier spectral data used for the computation.


◆戻り値(Return value)

seq.valueの配列要素の分散。
The dispersion of the array components of seq.value.


◆使用例(Example)

struct imsequence seq;
double sigma2=imsequence_dispersion(seq);


◆計算式とアルゴリズム (Formula and algorithm)

\(a_n=\)seq.value[n], \(N=\)seq.sizeとおく。 この\(a_n\) (\(n=0,1,2,\cdots,N-1\)) の分散\(\sigma^2\)を計算すれば良く、 定義式は以下の通りである。
\[\begin{equation} \sigma^2=\frac{1}{N}\sum_{n=0}^{N-1} |a_n-\mu|^2 \label{eq.sigma2.definition} \end{equation}\] \[\begin{equation} \mu=\frac{1}{N}\sum_{n=0}^{N-1} a_n \label{eq.mu.definition} \end{equation}\] (\ref{eq.mu.definition})式を用いると(\ref{eq.sigma2.definition})式は 以下のように変形できる。 \[\begin{eqnarray} \sigma^2 &=& \frac{1}{N} \sum_{n=0}^{N-1} (a_n-\mu)^* (a_n-\mu) \nonumber \\ &=& \frac{1}{N} \sum_{n=0}^{N-1} (a_n^* a_n - \mu^* a_n -\mu a_n^* + \mu^* \mu) \nonumber \\ &=& \frac{1}{N} \sum_{n=0}^{N-1} a_n^* a_n - \mu^* \frac{1}{N} \sum_{n=0}^{N-1} a_n - \mu \frac{1}{N} \sum_{n=0}^{N-1} a_n^* + \mu^* \mu \frac{1}{N} \sum_{n=0}^{N-1} 1 \nonumber \\ &=& \frac{1}{N} \sum_{n=0}^{N-1} a_n^* a_n - \mu^* \mu - \mu \mu^* + \mu^* \mu \nonumber \\ &=& \frac{1}{N} \sum_{n=0}^{N-1} |a_n|^2 -|\mu|^2 \label{eq.sigma2.arrange1} \end{eqnarray}\] この\(\mu\)は関数imsequence_average (sequence/statistics.h)によって計算でき、 \[\begin{equation} \frac{1}{N}\sum_{n=0}^{N-1} |a_n|^2 \label{eq.an2.summation} \end{equation}\] は関数imsequence_power2_average (sequence/statistics.h)によって計算できる。 したがって、関数imsequence_averageの戻り値を\(a\)、 imsequence_power2_averageの戻り値を\(a_2\)とおけば、 分散は \[\begin{equation} \sigma^2=a_2-|a|^2 \label{eq.sigma2.final} \end{equation}\] によって計算できる。 この関数ではこの方法により分散を計算する。
Let us introduce notations \(a_n=\)seq.value[n] and \(N=\)seq.size. Then the quantity required is the dispersion \(\sigma^2\) for this \(a_n\) (\(n=0,1,2,\cdots,N-1\)), which is defined by eqs. (\ref{eq.sigma2.definition}) and (\ref{eq.mu.definition}). Using eq. (\ref{eq.mu.definition}), eq. (\ref{eq.sigma2.definition}) can be arranged as (\ref{eq.sigma2.arrange1}). The value of \(\mu\) and the quantity defined by eq. (\ref{eq.an2.summation}) can be computed by functions imsequence_average and imsequence_power2_average (both in sequence/statistics.h), respectively. Then the dispersion can be computed by eq. (\ref{eq.sigma2.final}), where \(a\) and \(a_2\) are the return values of functions imsequence_average and imsequence_power2_average, respectively. This function calculates the dispersion by this approach.