Difference between revisions of "Aufgaben:Exercise 4.11Z: C Program "acf2""
From LNTwww
(6 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
}} | }} | ||
− | [[File: | + | [[File:EN_Sto_Z_4_11_neu.png|right|frame|C program $2$ for ACF–calculation]] |
− | You can see on the right the C program " | + | You can see on the right the C program "acf2" for calculating the discrete ACF values $\varphi_x(k)$ with index $k = 0$, ... , $l$. |
− | In contrast to the program " | + | In contrast to the program "acf1" from [[Aufgaben:Exercise_4.11:_C_Program_"acf1"|Exercise 4.11]], here the algorithm described in the theory part is applied directly. It should be noted: |
− | *Let the long value passed to the program be | + | *Let the long value passed to the program be $l=10$. |
− | *The calculated ACF values $\varphi_x(0)$, ... , $\varphi_x(10)$ are returned to the main program with the float field $\rm ACF[ \ ]$ In lines 7 and 8, this field is prefilled with zeros. | + | *The calculated ACF values $\varphi_x(0)$, ... , $\varphi_x(10)$ are returned to the main program with the float field $\rm ACF[ \ ]$. In lines 7 and 8, this field is prefilled with zeros. |
− | *The random variable $x( \ )$ is defined as a float function in line 4, as is an auxiliary field ${\rm H}[10000 ]$, into which the $N = 10000$ samples $x_\nu$ are entered (lines 9 and 10). | + | *The random variable $x( \ )$ is defined as a float function in line 4, as is an auxiliary field ${\rm H}[10000 ]$, into which the $N = 10000$ samples $x_\nu$ are entered (lines 9 and 10). |
− | *The names of the | + | *The names of the control variables in line 6 are adapted to the given algorithm. |
*The actual ACF calculation is done from line 11. This program part is marked red in the program code. | *The actual ACF calculation is done from line 11. This program part is marked red in the program code. | ||
− | |||
− | |||
− | |||
− | |||
Line 39: | Line 35: | ||
{Which of the following statements are correct? | {Which of the following statements are correct? | ||
|type="[]"} | |type="[]"} | ||
− | + The calculation time increases linearly with $l + 1$, i.e. with the number of ACF values to be calculated. | + | + The calculation time increases linearly with $l + 1$, i.e. with the number of ACF values to be calculated. |
- The calculation time increases quadratically with the number $N$ of samples considered. | - The calculation time increases quadratically with the number $N$ of samples considered. | ||
+ The calculation becomes more accurate as $N$ increases. | + The calculation becomes more accurate as $N$ increases. | ||
− | + If a float variable is represented with $\rm 4 \ bytes$ | + | + If a float variable is represented with $\rm 4 \ bytes$, "acf2" needs at least $4 \cdot N$ bytes of memory. |
{Which of the following statements are true? | {Which of the following statements are true? | ||
|type="[]"} | |type="[]"} | ||
− | + The stronger the internal statistical bindings of the process are, the more <u>inexact</u> is the ACF result for a given $N$ | + | + The stronger the internal statistical bindings of the process are, the more <u>inexact</u> is the ACF result for a given $N$. |
− | - The stronger the internal statistical bindings of the process are, the <u> | + | - The stronger the internal statistical bindings of the process are, the more <u>accurate</u> is the ACF result for a given $N$. |
− | + If the process has statistical bindings, the errors of the numerical ACF calculation are also correlated. <br> < | + | + If the process has statistical bindings, the errors of the numerical ACF calculation are also correlated. <br> <u>Example:</u> If the value $\varphi_x(k=5)$ is too large, it is very likely that $\varphi_x(k=4)$ and $\varphi_x(k=6)$ will also be too large. |
Line 57: | Line 53: | ||
===Solution=== | ===Solution=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
− | '''(1)''' To calculate the ACF value $\varphi_x(0)$ | + | '''(1)''' To calculate the ACF value $\varphi_x(0)$ you have to average over $\underline{N =10000}$ summands, for $\varphi_x(10)$ only over $\underline{N = 9990}$. |
− | '''(2)''' Correct are <u>the proposed solutions 1, 3 and 4</u>: | + | '''(2)''' Correct are <u>the proposed solutions 1, 3 and 4</u>: |
*The computation time increases approximately linearly with $N$ and $l + 1$ as can be seen from the ACF calculation highlighted in red. | *The computation time increases approximately linearly with $N$ and $l + 1$ as can be seen from the ACF calculation highlighted in red. | ||
− | * In contrast, the computation time for the other parts of the program can be neglected. | + | * In contrast, the computation time for the other parts of the program can be neglected. |
− | *Naturally, the calculation also becomes more accurate with increasing $N$ | + | *Naturally, the calculation also becomes more accurate with increasing $N$. |
− | *This goes here – in contrast to the program " | + | *This goes here – in contrast to the program "acf1" of Exercise 4.11 – however at the expense of the necessary memory requirement. |
*Since each float variable takes up exactly four bytes, the auxiliary field ${\rm H}[10000 ]$ alone requires a memory of 40 kByte. | *Since each float variable takes up exactly four bytes, the auxiliary field ${\rm H}[10000 ]$ alone requires a memory of 40 kByte. | ||
− | '''(3)''' Correct are <u>suggested solutions 1 and 3</u>: | + | '''(3)''' Correct are the <u>suggested solutions 1 and 3</u>: |
− | *The stronger the statistical bindings within the random process, the less accurate is the ACF calculation for a given $N$ | + | *The stronger the statistical bindings within the random process, the less accurate is the ACF calculation for a given $N$. |
*This fact can be illustrated for example by the power calculation $($ACF value at $k=0)$ : | *This fact can be illustrated for example by the power calculation $($ACF value at $k=0)$ : | ||
− | **If all $N$ samples are statistically independent, then all contributions provide the maximum information about the ACF | + | **If all $N$ samples are statistically independent, then all contributions provide the maximum information about the ACF value $\varphi_x(k=0)$. |
− | **However, if there are statistical bindings between $x_\nu$ and $x_{\nu+1}$, but not between $x_\nu$ and $x_{\nu+2}$, only half of all samples provide the full information about $\varphi_x(k=0)$ and the others provide only limited information. | + | **However, if there are statistical bindings between $x_\nu$ and $x_{\nu+1}$, but not between $x_\nu$ and $x_{\nu+2}$, only half of all samples provide the full information about $\varphi_x(k=0)$ and the others provide only limited information. |
*This loss of information based on correlations can only be compensated in this example by doubling $N$ . | *This loss of information based on correlations can only be compensated in this example by doubling $N$ . | ||
− | *The last statement is also true, as explained in detail on the page "Accuracy of the numerical ACF calculation" in the theory section. | + | *The last statement is also true, as explained in detail on the page "Accuracy of the numerical ACF calculation" in the theory section. |
{{ML-Fuß}} | {{ML-Fuß}} | ||
Latest revision as of 16:27, 28 April 2022
You can see on the right the C program "acf2" for calculating the discrete ACF values $\varphi_x(k)$ with index $k = 0$, ... , $l$.
In contrast to the program "acf1" from Exercise 4.11, here the algorithm described in the theory part is applied directly. It should be noted:
- Let the long value passed to the program be $l=10$.
- The calculated ACF values $\varphi_x(0)$, ... , $\varphi_x(10)$ are returned to the main program with the float field $\rm ACF[ \ ]$. In lines 7 and 8, this field is prefilled with zeros.
- The random variable $x( \ )$ is defined as a float function in line 4, as is an auxiliary field ${\rm H}[10000 ]$, into which the $N = 10000$ samples $x_\nu$ are entered (lines 9 and 10).
- The names of the control variables in line 6 are adapted to the given algorithm.
- The actual ACF calculation is done from line 11. This program part is marked red in the program code.
Hints:
- This exercise belongs to the chapter Auto-Correlation Function.
- In particular, reference is made to the pages
Questions
Solution
(1) To calculate the ACF value $\varphi_x(0)$ you have to average over $\underline{N =10000}$ summands, for $\varphi_x(10)$ only over $\underline{N = 9990}$.
(2) Correct are the proposed solutions 1, 3 and 4:
- The computation time increases approximately linearly with $N$ and $l + 1$ as can be seen from the ACF calculation highlighted in red.
- In contrast, the computation time for the other parts of the program can be neglected.
- Naturally, the calculation also becomes more accurate with increasing $N$.
- This goes here – in contrast to the program "acf1" of Exercise 4.11 – however at the expense of the necessary memory requirement.
- Since each float variable takes up exactly four bytes, the auxiliary field ${\rm H}[10000 ]$ alone requires a memory of 40 kByte.
(3) Correct are the suggested solutions 1 and 3:
- The stronger the statistical bindings within the random process, the less accurate is the ACF calculation for a given $N$.
- This fact can be illustrated for example by the power calculation $($ACF value at $k=0)$ :
- If all $N$ samples are statistically independent, then all contributions provide the maximum information about the ACF value $\varphi_x(k=0)$.
- However, if there are statistical bindings between $x_\nu$ and $x_{\nu+1}$, but not between $x_\nu$ and $x_{\nu+2}$, only half of all samples provide the full information about $\varphi_x(k=0)$ and the others provide only limited information.
- This loss of information based on correlations can only be compensated in this example by doubling $N$ .
- The last statement is also true, as explained in detail on the page "Accuracy of the numerical ACF calculation" in the theory section.