четвер, 11 січня 2018 р.

Алгоритми табулювання функцій

Задачі на створення таблиць значень функцій

У цих задачах потрібно обчислити значення функції на якомусь інтервалі з відомим постійним кроком. Крок - це різниця між значеннями аргументу, для яких обчислюється значення функції.

Приклад 1

Знайти значення функції y=x2 у інтервалу [10, 20] з кроком 1. Це означає, що необхідно обчислити значення функції для: x=10, 11, 12,…20.
Цю програму можна написати використовуючи алгоритм попереднього завдання. Це можна, тому що крок в цій задачі дорівнює 1 та співпадає з зміною параметра циклу. Заголовок циклу у нас буде for x:=10 to 20 do, і зміна значення аргументу буде виконуватись автоматично, у заголовку циклу.

Програма

ПрограмаПояснення
 var x,y:integer;
begin
 for x:=10 to 20 do
 begin
   y:=sqr(x);
   writeln(x,y:5);
 end;
end.
У цій програмі використовується форматований вивід цілих чисел. Для цілого числа y відводиться 5 позицій, а саме число займає 3 позиції. Тому зліва воно доповнюється двома пробілами і між значенням аргументу і значенням функції буде два пробіли.

Результати роботи програми

Екран
10 100
11 121
12 144
13 169
14 196
15 225
16 256
17 289
18 324
19 361
20 400

Приклад 2

Знайдіть значення функції y=x2 для x з інтервалу [2, 3] з кроком 0,1.
Це означає, що необхідно обчислити значення функції для:
x=2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0.
Тобто потрібно обчислити значення функції для 11 значень аргументу.
У загальному вигляді для інтервалу [a, b] та кроку кількість значень аргументу (n) обчислюється за формулою:
n=(b-a)/h+1.
У нас a=2, b=3, h=0,1. Тому n=11.
У цій програмі ми не можемо використовувати попередній алгоритм, тому що крок не співпадає з зміною параметру циклу. Тому зміну значення аргументу будемо виконувати оператором x:=x+h у тілі циклу.

Змінні:

Вхідні:
  • a – ліва границя інтервалу (дійсного типу за умовою)
  • – права границя інтервалу (дійсного типу за умовою)
  • h – крок (дійсного типу за умовою)
Вихідні:
  • y – значення функції (дійсного типу, бо аргумент дійсного типу)
Проміжні:
  • – параметр циклу (цілого типу)
  • x – значення аргументу (дійсного типу, бо крок дійсного типу)
  • n – кількість значень аргументу для яких потрібно обчислити значення функції

Алгоритм

  1. Задамо сталі a, b, h - ліва і права границі інтервалу та крок.
  2. Обчислимо значення n:=round((b-a)/h)+1. Функція round використовується, щоб результат ділення був цілий.
  3. Задамо перше значення аргументу, для якого потрібно обчислити значення функції. Це значення співпадає з лівою границею інтервалу.
  4. У циклі for i:=1 to n do в операторних дужках виконується:
    • обчислення значення функції y для даного значення аргументу x;
    • вивід на екран значень аргументу x (з одним знаком після крапки) та функції y (з двома знаками після крапки). Значення y займає 4 позиції, а йому відводиться 5 позицій, тому між значенням x та буде один пробіл;
    • зміна значення аргументу x:=x+h для обчислення функції на наступному витку циклу.

Програма

 const a=2;b=3;h=0.1;
 var x,y:real; i,n:integer;
begin
 n:=round((b-a)/h)+1;
 x:=a;
 for i:=1 to n do
 begin
   y:=sqr(x);
   writeln(x:3:1,y:5:2);
   x:=x+h;
 end;
end.

Результат роботи програми

Вивід
2.0 4.00
2.1 4.41
2.2 4.84
2.3 5.29
2.4 5.76
2.5 6.25
2.6 6.76
2.7 7.29
2.8 7.84
2.9 8.41
3.0 9.00

Приклад 3

Знайдіть значення функції  для x з інтервалу [2, 3] з кроком 0,1.
У цій програмі можна повністю використовувати попередній алгоритм, але для обчислення значення функції використовуються різні формули в залежності від значення аргументу.

Програма

 const a=2;b=3;h=0.1;
 var x,y:real; i,n:integer;
begin
 n:=round((b-a)/h)+1;
 x:=a;
 for i:=1 to n do
 begin
    if x<2.5 then y:=sqr(x)
             else y:=sqr(x)*x;
    writeln(x:3:1,y:7:2);
    x:=x+h;
 end;
end.

Результат роботи програми

Вивід
2.0   4.00
2.1   4.41
2.2   4.84
2.3   5.29
2.4   5.76
2.5   6.25
2.6  17.58
2.7  19.68
2.8  21.95
2.9  24.39
3.0  27.00

Варіанти задач

Знайдіть значення функції Y на вказаному інтервалі з вказаним кроком:
№ варіантуФункціяІнтервалКрок
1[1, 5]0,25
2[-10, 10]2,5
3[-7, 8]1,5
4[-3, 3]0,5
5[-2, 2]0,25
6[0, 2]0,1
7[0, 12]1,5
8[3, 5]0,2
9[1, 4]0,2
10[-2, 2]0,4
11[-3, 3]0,5
12[0,15]1,5
13[-10,10]2,5
14[-5, 10]1,5
15[-6, 6]1,5
16[-11, 11]2,75

Немає коментарів:

Дописати коментар