
- •Программирование линейных вычислительных процессов
- •Типы данных
- •Варианты задания.
- •Цель работы
- •Управление выбором действий
- •Контрольные вопросы
- •Варианты задания
- •Программирование циклических процессов с использованием оператора repeat - until
- •Контрольные вопросы
- •Варианты задания
- •Программирование циклических процессов с известным числом повторений цикла
- •Контрольные вопросы
- •Варианты задания
- •Уточнение корня уравнения
- •Контрольные вопросы
- •Варианты задания
- •Программирование вложенных циклических вычислительных процессов
- •Контрольные вопросы
- •Варианты задания
- •Библиографический список
- •Содержание
Контрольные вопросы
Какого типа может быть параметр цикла for?
Получите таблицу истинности для операции x and not y.
Как правильно организовать цикл с параметром?
Как досрочно выйти из цикла for?
Организуйте цикл с параметром, имеющим шаг, равный трем.
Постройте лесенку вверх из цифр, отстоящих на три пробела.
Что делает оператор: for i:=1 to 5 do; write(i);?
Где ошибка: for k:=1 to 5 do begin inc(k); writeln(k*k) end;?
Организуйте вывод на экран первых 5 символов таблицы ASCII.
Как уточнить корень уравнения методом касательных?
Варианты задания
Выполнить соответствующий вариант из задания к работе № 3 с использованием оператора цикла с параметром For.
Лабораторная работа 5
ПРОГРАММИРОВАНИЕ ИТЕРАЦИОННЫХ
ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ
Цель работы
Изучение правил организации итерационных вычислений и использования для этих целей оператора цикла с предусловием while - do.
Методические указания
В вычислительной практике часто приходится иметь дело с повторяющимися вычислениями, результаты которых на очередном витке цикла зависят от результатов вычислений на предшествующем витке. Подобные вычисления называют итерационными, а очередное повторение тела цикла - итерацией. Примерами таких вычислений являются: уточнение с заданной погрешностью корней уравнений, нахождение бесконечных сумм и произведений, численное интегрирование и др. Условием прекращения таких вычислений становится достижение требуемой погрешности. Рассмотрим некоторые частные случаи итерационных вычислений.
Сумма бесконечного ряда
Пусть требуется
определить с абсолютной погрешностью
сумму
бесконечного ряда
.
Если существует некоторое числоS,
к которому стремится предел указанной
суммы при числе слагаемых n,
стремящемся к бесконечности, то говорят,
что ряд сходится к S.
Выражение
описывает общий член ряда. Процесс
вычисления суммы ряда сводится к
циклическому выполнению двух действий:
получение на основании
очередного слагаемого и добавление его
к сумме. Вычисления завершаются, когда
очередное слагаемое становится меньше
заданной погрешности:
.
(1)
Прекращение суммирования по условию (1) гарантирует погрешность не выше заданной в случае знакопеременного ряда. Если же ряд является знакопостоянным, то выполнение условия не гарантирует заданной погрешности, поскольку сумма отбрасываемых (из-за их малости) членов ряда может превысить .
Запись выражения
для
на языкеTurbo
Pascal
обычно не вызывает затруднений. Однако
есть частные случаи, когда выражение
для
содержит целые степени аргументаx
и факториалы.
В этих случаях применяют следующий
прием. Выражают очередное слагаемое
как функцию от предыдущего слагаемого:
или
,
(2)
где
.
(3)
Ниже приведен
алгоритм нахождения суммы бесконечного
ряда с использованием вспомогательной
функции
для конкретного примера.
Пример 1. Вычислить с погрешностью =0,001 для заданного значения аргумента x значение функции sin(x) с помощью ее разложения в ряд:
,
где (2n – 1)! = 123 (2n – 1).
Выразим вспомогательную
функцию
из выражения (3):
.
С ее помощью по формуле (2) будем определять очередное слагаемое t. Первый член ряда находим непосредственно из формулы для общего члена ряда, подставив в нее n = 1. Далее приведен алгоритм решения задачи.
Ввод
(x, )
summa:= 0; t:= x; n:= 2
Пока
summa:= summa + t
t:=
t;
n:= n + 1
Вывод ( summa, sin(x) )
Запишем алгоритм на языке программирования:
program Summa_Ryada;
const
e = 0.001;
var
n: byte;
fi, summa, t, x: real;
begin
writeln(‘Введите x’);
readln(x);
summa:=0; t:=x; n:=2;
while abs(t) > e do begin
summa:=summa + t;
fi:=- x*x/(2*n-2)/(2*n-1);
t:=t*fi;
n:=n + 1
end; {while}
writeln(‘Сумма ряда = ‘, summa);
writeln(‘Учтено ‘, n-1, ‘ слагаемых’);
writeln(‘Синус = ‘, sin(x))
end.
Бесконечное произведение
Бесконечное произведение представляет собой произведение бесконечного числа сомножителей:
.
Если такое
произведение стремится при i
к некоторому пределу P,
то P
называют значением бесконечного
произведения. Если P
конечно и отлично от нуля, то произведение
называют сходящимся, в противном случае
- расходящимся. Если бесконечное
произведение сходится, то
.
Именно это обстоятельство можно
использовать для прекращения циклических
вычислений частичных произведений, а
именно когда очередной сомножитель
станет отличаться от 1 на величину меньше
заданной погрешности.
Разберем правила решения данной задачи
на конкретном примере.
Пример 2. С
погрешностью 0,0001 вычислить значение
числа
с использованием формулы Валлиса:
.
Ввод ()
p:= 1; m:= 4/3; n:= 2
Пока m-1 >
p:= p*m
m:= 4n*n/(4n*n-1); n := n + 1
Вывод (2*p)
В соответствии с приведенным выше алгоритмом имеем:
program Vallis;
const
e = 0.0001;
var
n: byte;
p, m: real;
begin
p:= 1; m:= 4/3; n:= 2;
while m-1 > e do begin
p:= p*m;
m:= 4*n*n/(4*n*n - 1);
end; {while}
writeln(‘Число ПИ = ‘, p*2);
writeln(‘Учтено ’,n-1, ‘сомножителей’)
end.