Ответ:
PascalABC.NET 3.6.2
#1
begin
var func: real -> real := x -> (x**2 - 11) / (4*x - 3);
PartitionPoints(-6, 0.6, 27).Tabulate(p -> func(p)).Println; //Шаг - 0.2, значит диапазон [-6; 0.6] нужно разбить на 27 частей
end.
#2
begin
var func: real -> real := x -> (x**2 - 5) / (sqrt(x**2 - 2));
PartitionPoints(3, 12, 45).Tabulate(p -> func(p)).Println; //Шаг - 0.2, значит диапазон [3; 12] нужно разбить на 45 частей
end.
#3
begin
var func: real -> real := x -> sqrt((x + 1)**2) - sqrt(x);
PartitionPoints(1, 10, 45).Tabulate(p -> func(p)).Println; //Шаг - 0.2, значит диапазон [1; 10] нужно разбить на 45 частей
end.
Объяснение:
Функция PartitionPoints(start, stop, n) возвращает числовую последовательность вещественных чисел, значений в точках разбиения интервала [start; stop] на n равных частей.
Метод Tabulate(F: T -> T1) К числовой последовательности применяет функцию F, и возвращает последовательность кортежей Tuple, где T - значение аргумента, T1 - значение функции F для каждого T элемента последовательности
var func: T -> T1 := x -> действие_с_x; - объявление лямбда-функции, где: var - ключевое слово, указывающее на объявление переменной, func - имя лямбда-функции, по которому она будет доступна в дальнейшем. T -> T1 (Некий тип переходит в некий тип1) - описание типов входных и выходных данных для функции. В данном примере - обобщённо. x -> действие_с_x - тут понятно. Слева от стрелки локальное имя входящего аргумента, справа от стрелки - вычисления, производимые с этим аргументом. Лямбда-функция возвращает значение, получаемое в результате действие_с_x.