Esempio n. 1
0
        /// <summary>
        /// Добавляет погрешность которая пропорциональна амплитуде функции
        /// </summary>
        /// <param name="f">Функция, к которой будет добавлна погрешность</param>
        /// <param name="noise">Тип погрешности</param>
        /// <param name="k">Чем больше K, тем больше погрешность</param>
        /// <returns>Функцию с добавленной погрешностью</returns>
        public virtual Function addNoise(Function f, INoise noise, double k, bool relative)
        {
            Function result = new Function();

            result.setup(f.minX, f.maxX, f.step);
            for (int i = 0; i < f.Length; i++)
            {
                double noiseValue = k * noise.getDeviation();
                if (relative)
                {
                    noiseValue *= f[i];
                }
                result[i] = f[i] + noiseValue;
            }
            return(result);
        }