Программа
CONST QuantityPoint=3; { Количество точек }
TYPE TabFunction=array[(X,Y),1..QuantityPoint] of real; { Тип - таблично-заданная функция }
CONST F:TabFunction=((1.1,1.3,1.7),(2.1,-2.1,2.1));
{ Типизированная константа - таблично заданная функция }
Var (* F:TabFunction; { Функция } *)
PointX:real; { Аргумент }
(*
PROCEDURE InputArray (var B:TabFunction); { Процедура ввода таблицы функции }
Var i:word; { Счетчик }
Begin
for i:=1 to QuantityPoint do { Цикл ввода элементов таблицы функции }
begin
Write('Введите точку (X',i,',Y',i,') ');
{ Вывод приглашения ввести элемент таблицы функции }
ReadLn(B[X,i],B[Y,i]) { Ввод элемента таблицы функции }
end
End;
*)
FUNCTION Lag(F:TabFunction;PointX:real;i:word):real;
{ Функция формирования сомножителя для интерполяционного полинома }
Var k:word; { Счетчик }
Product:real; { Буфурная переменная для набора произведения }
Begin
Product:=1; { Начальное определение сомножителя }
for k:=1 to QuantityPoint do { Цикл набора проиэведения }
if k<>i then Product:=Product*(PointX-F[X,k])/(F[X,i]-F[X,k]);
{ исключение из произведения точки k=i }
Lag:=Product { Определение значения функции }
End;
FUNCTION Interpolate(F:TabFunction;X:real):real; { Интеполяция }
Var i:word; { Счетчик }
Sum:real; { Буфурная переменная для набора суммы }
Begin
Sum:=0; { Сброс суммы }
for i:=1 to QuantityPoint do Sum:=Sum+F[Y,i]*Lag(F,X,i);
{ Набор суммы (полином Лагранжа) }
Interpolate:=Sum { Определение функции }
End;
BEGIN
WriteLn; { Пропуск строки }
(*
InputArray(F); { Ввод табличной функции }
WriteLn; { Пропуск строки }
*)
Write('Введите X '); { Вывод приглашения }
ReadLn(PointX); { Ввод X }
WriteLn('F(',PointX:0:2,')=',Interpolate(F,PointX))
{ Вычисление и вывод результата }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию