Sequential Iterative Averager Assignment
Jump to navigation
Jump to search
Motivation
Iterative Averaging is the process of updating an array to so that each index becomes the average of the indices one before and one after it. After repeating this for many iterations, the array may converge to one set of numbers. For example, when given the following array, we can perform iterations of this algorithm until the array eventually converges:
[0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] | [9] | [10] |
---|---|---|---|---|---|---|---|---|---|---|
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.25 | 0.5 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.125 | 0.25 | 0.625 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0625 | 0.125 | 0.375 | 0.625 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.03125 | 0.0625 | 0.21875 | 0.375 | 0.6875 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0 | 0.015625 | 0.03125 | 0.125 | 0.21875 | 0.453125 | 0.6875 | 1.0 |
0.0 | 0.0 | 0.0 | 0.0078125 | 0.015625 | 0.0703125 | 0.125 | 0.2890625 | 0.453125 | 0.7265625 | 1.0 |
0.0 | 0.0 | 0.00390625 | 0.0078125 | 0.0390625 | 0.0703125 | 0.1796875 | 0.2890625 | 0.5078125 | 0.7265625 | 1.0 |
0.0 | 0.001953125 | 0.00390625 | 0.021484375 | 0.0390625 | 0.109375 | 0.1796875 | 0.34375 | 0.5078125 | 0.75390625 | 1.0 |
0.0 | 0.001953125 | 0.01171875 | 0.021484375 | 0.0654296875 | 0.109375 | 0.2265625 | 0.34375 | 0.548828125 | 0.75390625 | 1.0 |
0.0 | 1.0 | |||||||||
0.0 | 1.0 | |||||||||
0.0 | 1.0 | |||||||||
0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0 |
Code To Implement
SequentialIterativeAverager
class: | SequentialIterativeAverager.java | |
methods: | iterativelyAverage | |
package: | iterativeaveraging.warmup | |
source folder: | student/src/main/java |
method: public double[] iterativelyAverage(double[] originalArray, int iterationCount)
(sequential implementation only)