logo
Методичка_Delphi_Ч1

Табулирование значений функций

Одной из достаточно распространенных задач, в которых используются циклы, является задача табулирования значений некоторой функции. Суть задачи заключается в том, что необходимо изменять аргумент функции от некоторого начального значения до конечного значения с некоторым шагом и для полученных значений аргумента вычислять значения функции. Эту задачу можно решать с помощью цикла whiledo, в котором параметр цикла будет последовательно увеличиваться на величину шага. Однако такой подход считается не совсем правильным. Обычно аргументы функций – вещественные числа, которые в памяти машины записываются с некоторой погрешностью. При многократном суммировании таких чисел погрешность накапливается и может стать заметной при большом количестве циклов. Поэтому при табулировании функций удобнее использовать цикл for, в котором параметром является целочисленный номер строки таблицы. Строки таблицы удобно считать пронумерованным с 0, тогда приращение аргумента на каждом шаге можно определять путем умножения шага на номер строки. Ошибка при этом не накапливается.

Ниже приведен фрагмент программы табулирования функции sin(x)

// Обьявляем внутренние переменные процедуры

var x0, x, xMax : real; // Начальное (х0), текущее (х) и конечное (xMax)

// значения аргумента

y : real; // Текущее значение функции

k : integer; // Номер последней строки в таблице

i : integer; // Параметр цикла ( номер текущей строки в таблице)

s : string; // Строка таблицы

begin

k:= round((xMax-x0)/step); // Округляем число строк до целого значения

for i:=0 to k do

begin

x := x0 + step * i; // Очередное значение х

y := sin(x);

s := ‘x=’ + floatToStr(x) + ‘ y =’ + floatToStr(y)

memo1.Lines.Append(s);

end;

end;