Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Навчально-методичний посібник=Частина 1=.doc
Скачиваний:
31
Добавлен:
28.10.2018
Размер:
1.14 Mб
Скачать

5.2.Обчислення функцій

Наведемо приклади обчислення значень функцій.

Приклад 1. Обчислити значення кусочної функції при заданому значенні аргументу:

Алгоритм має вигляд:

АЛГ Значення функції (дійсн х, у)

АРГ х

РЕЗ у

ПОЧ

вибір

при : у:= - х

при x>0 і x<1: y:=x

при : у:=1

все

ДРУКУВАТИ у

КІН

Мовою Паскаль команду вибору використати не можна, оскільки ця команда не застосовується для роботи із змінними дійсних типів, тому наведемо розв’язання, з використанням команд умовного переходу:

Program znoch_fune;

var x, y, r : real;

begin

write (‘ введіть х: ‘);

readln (x);

if x<=0 then y:= - x;

if (x>0) and (x<1) then y:=x;

if x>=1 then y:=1;

writeln(‘ y= ‘, y);

end.

Зауважимо, що виведення дійсних чисел на екран відбувається у вигляді з плаваючою крапкою. Тому рекомендуємо формувати виведення наприклад так:

writeln (‘y=’, y:8:2);

Пропонуємо читачу спробувати поміняти числа і з’ясувати, що зміниться у виведенні.

Приклад 2. Обчислити значення кусочної функції, заданої на деякому проміжку з кроком h. Інакше кажучи, виконати табулювання функції.

Алгоритм має вигляд:

АЛГ Значення функції (дійсн a, b, h, y)

АРГ a, b, h

РЕЗ у

ПОЧ дійсн х

для х від a до b крок h

пц

якщо x<3

то у:=2х+2

інакше якщо і

то у:=х – 5

інакше у:=х – 7

все

все

ДРУКУВАТИ х, у

кц

КІН

Алгоритм мовою Паскаль:

Program znoch_fune;

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

begin

write (‘ Введіть проміжок для табуляції ‘);

readln (a,b);

write (‘ Введідь крок табулювання ‘);

readln(h);

x:=a; { Надання х початкового значення }

while x<=b do

begin

if x<3 then y:=2*x+2;

if (3<=x) and (x<4) then y:=x – 5;

if x>=4 then y:=x – 7;

writeln(‘x?’ , x:8:2, ‘y?’ , y:8:2);

x:=x+h;

end;

end.

Зверніть увагу, що це розв’язання містить цикл з передумовою (while) *замість циклу для у розв’язанні мовою НАМ. Це зумовлено тим, що у мові Паскаль не можна у циклі for застосувати крок, який дорівнює 1.

Приклад 3. Обчислити значення tgx за формулою:

Алгоритм має вигляд:

АЛГ tgx ( цілий N, дійсн X,Y)

АРГ X, N

РЕЗ Y

ПОЧ цілий m, дійсн U

m=n – 2; U:=N

поки m?1

пц

m:=m – 2

кц

ДРУКУВАТИ Y

КІН

Пояснення до алгоритму

Кожний елемент вкладення обчислюється за рекурентною формулою:

а потім обчислюється остаточне значення:

Рекурентною називають таку формулу, яка дає змогу за попереднім значенням функції одержати поточне.

Як і в попередньому прикладі, розв’язання мовою Паскаль здійснюється на основі циклу з передумовою while:

Program tgx;

var n:integer; u, x, y:real;

begin

write(‘ Введіть х ‘);

readln(x);

n:=51; y:=n;

while n>0 do

begin

n:=n – 2;

y:=n – x*x/u;

end;

y:=x/u;

writeln(‘x=’, x:8:2, ‘tg=’, y:8:2);

end.

ПОЧАТКОВЕ ЗНАЧЕННЯ n ФАКТИЧНО ЗАДАЄ КІЛЬКІСТЬ ПОВТОРЕНЬ У ЦИКЛІ, ТОБТО ВПЛИВАЄ НА ТОЧНІСТЬ ОТРИМАНОГО РЕЗУЛЬТАТУ. РЕКОМЕНДУЄМО СПРОБУВАТИ РОБОТУ ПРОГРАМИ ПРИ РІЗНИХ ЗНАЧЕННЯХ n І ПОРІВНЯТИ ОТРИМАНІ РЕЗУЛЬТАТИ З РЕЗУЛЬТАТАМИ, ОБЧИСЛЕНИМИ ЗА ДОПОМОГОЮ КАЛЬКУЛЯТОРА!

Приклад 4. Обчислити значення функції за формулою:

Алгоритм має вигляд:

АЛГ Значення функції (цілий N , дійсн X, Z)

АРГ N, X

РЕЗ Z

ПОЧ цілий і

Z:=0

для і від 1 до N

пц

кц

ДРУКУВАТИ Z

КІН

Пояснення до алгоритму

Значення функції обчислюється, починаючи з внутрішнього елемента (тобто спочатку обчислюється , потім тощо).

Кожний член вкладення обчислюється за рекурентною формулою:

Для розв’язання цієї задачі можна застосувати цикл для (for), оскільки за його допомогою можна обчислити кількість повторень (від 1 до N з кроком N).

Алгоритм мовою Паскаль:

Program znoch_fune2;

var N, i: integer; x, y: real;

begin

write(‘ Введіть х: ‘);

readln(x);

write(‘ Введіть кількість повторень ‘);

readln(N);

y:=0;

for i:=1 to N do

begin

y:=sqrt(y+x);

end;

writeln(‘y=’, y:8:2);

end.