Программа
{ Полином Ньютона }
CONST QuantityPoint=3; { Количество точек }
TYPE TabFunction=array[(X,Y),1..QuantityPoint] of real;
{ Тип - таблично-заданная функция }
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 Interpolate(F:TabFunction;Arg:real):real; { Интеполяция }
Var i,j,k:word; { Счетчики }
SumK:real; { Буфурная переменная для набора суммы }
SumJ:real; { Сумма отношения }
Product_Xj_Xi,Product_X_Xi:real; { Произведения }
Begin
SumK:=0; { Сброс суммы }
Product_X_Xi:=1; { Сброс произведения }
for k:=1 to QuantityPoint do { Цикл вычисления полинома Ньютона (SumK) }
begin
SumJ:=0; { Сброс суммы }
for j:=1 to k do { Цикл набора SumJ }
begin
Product_Xj_Xi:=1; { Сброс произведения }
for i:=1 to k do { Цикл набора поизведения }
if i<>j then Product_Xj_Xi:=Product_Xj_Xi*(F[X,j]-F[X,i]);
SumJ:=SumJ+F[Y,j]/Product_Xj_Xi { Набор SumJ }
end;
SumK:=SumK+SumJ*Product_X_Xi; { Набор суммы (полином Ньютона) }
Product_X_Xi:=Product_X_Xi*(Arg-F[X,i]) { Набор произведения }
end;
Interpolate:=SumK { Определение функции }
End;
BEGIN
WriteLn; { Пропуск строки }
InputArray(F); { Ввод табличной функции }
WriteLn; { Пропуск строки }
Write('Введите X '); { Вывод приглашения }
ReadLn(PointX); { Ввод X }
WriteLn('F(',PointX:0:2,')=',Interpolate(F,PointX))
{ Вычисление и вывод результата }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию