Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GLAVA_10_Algoritmy_i_programmy.doc
Скачиваний:
10
Добавлен:
22.09.2019
Размер:
798 Кб
Скачать
☆

Input "Введите натуральное м : " , m

F0 = 1 : F1 = 1

PRINT "Числа Фибоначчи, не превосходящие "; M ; " : " ; F0 ; F1 ;

IF M < 3 THEN

S =M;

ELSE

S = 2 : F2 = 2;

WHILE F2 < M

PRINT F2;

S=S+F2

F0=F1 : F1=F2

F2=F0+F1

WEND

END IF

Print : print "о т в е т : Сумма этих чисел равна "; s

END

Упражнения.

1. Определите значение целочисленной переменной S после выполнения операторов алгоритмического языка:

а) в)

S:=1; a:=1 а:=1; b:=1; S:=0;

нц для i от 1 до 3 нц пока a<=5

S:=S+i*(i+1)*a a:=a+b; b:=b+a;

a:=a+2 S:=S+a+b

кц кц

б) г)

S:=128 S:=0; i:=1; j:=5

нц для i от 1 до 4 нц пока i<j

S:=div(S,2) S:=S+i*j

Кц i:=i+1

j:=j-1

кц

2. Для заданного N составить программу вычисления:

а) S = 1+2+3+...+N

b) P = 1. 2 . 3 . ... .N

3.Для заданной последовательности чисел xi , где i меняется от 1 до N, составить программу вычисления суммы:

S = x1 + 2 x2 + 3 x3 + ... + N xn

4. Для заданных x и n составьте программу вычисления:

a) St = xn

b) S = 1+ x + x 2+ x3 +... + xn

Составить программы для решения задач 5-8.

5. В заданной последовательности из N чисел подсчитайте количество и сумму положительных, количество и произведение отрицательных чисел.

6. В заданной последовательности из N чисел вычислите сумму квадратов всех чисел, за исключением, кратных пяти.

7. В заданной последовательности из N чисел, которые попарно различны, найдите:

а) наибольший элемент из отрицательных;

б) наименьший элемент из положительных;

8. В заданной последовательности из N чисел определите число соседств:

а) двух положительных чисел;

б) двух чисел разного знака;

6.9. Итерационные циклы

Особенностью итерационного цикла является то, что число повторений операторов тела цикла заранее неизвестно. Для его организации используется цикл типа ПОКА. Выход из итерационного цикла осуществляется в случае выполнения заданного условия.

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

Задача 6.11. Составить алгоритм вычисления sin x с помощью ряда:

Y = sin x = x – x3 / 3! + x5 / 5! - … + (-1 )n x 2n+1 / (2n+1)!

с заданной точностью e. Для данной знакочередующейся бесконечной суммы требуемая точность будет достигнута, когда очередное слагаемое станет по абсолютной величине меньше e.

Вычисление сумм — типичная циклическая задача. Особенность задачи 6.11. в том, что число повторений тела цикла, т.е. число слагаемых, заранее неизвестно. Поэтому выполнение цикла должно завершиться в момент достижения требуемой точности.

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

a0 =x a1 = - x3 /3! = -a0 * x2 /(2*3) (3!=1*2*3)

a2 = + x5 /5! = -a1 * x2 /(4 * 5) … (5!=1*2*3*4*5=3!*4*5)

an = - an-1 * x2 / (2*n*(2*n+1))

Коэффициент для пересчета слагаемого можно получить, если an разделить на an-1 и преобразовать формулу:

an = (-1 )n x 2n+1 / (2n+1)! = -1 x 2n+1 / (2n-1)! = - x 2

an-1 (-1 )n-1 x 2(n-1)+1 / (2(n-1)+1)! x 2n-1 / (2n+1)! 2n(2n+1)

Тест: Вход x=1.57 e=0.00001

Выход y= 1.000004 sin x = 1.000000

Решение задачи 6.11. на языке Turbo Pascal:

Program PR_sinX;

Var E, {заданная точность}

x, {заданный аргумент функции sin }

a, {очередной член ряда - слагаемое}

y : Real; {сумма ряда}

n : Integer; {номер итерации}

BEGIN

Write(’Введите аргумент функции : ’);

ReadLn(x);

Write(’Введите точность : ’);

ReadLn(E);

y:=0; a:=x; n:=0;

While abs(а) >=E do begin

y:=y + a;

n:=n + 1;

a:=-a*x*x/(2*n*(2*n+1));

end;

WriteLn(’О т в е т : y= ’, y);

WriteLn(’О т в е т : sin x= ’, sin(x));

ReadLn

END.

Пояснения к программе:

1) Оператор цикла

While abs(а) >=E do begin

….

end;

обеспечивает вычисление суммы ряда, пока модуль очередного слагаемого больше или равен заданной точности Е.

2) Перед выполнением цикла переменным присваиваются начальные значения:

начальное значение суммы y:=0;

начальный номер итерации n:=0;

значение первого слагаемого a:=x;

В теле цикла вычисляется сумма ряда y:=y + a;

увеличивается номер итерации n:=n + 1;

пересчитывается слагаемое a:=-a*x*x/(2*n*(2*n+1));

3) Оператор WriteLn(’О т в е т : y= ’, y); выводит значение суммы ряда y, а оператор WriteLn(’О т в е т : sin x= ’, sin(x)); - значение полученное с помощью стандартной функции sin (x). Если алгоритм вычисления верен, эти значения совпадут.

Упражнения.

1. Составить программу вычисления cos x с помощью ряда:

Y = cos x = 1 – x2 / 2! + x4 / 4! - … + (-1 )n x 2n / (2n)! + …

с заданной точностью e.

2. Составить программу вычисления ex с помощью ряда:

Y = ex = 1 + x + x2 / 2! + x3 / 3! - … + x n / n! + …

с заданной точностью e.

3. Составить программу вычисления ln(x+1) с помощью ряда:

Y = ln(x+1) = x - x2 / 2 + x3 / 3 - … +(-1 )n-1 x n-1 / n + …

с заданной точностью e, где |x| <1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]