Алгоритмы и программы обработки членов числовой последовательности — это алгоритмы, которые выявляют подчинение величин компонентов последовательности разным функциональным зависимостям.
Введение
Когда обрабатываются числовые информационные данные, иногда появляется задача установить, соответствуют ли величины компонентов рассматриваемой числовой последовательности какой-либо функциональной зависимости. Если возможно определить данную функциональную зависимость, то это позволяет уменьшить объёмы вычислительных операций, применяя свойства найденной функции. Или же можно отыскать функцию попроще, величины которой в узловых точках координатной сетки являются аппроксимацией имеющейся последовательности с необходимой точностью. Также можно выполнить экстраполяцию числовой последовательности.
Сегодня известен ряд методик восстановления одномерных зависимостей, подразделяющихся на интерполяционные и методы, основанные на аппроксимации. Интерполяционные методы отличаются тем, что найденная при их помощи функция должна проходить через ранее задаваемые точки. В качестве типичного примера глобальной интерполяции, то есть одновременного применения всех известных узлов, можно привести применение интерполяционного многочлена. Но если количество узлов очень большое, то использование такого метода интерполяции уже может себя не оправдать, так как возможен рос погрешностей по той причине, что интерполяционный многочлен предполагает гладкость по производным высших порядков. По этой причине наиболее часто используется локальная интерполяция, хотя и у неё есть недостатки.
Эти методы предполагают наличие значительных объёмов памяти для сохранения информации об интерполирующих функциях, который сравним с объёмом исходных данных.
Алгоритмы и программы обработки членов числовой последовательности
Функция, которая определена на множестве натуральных чисел, именуется последовательностью. Последовательность возможно образовать при помощи элементов любого типа, пронумерованных набором натуральных чисел $1, 2, …, a_n$ и представлена в виде ${а_1, а_2, ..., а_n, ...}$ или ${a_n}$, или $а_n$. Как правило, рассматриваются числовые последовательности, в которых каждой величине n должно соответствовать определённое число. Компонент последовательности $a_n$, то есть имеющий номер n, считается общим членом последовательности.
Последовательность может определяться следующим образом:
- При помощи формулы для общего члена последовательности $a_n= f(n)$.
- При помощи рекуррентных соотношений.
Должен быть задан ряд первых членов последовательности и формулы, которые позволяют поочерёдно вычислить каждый член последовательности. Такие заданные последовательности могут определяться также как возвратные последовательности. К примеру, определена пара первых членов последовательности $а_1, а_2$, а также уравнение:
$f (a_{n-2}, a_{n-1}, a_n) = 0$.
Тогда, если предположить, что $n=3$, можно сформировать уравнение для $а_3$:
$f (a_1, а_2, а_3) = 0$
Из этого уравнения можно определить $а_3$, а затем, предполагая, что $n=4$, из следующего уравнения:
$f (a_2, a_3, a_4) = 0$
можно определить $a_4$ и так далее.
Рекуррентные соотношения именуются рекурсивными функциями в случае, когда общий член последовательности в явном виде выражен через предыдущие члены последовательности. В таком случае функции числового значения n при начале с определённого номера выражаются в явной форме посредством предыдущих значений данной функции.
Рассмотрим пример программирования вычислений числовых последовательностей. Предположим, что с клавиатуры заносятся ряд целых положительных чисел, а именно n, p и a. Необходимо сформировать программу, позволяющую вычислить заданное количество членов числовой последовательности $n^p, a^n, n!$. Необходимо также вывести на дисплей найденные величины.
Для решения введём переменную power, то есть степень, для определения функции n, имеющую степень. Введём переменную exponent, то есть показатель, для определения показательной функции а, а также переменную factor, то есть множитель, для определения факториала n!.
В состав программы входят следующие блоки:
- Блок описаний, в котором указаны применяемые модули, применяемые переменные, а также их типы.
- Программное тело, в состав которого входят очистка дисплея, ввод информации с клавиатуры, определение компонентов последовательности при помощи рекуррентных формул.
- Начальные величины переменных следующие: power = 1, exponent = 1, factor = 1, выражения для общего члена poweri = poweri-11 • п, exponenti = exponenti-11• n, factori = factori-11 • i.
- Отображение итогов на дисплее.
В программе переменные n, p и a являются целочисленными типа integer (для неотрицательных целых чисел могут изменяться в диапазоне от нуля до 32767). Переменные power, exponent, factor являются действительными целыми числами, могут иметь шесть или семь верных знаков после запятой. Для языка программирования Си тип данных определяется как float. Если какая-нибудь переменная оказывается за пределами допустимого для объявленного типа диапазона, выдаётся сообщение об ошибке, вызванной переполнением (overflow).
Ниже приведён текст программы на языке Си:
/* Применяемые модули */
#include
#include
/*0сновной программный модуль включает */
void main ( )
{
/*описание переменных, очистка экрана, ввод данных с клавиатуры */
int a, i, n, p;
float power, exponent, factor ;
clrscr ( ) ;
printf ("Введите число n = ") ;
scanf ("%d", &n) ;
printf ("Введите степень р = ");
scanf ("%d", &p);
printf ("Введите основание показательной функции а = "); scanf("%d",&а);
/*Определение элементов последовательности посредством рекуррентных соотношений */
power = exponent = factor = 1;
for (i = 1; i ∠= p; i++) power *= n;
for (i = 1; i ∠= n; i++)
{
exponent *= a;
factor *= i;
}
/*вывод итоговых результатов на дисплей */
printf ("power=%l.1f exponent=%l.1f
factor=%l.lf \ n",
power, exponent, factor) ;
getch( ) ;
}