
Информатика
.pdf
ряда через предыдущий. Например, необходимо вычислить сумму 20 членов ряда:
S 1 ln 3 x ln 2 3 x2 ... ln n 3 xn , 2! n!
где аргумент х изменяется в интервале [0;1] с шагом 0,1.
а) |
у = 3 |
х |
б) |
|
1 |
|
|
|
2 |
|
|
y |
|
x 2 |
|
|
|
|
|||
|
|
|
|
|
4 |
|
|
3 |
|
|
|
|
|
|
|
|
|
|
начало |
|
начало |
|
||||
b = ln3; x = 0.1 |
|
x = 0.1 |
|
||||
S = 1; a =1; n=1 |
S=0; С= -1; n=1 |
||||||
a = a*b*x/n; |
|
S = S+C*cos(nx)/ n2; |
|||||
S = S+a; n = n+1 |
|
n=n+1 ; С = -С |
|||||
n < =19 |
да |
n<=30 |
да |
||||
|
|
||||||
|
нет |
|
|
|
|
нет |
|
|
x |
|
y = 0.25*(x |
2 |
|
x |
2 |
y = 3 |
|
|
|
/3) |
|||
|
|
Y = 3 |
|
|
|||
Вывод x, S, y |
|
Вывод x, S, y |
|||||
x= x+0.1 |
|
x= x+0.1 |
|
||||
|
|
да |
|
|
|
|
да |
x <=1 |
|
x <=1 |
|
||||
|
нет |
|
|
|
|
нет |
|
конец |
|
конец |
|
Рис. 4.1. Блок-схемы вычислений сумм двух рядов различного типа
21
Эта сумма является частичной суммой ряда для функции у = 3х. Составим рекуррентную формулу, основываясь на формулах n-го и n+1-го членов ряда:
|
a |
|
|
ln n 3 |
xn |
; a |
|
|
ln n 1 3 |
|
xn 1 |
|
ln n 3 |
xn |
ln 3 |
x |
|||
|
|
n |
|
|
n! |
|
n 1 |
|
(n 1)! |
|
|
n! |
|
n 1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
то есть a |
n 1 |
a |
n |
ln 3 |
x . |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
n 1 |
|
|
|
|
|
|
|
|
|
|
|
Полагая аn = 1 при n = 0, по этой формуле можно определить все члены ряда, исключая первый.
Суммирование проводится методом накопления. Присвоим переменной S начальное значение, равное первому члену суммы, в данном случае S = 1. Затем, вычисляя очередные члены ряда по рекуррентной формуле, прибавляем каждое из этих значений к накопителю: S = S + an. При составлении алгоритма (рис. 4.1а) учтем, что нам необходимо вычислить 19 следующих членов ряда, так как мы начали накопление с первого члена.
Параллельно, для контроля правильности алгоритма, вычисляем и значение исходной функции у = 3х.
Ряды, не содержащие факториалов и степеней высоких порядков
В качестве примера рассмотрим нахождение частичной суммы
разложения в ряд функции: |
|
1 |
|
2 |
|
2 |
|
|
y |
|
x |
|
|
|
|
|
|
4 |
|
|
|
3 |
|
|
|
|
|
|
|
S cos x |
cos2x |
|
cos3x |
... ( 1) |
n |
|
cosnx . |
|
22 |
32 |
|
n2 |
|
||||
|
|
|
|
|
Для рядов подобного типа нецелесообразно прибегать к составлению рекуррентных формул. Каждый очередной член определяется подстановкой значения n в формулу общего члена. Так,
при n = 1 запишем a1 = -cos(x), при n = 2 получаем a2 |
|
cos2x |
и т.д. |
|
22 |
|
Составим алгоритм вычисления суммы этого знакопеременного ряда. Пусть количество слагаемых n = 30, диапазон изменения аргумента 0,l ≤ x ≤ l и его шаг x = 0,1. Положим S = 0, n = 1, C = 1 и вычислим первый член суммы по формуле общего члена ряда. Изменив
22
знак С на обратный, в следующем выполнении цикла имеем второй член суммы и т. д. Полностью алгоритм нахождения суммы рассматриваемого ряда приведѐн на рис. 4.1б.
Ряды смешанного типа
S 1 |
cos x |
|
cos 2x |
... |
cos nx |
|
|
|
|
|||||||
|
|
2! |
n! |
|
|
|
||||||||||
|
|
|
|
1! |
|
|
|
|
|
|
||||||
|
x 3 |
|
|
x 5 |
|
|
x 7 |
|
|
x |
2n 1 |
|
|
|||
S |
|
|
|
|
|
|
|
|
... ( 1) n 1 |
|
|
|
|
. |
||
3 |
|
15 |
|
35 |
|
|
2 |
|
||||||||
|
|
|
|
|
|
|
|
4n |
1 |
В подобных рядах целесообразно для сомножителей, содержащих степени высших порядков и факториалы, составлять рекуррентные соотношения, а остальные сомножители вычислять непосредственной подстановкой значения n. В качестве примера рассмотрим вычисление значений ряда
S |
x3 |
|
x5 |
|
x7 |
... ( 1)n 1 |
x 2n 1 |
|||
3 |
15 |
35 |
4n |
2 |
1 |
|||||
|
|
|
|
для n = 30, 0,l ≤ x ≤ l, x = 0,1. Сумма членов этого ряда является
частичной суммой разложения функции |
y |
1 x2 |
arctgx |
x . Для каждо- |
|
|
2 |
2 |
|
||
го члена ряда сомножители ( 1)n+1 и х2n+1 |
будем вычислять рекур- |
рентно, а 1/(4n2 1) непосредственно. Ниже приведѐн листинг программы решения этой задачи.
#include <stdio.h> #include <math.h> int main()
{
double x,a,S,y; int n;
for (x=0.1; x<=1; x+=0.1)
{
a=-x; S=0;
for (n=1;n<=30;n++)
{
23
a=-a x x; S=S+a/(4 n n-1);
}
y=0.5 ((x x+1) atan(x)-x);
printf("x=%3.1f S=%8.5f y=%8.5f \n",x,S,y); };
getchar(); |
/* ожидание нажатия клавиши пользователем */ |
return 0; |
|
} |
|
Так как алгоритмы вычисления конечных сумм очень индивидуальны, рекомендуется составленную программу проверить подстановкой для первых двух-трех членов суммы. Для контроля правильности составления алгоритма в наших задачах параллельно с вычислением суммы значение функции определяется и непосредственно.
4.1. Задания на нахождение конечной суммы ряда
а) Решить задачу вычисления конечной суммы ряда для заданного числа n при изменении аргумента х в заданном диапазоне, количество шагов изменения х равно 10,
б) Определить число членов конечной суммы n, позволяющее аппроксимировать функцию с заданной точностью (например, =
10 5), исходя из критерия |
|
Sn Sn 1 |
|
|
|
an |
|
. |
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Диапазон |
|
|
|
|
|
|
||||
№ |
|
|
|
|
|
|
|
|
|
|
|
|
Сумма |
|
|
|
|
|
|
|
|
|
изменения |
n |
Функция y(х) |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
аргумента |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
x3 |
|
x5 |
|
|
x7 |
|
|
|
|
|
n x2n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
1 |
S x |
|
|
|
|
|
|
|
|
|
|
... 1 |
|
|
|
|
|
|
|
|
|
|
0,l ÷l |
10 |
sin(x) |
||||||||||||||||
3! |
|
5! |
7! |
|
(2n 1)! |
|
|
|
|||||||||||||||||||||||||||||||||
|
S cos(0.8) x sin(0.8) |
x 2 cos(0.8) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
n |
|
|
|
|
|
|
|
|
0,l ÷l |
15 |
cos(x + 0,8) |
||||||
|
|
x 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
cos(0.8 |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
sin(0.8) |
... |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
3! |
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
3 |
S 1 x |
x 2 |
|
... |
xn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l ÷2 |
15 |
|
ex |
||||||||||||||||||
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
4 |
|
cos(2x) |
|
|
|
cos(4x) |
|
|
|
cos(6x) |
|
|
|
cos(2nx) |
|
|
|
0,l ÷0,8 |
50 |
|
|
|
|||||||||||||||||||
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
0.5 |
|
|
sin(x) |
|
||||||||||||||||
|
3 |
|
|
|
|
|
15 |
|
|
|
35 |
|
4n2 1 |
|
|
|
4 |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24
5 |
S x |
x3 |
|
|
x5 |
|
|
|
|
|
x7 |
|
... 1 n 1 |
x2n 1 |
|
0,l4÷0,5 |
40 |
|
arctg(x) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 |
|
|
|
|
5 |
|
|
|
|
|
|
7 |
|
|
2n 1 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 |
S 1 |
|
cos x |
|
|
|
cos 2x |
|
... |
|
cos nx |
|
|
|
|
|
|
0,l÷l |
20 |
ecos(x) cos(sin(x)) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
1! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
7 |
S 1 x2 |
|
x4 |
|
|
|
|
x6 |
|
|
... ( 1)n 1 |
x2n |
|
|
|
|
|
|
|
|
|
|
0,0l÷l |
10 |
|
|
e x 2 |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
3! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
8 |
S |
(2x)2 |
|
|
|
(2x)4 |
|
(2x)6 |
|
... ( 1)n |
(2x)2n |
|
0,l ÷l |
10 |
2 (cos2x - 1) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
4! |
|
|
|
|
|
|
|
|
|
6! |
|
|
|
|
(2n)! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
x3 |
|
|
|
x |
5 |
|
|
|
|
|
|
|
|
|
x7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x 2n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
y |
1 x2 |
arctg x |
x |
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||
9 |
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,2÷l |
20 |
|
2 |
|
|
|
|
|
2 |
|
||||||||||||||||||||||||||||||||
3 |
|
|
|
|
|
|
|
|
|
|
|
35 |
4n |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
10 |
S 1 |
|
|
|
|
x2 |
|
|
|
x4 |
|
|
x6 |
|
... ( 1)n |
|
x2n |
|
|
|
|
|
|
|
|
|
|
0,l ÷l |
10 |
|
cos(x) |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2n)! |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
4! |
|
|
|
|
|
|
|
|
6! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
11 |
S 1 |
3x |
|
(3x)2 |
|
|
|
... |
(3x)n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,l ÷l |
15 |
|
|
e3x |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
1! |
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
S sin(0.5) x cos(0.5) |
x 2 |
sin(0.5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
0,1 ÷l |
10 |
|
sin(x+0,5) |
|||||||||||
|
|
x3 cos(0.5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
cos(0.5 |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
... |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
3! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
13 |
S 1 |
ln 5 x |
|
ln 2 5 |
|
x2 |
... |
ln n |
5 |
xn |
|
|
|
|
|
|
0,l ÷l |
10 |
|
ex ln5 |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
1! |
|
|
|
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
14 |
|
|
(x 1) |
|
|
|
|
(x 1) |
2 |
|
|
|
|
|
|
|
(x 1)3 |
|
|
|
|
|
|
|
|
(x 1)n |
0,75÷2 |
15 |
|
ln(x) |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
S |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
x |
|
|
|
|
|
|
|
|
|
2x2 |
|
|
|
|
|
|
|
|
3x3 |
|
|
|
|
|
|
nxn |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
15 |
S 1 |
3x2 |
|
|
|
|
5x4 |
|
|
7x6 |
... |
(2n 1) x2n |
0,l ÷l |
10 |
|
(1 2x2 )ex 2 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
1! |
|
|
|
|
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
|
|
|
|
|
3! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
x 2 |
|
|
|
|
|
|
x3 |
|
|
|
|
|
|
|
|
|
|
|
|
x n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
16 |
S x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,l ÷0,9 |
60 |
|
ln(1 - x) |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
x |
3 |
|
|
|
|
|
|
|
x |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
x 2n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 x |
|
|||||||||||||||||||||||||||||||||||||||||
17 |
S |
2 x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,l ÷0,9 |
35 |
|
ln |
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 x |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||
18 |
S 1 |
|
|
|
x2 |
|
|
|
|
|
|
x4 |
|
|
x6 |
... |
|
x 2n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l ÷3 |
10 |
|
ch(x) |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
2! |
|
|
|
|
|
|
4! |
|
|
6! |
|
|
(2n)! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
19 |
S 1 |
x2 |
|
|
x4 |
|
x6 |
... ( 1)n |
|
|
x2n |
|
|
|
|
|
|
0,l ÷ 1 |
10 |
|
|
sin x |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
(2n 1)! |
|
|
|
|
x |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
3! |
|
|
|
|
|
|
|
|
|
5! |
|
|
|
|
|
|
|
|
7! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
20 |
S x |
|
|
x3 |
|
|
x5 |
|
|
|
|
|
x7 |
|
... |
|
|
|
x2n 1 |
|
|
|
|
|
|
|
|
|
|
|
|
l ÷3 |
20 |
|
sh(x) |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
3! |
|
5! |
|
|
7! |
|
|
(2n 1)! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25
5. ИНДЕКСИРОВАННЫЕ ПЕРЕМЕННЫЕ
5.1. Одномерный массив
Упорядоченное множество данных может быть представлено в виде так называемых регулярных типов или массивов. Для задания массива требуется указать его имя (идентификатор), тип входящих в него элементов, размер, равный количеству элементов в массиве, а также размерность (вектор, матрица, трехмерный массив и т. д.), равную количеству индексов, необходимых для доступа к отдельным элементам.
Объявление массива сводится к указанию типа его элементов и количества элементов. Общий вид оператора объявления индексированных переменных имеет вид:
идентификатор_типа имя_массива [размер][размер]
Например, объявление массива целых чисел размером в 10 элементов имеет следующий вид:
int x[10];
Размер массива задается целой константой. Тип элемента массива может быть любым.
Размер массива, определяемый количеством его элементов, в Си фиксируется при его объявлении в программе и не может быть изменѐн в процессе еѐ выполнения. Отсюда совет: при написании достаточно общего (массового) алгоритма следует выбирать границы массива с запасом, помня о том, что при компиляции программы под используемый в ней массив выделяется не более 1 Мбайт оперативной памяти (для приложений MS DOS не более 64 Кбайт).
Преимущества использования в программах массивов, к элементам которых обращаются с помощью индексированных переменных, наиболее явно проявляются в том случае, когда необходимо производить одинаковые операции над большим количеством чисел. Так как элементы массива обозначаются одним именем и различаются лишь местоположением (индексом), алгоритм решения таких задач основывается на циклическом повторении некоторой операции, причем
26
параметром цикла, как правило, является индекс. В тексте программы для обозначения элементов массива используется имя массива, а далее в квадратных скобках указывается индекс элемента массива. Индексация элементов массива в программах, написанных на языке Cи, всегда начинается с 0.
Пример подобного алгоритма ввод и вывод одномерных массивов с известным количеством элементов. Ниже представлен листинг программы подсчета итоговой суммы заработной платы некоторого подразделения:
/* Ввод и вывод массива */
#include <stdio.h> #include <stdlib.h>
int main()
{
const int NumOfMen=30;
unsigned int n,s,i;
unsigned int Salary[NumOfMen]; printf("Количество сотрудников?\n"); scanf( "%u", &n);
if ((n==0) || (n>NumOfMen))
{
printf("Ошибка! Недопустимое количество сотрудников?\n"); exit(4);
}
printf("Вводите значения зарплат \n "); s=0;
/* Цикл ввода и суммирования */ for(i=0;i<n;i++)
{
printf(" %u -я зарплата: ",i+1); scanf("%u", &Salary[i]);
27
s = s+Salary[i];
}
/* Цикл вывода в строку */
for(i = 0; i< n; i++)
printf( "%u \t \n",Salary[i]); /*При выводе разделяем числа символами табуляции */
printf("Сумма зарплат равна %u: \n", s);
rewind(stdin); /* рекомендуется вызывать перед использованием фунций символьного ввода из стандартного файла ввода */
getchar(); |
/* Задержка экрана пользователя */ |
} |
|
Весьма часто приходится сталкиваться с задачей упорядочения числовых массивов, т. е. расположения элементов исходного набора данных в порядке возрастания или убывания. Эта задача, поставленная в общем виде, называется задачей сортировки.
Сортировка перегруппировка заданного множества объектов в некотором определенном порядке. Цель сортировки облегчить поиск отдельных элементов в таком отсортированном множестве (телефонная книга, оглавление книги, библиотеки, словари, склады и т. д.).
Основным условием алгоритма сортировки обычно является экономное использование доступной памяти: перестановки должны выполняться на том же месте, где расположен исходный массив, и количество дополнительно используемых ячеек памяти должно быть минимально. В качестве примера приведена программа сортировки методом ―пузырька‖ или, по-другому, методом прямого обмена.
Метод основан на поочерѐдном сравнении стоящих рядом элементов массива; если порядок в паре неправилен, элементы меняются местами. Для выполнения такой перестановки требуется одна дополнительная ячейка памяти.
Ниже приведен листинг программы сортировки по убыванию числового одномерного массива, написанный на языке Си.
28
/* Программа сортировки методом пузырька */
#include <stdio.h> #include <stdlib.h>
int main()
{
int i, j, j1, n, n1; double t, x[1000];
printf("Введите длину последовательности: "); scanf("%d", &n);
for(i = 0; i< n; i++)
{
printf(" Введите %d -й элемент: ", i); scanf("%lf", &x[i]);
}
printf("Для запуска сортировки нажмите (Enter)"); getchar();
n1= n-1;
for(i = n-1; i>=0; i--) for(j = 0; j<i; j++)
{
j1 = j+1;
if (x[j] < x[j1])
{ /* перестановка элементов */ t = x[j];
x[j] = x[j1]; x[j1] = t;
}
}
printf("Сортировка закончена. Перед просмотром результата \ задайте число элементов в строке вывода ");
scanf("%d", &j);
29

for(i = 0; i< n; i++)
{
printf("%8.1lf", x[i]);
if ((i+1)% j == 0) printf("\n");
}
printf("Для завершения нажмите (Enter)");
rewind(stdin); /*рекомендуется вызывать перед использова-
нием
фунций символьного ввода из стандартного файла ввода */ getchar();
return 0;
}
5.2.Задания на одномерный массив
1.Из последовательности чисел а1, а2, ..., аn выбрать отрицательные элементы, подсчитать их число и переписать подряд в массив x.
2.Вычислить компоненты векторов а(а1,а2,...,аn) и b(b1,b2,...,bn) по
формулам |
a arctg |
i 2 |
; |
b i cos(i) |
и вывести на печать. |
|
|||||
|
i |
n |
|
i |
|
|
|
|
|
|
Из векторов a и b получить вектор с(a1, b1, a2, b2, ..., an, bn), компоненты которого пронумеровать по порядку от 1 до 2n.
3.Из последовательности чисел y1, y2, ,…, yn выбрать элементы, делящиеся на 3. Подсчитать их число и вывести их порядковые номера в массиве.
4.Вычислить значения компонент вектора x(x1, x2, …, xn) по формуле
|
arctg |
|
|
|
|
|
|
i 2 |
, если tg(n i) 0, |
||
|
|
|
|||
xi |
|
n 3 |
|||
|
|||||
|
cos i ei cos n , если tg(n i) 0. |
||||
|
|
|
|
|
|
Выбрать из массива x положительные компоненты и переписать их в массив b(b1,b2,...,bn).
5.Из последовательности чисел а1, а2, ..., аn выбрать числа, равные нулю, подсчитать их число, а оставшиеся числа вывести в одну строку.
6.Вычислить компоненты вектора x(x1, x2, …, xn) по формуле xi=a∙sin(0,5∙i)+b∙cos(i-1), где а=2,2, b=-0,4, и вывести на печать. Да-
30