Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогрессии и ряды.doc
Скачиваний:
5
Добавлен:
05.11.2018
Размер:
189.95 Кб
Скачать

9

  1. Работа с прогрессиями и рядами

    1. Общие сведения

Обозначение суммы. Для любых двух целых чисел (положительных, отрицательных или равных нулю) n и m ≥ n

(m – n + 1 слагаемых)

Обозначение произведения. Для любых двух целых чисел (положительных, отрицательных или равных нулю) n и m ≥ n

(m – n + 1 множителей)

Факториалы. Факториал n! произвольного целого числа n ≥ 0 определяется формулами:

0! = 1, (n ≥ 0)

С ростом n значение факториала растет очень быстро!

Арифметическая прогрессия. Если a0 – первый член, d – постоянная разность между следующим и предыдущим членами, называемая разностью прогрессии, то

aj = jd (j = 0, 1. 2, …).

Геометрическая прогрессия. Если a0 – первый член, а r ≠ 1 – постоянное отношение следующего члена к предыдущему члену, называемое знаменателем прогрессии, то

aj = a0rj (j = 0, 1. 2, …).

Ряды. Арифметическая прогрессия – частный случай ряда. Ряд чисел это

Для бесконечных рядов m = ∞, но на машине возможен лишь расчет суммы ограниченного количества членов ряда, поэтому прямой численный расчет многих из бесконечных рядов лает ошибочный результат. Иногда для ряда известна формула расчета значения следующего члена ряда из значения предыдущего члена ряда.

Для вычисления значений математических функций в программах используются разложения этих функций в ряды Тейлора и Мак-Лорена. Например:

Иногда для расчета значений функций используют приближения функций. При использовании приближений функций большая точность достигается при меньшем количестве членов. Приближения получают подбором коэффициентов. Так для расчета функции cos x на интервале 0 ≤ x ≤ π/2 с точностью 10-3 можно воспользоваться формулой; cos x = 1 – 0,496070x2 + 0,03705x4. Используя данную формулу, можно реализовать алгоритмы расчета функций, как sin x, так и cos x для любых x.

В программах значения членов ряда можно табулировать в массивы, но в ряде алгоритмов можно обойтись вообще без массивов.

  1. Примеры фрагментов программ

    1. Расчет арифметической прогрессии

Пример программы расчета значений 5 членов арифметической прогрессии 5, 8, 11, 14, … (a0 = 5, d = 3) с целыми значениями членов, нахождения суммы ее членов и их среднего арифметического приведен ниже.

#include "stdafx.h"

#include <conio.h>

#include <locale.h>

int _tmain(int argc, _TCHAR* argv[])

/* Программа расчета значений 10 членов арифметической

прогрессии с номерами от 0 до 9

5, 8, 11, 14, . . . и нахождения суммы ее членов */

{

const

int n = 10;/* Количество членов арифметической прогрессии */

int

i; /* Номер члена прогрессии */

double

Sum; /* Сумма членов прогрессии */

double

ai; /* Значение i-го члена прогрессии */

setlocale(LC_ALL, "russian"); /* установка русского режима */

printf("Программа расчета значений %d членов \n",n);

printf("арифметической прогрессии 5, 8, 11, 14, ...\n");

printf("с номерами от 0 до %d, нахождения \n", n - 1);

printf("суммы ее членов и среднего арифметического\n");

printf("\n");

printf("Значения членов арифметической прогресси:\n");

Sum = 0.0; /* Начальное значение суммы членов прогрессии */

ai = 5.0; /* Первый член a0 = 5*/

/* Задание i - номера члена прогрессии */

for (i = 0; i <= n - 1; i++)

{

/* Печать i-го члена */

printf("%4d) =%3f\n",i,ai);

Sum = Sum + ai; /* Увеличение суммы на очередной член */

ai = ai + 3.0; /* Расчет значения следующего члена d = 3*/

}

printf("\nСумма членов прогрессии = %f\n",Sum);

printf("Среднее арифметическое ее членов = %f\n",Sum / n);

/*Завершение выполнения программы*/

printf("\nНажмите любую клавишу\n");

_getch();

return 0;

}

Наглядный тест:

Пример программы расчета значений 10 членов арифметической прогрессии 5, 8, 11, 14, … (a0 = 5, d = 3) с целыми значениями членов и печатью значений ее членов с пятого по седьмой, а также последнего члена приведен ниже.

#include "stdafx.h"

#include <conio.h>

#include <locale.h>

int _tmain(int argc, _TCHAR* argv[])

/* Программа расчета значений 10 членов арифметической

прогрессии

с целыми значениями членов 5, 8, 11, 14, . . .

и печати значений ее членов с пятого по седьмой,

а также последнего члена*/

{

const

int n = 10;/* Количество членов арифметической прогрессии */

int

i; /* Номер члена прогрессии */

int

ai; /* Значение i-го члена прогрессии */

setlocale(LC_ALL, "russian"); /* установка русского режима */

printf("Программа расчета значений %d целых членов \n",n);

printf("арифметической прогрессии с номерами от 0 до %d\n",

n - 1);

printf("5, 8, 11, 14, . . . и печати значений ее членов \n");

printf("с пятого по седьмой, а также последнего члена\n\n");

printf("Значения членов арифметической прогресси:\n");

ai = 5; /* Первый член a0 = 5*/

/* Задание i - номера члена прогрессии */

for (i = 0; i < n; i++)

{

/* Печать заданных членов */

if((i >= 5) && (i <= 7))

/* Печать i-го члена, начиная с 5-го по 7-й */

printf("%4d) =%3d\n",i,ai);

else if(i == n -1)

/* Печать последнего члена */

printf("\nПоследний член прогрессии:\n%4d) =%3d\n",i,ai);

ai = ai + 3; /* Расчет значения следующего члена d = 3 */

}

/*Завершение выполнения программы*/

printf("\nНажмите любую клавишу\n");

_getch();

return 0;

}

Наглядный тест: