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

1.4 Цикл с предусловием

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

Рассмотрим данную тему на конкретных примерах.

Задание1: На интервале с шагом протабулировать функцию , где t - произвольное число.

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

Постановка задачи: Создать приложение вычисления значений функции z.

Математическая модель представляется так: исходные данные – xn, xk, hx, t, результат – z.

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

Программа: Установите компоненты на форме и измените свойство Caption для каждого компонента. На форму установите новый компонент ListBox, который находится на панели Standart, в соответствии с рисунком 10.

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

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

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

procedure TForm1.Button1Click(Sender: TObject);

var x, xn,xk,hx,t:real;

s:string;

begin

t:=StrToFloat(Edit1.Text);

s:=inputbox('ввод данных','xn','0');

xn:=StrToFloat(s);

s:=inputbox('ввод данных','xk','0');

xk:=StrToFloat(s);

s:=inputbox('ввод данных','hx','0');

hx:=StrToFloat(s);

while x<=xk+hx/2 do

begin

z:=sin(xn*t);

xn:=xn+hx;

ListBox1.Items.Add(FloatToStrF(z,ffFixed,5,3));

end;

end;

Задание2: Вычислить функцию вида

для значений аргумента от a до b с шагом h.

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

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

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

Предварительная работа: При решении этой задачи необходимо использовать циклический процесс, в котором переменная х последовательно принимает значения a,a+h,a+2h,…,a+Nh, где a+Nh=b.

Первое вычисление функции y(x) следует сделать для значения а, поэтому перед входом в цикл зададим переменной x начальное значение:

x:=a;

На каждом проходе цикла после вычисления функции значение переменной х должно возрастать на величину h, что может быть обеспечено оператором:

x:=x+h;

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

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

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

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

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

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

procedure TForm1.Button1Click(Sender: TObject);

var x,y,a,b,h:real;

s:string;

begin

s:=inputbox('ввод данных','a','0');

a:=StrToFloat(s);

s:=inputbox('ввод данных','b','0');

b:=StrToFloat(s);

s:=inputbox('вводданных','h','0');

h:=StrToFloat(s);

x:=a;

while x<b+h/2 do

begin

if (x<1) and (x>=-1) then y:= x/3

else y:=x-0.6667;

ListBox1.Items.Add (FloattoStrf(y,fffixed,10,4));

x:=x+h;

end;

end;

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

В

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

Составить программу вычисления выражения на промежутке [a,b] с шагом h. Значения a, b, h выберите самостоятельно так, чтобы выявить основные особенности поведения функции.

1

2

3

4

5

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

6

7

8

9

10

11

12

13

где х принимает значения в интервале [-1;1] с шагом 0,1

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

14

где х принимает значения в интервале [0;10] с шагом 0,5, значение b задается

15

где х принимает значения в интервале [0;6] с шагом 0,4

16

где х принимает значения 0;0.5;1;…;3, значение а задается

17

где х принимает значения в интервале [0,7;2] с шагом 0,1 а=1,65

18

где х принимает значения в интервале [0,1;1,7] с шагом 0,2 а=0,9

19

где х принимает значения в интервале [2;5] с шагом 0,25

20

где х принимает значения в интервале [0,2;2] с шагом 0,1, t=2.2

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

21

где х принимает значения в интервале [0.2;2] с шагом 0,2, b=1.5

22

где х принимает значения в интервале [0.5;2] с шагом 0,1, a=20.3

23

На интервале с шагом протабулировать функцию , где х - любое действительное число.

24

На интервале с шагом протабулировать функцию , где х - любое действительное число.

25

На интервале и с шагом и протабулировать функцию

26

Для каждого при всех с шагом и вычислить ,х=0.792

27

На интервале с шагом для каждого «b» из интервала с шагом протабулировать функцию.

28

Для каждого с шагом при всех вычислить , причём, если , , иначе .

29

На интервале с шагом определить количество отрицательных значений функции , где а=0.8х, b=2.2х.

30

Для каждого с шагом вычислить значения функции , где начальное значение .