якраз тим, який нам і потрібен, оскільки це поліном ступеня не вище n і Ln (xk)=yk для всіх k=1,2, ..., n + 1.
Функції Фn (x) будуються легко. Дійсно, функція
є поліномом ступеня n, який звертається в нуль для всіх xj не дорівнює xk. У точці xk вона приймає значення
Тоді
або, що те ж саме:
. Постановка завдання
Вихідні дані:
таблиця значень довільних функцій.
Необхідно побудувати аналітичне вираз, який зіставить значення з таблічнозаданнимі в деякому кінцевому кількості точок.
Точки, за якими буде проводитися побудова функцій, називаються
вузлами інтерполювання, а саме отриманий вираз - інтерполяційним многочленом. Існує кілька способів інтерполяції функцій:
1) Параболічне інтерполювання.
2) Інтерполяція на основі спеціально обумовлених поліном.
При інтерполяції методом Ла-Гранжа функція будується на основі базису xn, де n=0, 1, 2, ....
, де
Фk (x) - базисна функція.
3. Алгоритм задачі (схема Насс-Шнайдерман)
Введення значень функцій x, yL=0i є [1, N] Lg=1j є [1, N] i!=jLg=(Lg * (x - x [j]))/( x [i] - x [j]) j=j + 1L=L + y [i] * Lgi=i + 1
4. Текст програми
. h
//---------------------------------------------------------------------------
# ifndef Unit1H
# define Unit1H
//---------------------------------------------------------------------------
# include lt; Classes.hpp gt;
# include lt; Controls.hpp gt;
# include lt; StdCtrls.hpp gt;
# include lt; Forms.hpp gt;
# include lt; Chart.hpp gt;
# include lt; ExtCtrls.hpp gt;
# include lt; Grids.hpp gt;
# include lt; Series.hpp gt;
# include lt; TeEngine.hpp gt;
# include lt; TeeProcs.hpp gt;
//--------------------------------------------------------------------------- TForm1: public TForm
{
__ published://IDE-managed Components*StringGrid1;*Chart1;*Edit1;*Label1;*Series1;*Series2;*Button1;*Button2;*Button3;__fastcall Button3Click (TObject * Sender); __ fastcall Button1Click (TObject * Sender); __ fastcall Button2Click (TObject * Sender) ;://User declarations://User declarations
__ fastcall TForm1 (TComponent * Owner); Langrang (double * x, double * y, double xt, int N)
{L, Lg; i, j;=0; (i=0; i lt; N; i ++)
{= 1; (j=0; j lt; N; j ++)
{(i!=j) *=(xt-x [j])/(x [i] -x [j]);
}=L + y [i] * Lg;
} L;
}
};
//--------------------------------------------------------------------------- PACKAGE TForm1 * Form1;
//---------------------------------------------------------------------------
# endif.cpp
//---------------------------------------------------------------------------
# include lt; vcl.h gt;
# pragma hdrstop
# include Unit1.h
//---------------------------------------------------------------------------
# pragma package (smart_init)
# pragma resource *. dfm * Form1;
//---------------------------------------------------------------------------
__ fastcall TForm1 :: TForm1 (TComponent * Owner)
: TForm (Owner)
{
}
//---------------------------------------------------------------------------__fastcall TForm1 :: Button3Click (TObject * Sender)
{- gt; Cells [0] [0]= x raquo ;; - gt; Cells [1] [0]= y raquo ;; - gt; RowCount=StrToInt (Edit1 - gt; Text) + 1; - gt; Visible=true;
}
//---------------------------------------------------------------------------__fastcall TForm1 :: Button1Click (TObject * Sender)
{i; (i=1; i lt;=...