Программа вычисления многочлена Лагранжа
Пример программы на языке Паскаль: по заданному набору точек вычислить коэффициенты интерполяционного многочлена
Лагранжа.
{ Полином Лагранжа }
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 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.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию