Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РЕШЕНИЕ ФУНКЦИОНАЛЬНЫХ И ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ.doc
Скачиваний:
25
Добавлен:
25.11.2018
Размер:
4.81 Mб
Скачать

1.6 Цикл с постусловием

Цель: Научиться программировать циклы с неизвестным числом повторений, используя, оператор цикла с последующим условием.

Рассмотрим данную тему на следующих примерах:

Задание1: Вычислить для некоторого значения х с заданной точностью сумму:

Технология выполнения задания

Постановка задачи: Создать приложение вычисления суммы бесконечного ряда y.

Математическая модель представляется так: исходные данные – x, eps, результат – y, a- слагаемое ряда.

Предварительная работа: Обозначим через ак общее слагаемое суммы и найдем рекуррентное соотношение, связывающее ак-1 и ак.

Для этого составим отношение:, из которого получим акк-1*х/к, к=1,2,….

Ясно, что процесс вычисления носит циклический характер: после задания начального элемента суммы а0=1, дальнейшие действия сводятся к многократному вычислению очередного слагаемого и последующему суммированию, то есть нахождению очередного приближения к искомому результату:

а0=1, у= а0;

а10*х/1, у= а01;

а21*х/2, у=а012;

и т.д.

Этот процесс заканчивается, когда очередное слагаемое удовлетворяет условию:

Очевидно, что число повторений этого цикла заранее неизвестно, а его определение равносильно решению поставленной задачи.

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

Одним из способов программирования таких вычислительных процессов является использование оператора цикла с последующим условием. Это оператор имеет вид:

Repeat

A1, A2, …, An

until B .

Здесь repeat и until - служебные слова, А1,А2,…,Аn – последовательность выполняемых в цикле операторов (тело цикла), В – логическое выражение, управляющее повторением цикла.

Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 14.

Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.

Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур.

В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 1 эта часть выглядит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

var x,eps,a,y:real;

k: integer;

begin

x:=StrToFloat(Edit1.Text);

eps:=StrToFloat(Edit2.Text);

k:=1;

a:=1;

y:=a;

repeat

k:=k+1;

a:=a*x/k;

y:=y+a;

until abs(a/s)<=eps;

Label3.Caption:='частичная сумма'+FloatToStrF(y,ffFixed,6,4);

end;

Рисунок 14 - Образец размещения компонент на форме

Задание2: Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

Технология выполнения задания

Постановка задачи: Создать приложение вычисления суммы бесконечного ряда s.

Математическая модель представляется так: исходные данные – x, eps, результат – s, a- слагаемое ряда.

Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 15.

Рисунок 15 - Образец размещения компонент на форме

Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.

Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 2 эта часть выглядит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

var x,eps,a,s:real;

k: integer;

begin

x:=StrToFloat(Edit1.Text);

eps:=StrToFloat(Edit2.Text);

k:=1;

a:=sqr(x)/2;

s:=a;

repeat

k:=k+1;

a:=power(x,2*k)/2*k;

s:=s+a;

until abs(a/s)<=eps;

Label3.Caption:='частичная сумма'+FloatToStrF(s,ffFixed,6,4);

end;

Задание3: Вычислить с заданной точностью бесконечное произведение:

Технология выполнения задания

Постановка задачи: Создать приложение вычисления произведения бесконечного ряда P.

Математическая модель представляется так: k - номер очередного сомножителя, P - произведение k сомножителей, eps – требуемая точность вычислений, результат – P.

Алгоритм решения задачи: запишем алгоритм решения поставленной задачи с помощью блок-схемы (описываем только процедуру вычисления значения функции).

Рисунок 16 - Образец размещения компонент на форме

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента в соответствии с рисунком 16.

Для компонента BitBtn1 (кнопка Закрыть) в инспекторе объектов измените свойство Kind – bkClose.

Двойным щелчком по компоненту Button1 (кнопка Вычислить) автоматически создается в окне кода стандартная структур. В данную структуру впишите часть программы (у каждого варианта своя индивидуальная часть программы). Для задания 3 эта часть выглядит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);

var P,eps:real;

k: integer;

begin

x:=StrToFloat(Edit1.Text);

eps:=StrToFloat(Edit2.Text);

k:=2;

P:=1;

repeat

P:=P*(1-2/(k*(k+1)));

K:=k+1;

until 1/(k*k)<=eps;

Label3.Caption:='P='+FloatToStrF(P,ffFixed,6,4);

end;

Таблица 8 - Индивидуальные варианты лабораторной работы №6

В

Варианты индивидуальных заданий

I. Задание: Вычислить с заданной точностью >0 бесконечную сумму или произведение для выбранного значения х. Проследить за изменением результата при изменении величины eps. Для контроля в некоторых примерах в квадратных скобках приведено или выражение, представляющее данную сумму или произведение, или их табличное значение (при х=1), взятое из справочника.

1

2

3

4

5

6

7

8

9

Продолжение таблицы 8

10

11

12

II. Вычислить бесконечное произведение P при заданном значении х. Для контроля в каждом задании в квадратных скобках приведено точное значение вычисляемого произведения.

13

14

15

16

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

17

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

18

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

19

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

Продолжение таблицы 8

20

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

21

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

22

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

23

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

24

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

25

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

26

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

Продолжение таблицы 8

27

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

28

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

29

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

;

30

Вычислить с точностью >0 сумму бесконечного ряда для выбранного значения 0<х<1:

.