66529

Интерполирование с помощью многочленов

Лабораторная работа

Информатика, кибернетика и программирование

В соответствии с вариантом исходное уравнение имеет вид: По узлам и соответствующим значениям функции построить интерполяционный многочлен, представив его в виде линейной комбинации значений.

Русский

2014-08-22

369.88 KB

3 чел.

Министерство образования и науки РФ

ФГБОУ ВПО «Тульский Государственный Университет»

кафедра Автоматизированных станочных систем

Интерполирование с помощью многочленов

Отчет по практической работе №3

по курсу «Вычислительная математика»

Выполнил студент гр.220911

Проверил преподаватель

проф. каф. АСС Ямникова О.А.

Тула 2013 г.

Задание

1. Рассчитать значение функции, заданной таблично.

2. Построить график функции на участке интерполирования.

В соответствии с вариантом исходное уравнение имеет вид:

По узлам и соответствующим значениям функции построить интерполяционный многочлен, представив его в виде линейной комбинации значений .

Согласно формуле (5) имеем

Разложив определитель по элементам 1-го столбца, получим

Учитывая, что

,

окончательно находим

Построить график функции на участке .

Теоретическая часть

Рассмотрим задачу интерполирования функции f с помощью алгебраических многочленов. В этом случае аппроксимирующая функция имеет вид

. (1)

Выбор конкретного значения n во многом определяется свойствами аппроксимируемой функции, требуемой точностью, а также узлами интерполирования. На выбор величины n существенное влияние оказывает и вычислительный процесс, привносящий в результат дополнительную погрешность.

В качестве критерия согласия принимается условие совпадения и f в узловых точках. Для однозначного определения n+1 коэффициентов многочлена необходимо потребовать совпадения f и необходимо потребовать совпадения f и в (n+1)-й узловой точке:

  (i = 0,1,…,n) (2)

Многочлен , удовлетворяющий условиям (2), называется интерполяционным многочленом.

Итак, рассмотрим следующую задачу интерполирования. На сетке в узлах заданы значения (i = 0,1,…,n) функции f. Требуется построить интерполяционный многочлен , совпадающий с f в узлах заданны значения (i=0,1,….,n) функции f  и оценить погрешность .

 Из условий для определения неизвестных коэффициентов многочлена получаем систему алгебраических уравнений

 (i=0,1,…,n) (3)

Определитель этой системы

(4)

есть определитель Вандермонда, который отличен от нуля при условии при .

Коэффициенты  интерполяционного многочлена (1) можно определить, положив в системе (3) и решив ее.

Подставив полученные значения коэффициентов в равенство (1), приходим к новой форме представления интерполяционного многочлена :

(5)

На практике обычно используются интерполяционные многочлены первой и второй степеней. При этом говорят о линейной и квадратичной интерполяции.

Описание входной и выходной информации

Входные данные:

А – начало интервала, переменная типа real

В – конец интервала, переменная типа real

n – степень многочлена, переменная типа integer

x* - произвольное значение из [a;b],переменная типа real

Выходные данные:

y – значение интерполяционного многочлена y* в точке x*, переменная типа real;

ix – вектор значений x на отрезке [a;b], одномерный массив типа real;

iy – вектор значений функции y(x), одномерный массив типа real

Схема алгоритма

Рисунок 1 – Схема основной программы

Рисунок 2 – Продолжение схемы основной программы

Рисунок 3 – Продолжение схемы основной программы

Рисунок 4 – Продолжение схемы основной программы

Рисунок 5 - Продолжение  схемы основной программы


Рисунок 6 – Схема полинома

Текст программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, TeeFunci;

type

 TForm1 = class(TForm)

   lbl1: TLabel;

   lbl2: TLabel;

   lbl3: TLabel;

   lbl4: TLabel;

   edt1: TEdit;

   edt2: TEdit;

   edt3: TEdit;

   lst1: TListBox;

   Button1: TButton;

   Button2: TButton;

   lst2: TListBox;

   cht1: TChart;

   lbl5: TLabel;

   lbl6: TLabel;

   lbl7: TLabel;

   edt4: TEdit;

   Series1: TLineSeries;

   Series2: TLineSeries;

   lnsrsSeries3: TLineSeries;

   adtfnctnTeeFunction1: TAddTeeFunction;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

uses math;

procedure TForm1.Button1Click(Sender: TObject);

type mas=array [1..100,1..100] of Real;

var masA ,h :mas;

ix,iy ,Ar: array [1..100] of Real;

a,b,ih,d,hag,x1,s1,xz:Real;

n,i,kt,j,k,l:Integer;

function pol(x:real):Real;

var

 z,s:Real;

 i:integer;

begin

 s:=ar[kt];

 z:=x;

 for i:=n downto 1 do

 begin

 s:=s+ar[i]*z;

 z:=z*x;

 end;

 pol:=s;

end;

 // расчет определителя

function det(a1:mas; n:integer):real;

var y:real;

m:mas;

i,j,k,z:integer;

begin

y:=0; z:=1;

if n>2 then

for j:=1 to n do

begin

for i:=2 to n do

for k:=1 to n do

begin

if k<j then

m[i-1,k]:=a1[i,k];

if k>j then

m[i-1,k-1]:=a1[i,k];

end;

y:=y+z*a1[1,j]*det(m,n-1);

z:=-z;

end

else y:=a1[1,1]*a1[2,2]-a1[2,1]*a1[1,2];

det:=y;

end;

begin

Lst1.Items.Clear;

Lst2.Items.Clear;

lbl7.Caption:=('');

Form1.Series1.Clear;

Form1.Series2.Clear;

Form1.lnsrsSeries3.Clear;

a:=StrToFloat(edt1.Text);

b:=StrToFloat(edt2.Text);

n:=StrToInt(edt3.Text);

xz:=StrToFloat(edt4.Text);

    // определяем интервал

if ((a<-4) or (b>0)) then  MessageDlg('Ошибка! Введите другие значения', mtInformation, [mbOK], 0)

else

 begin

 if b>a then

 begin

 kt:=n+1;   //кол-во узлов в сетки

 ih:=(b-a)/n;//шаг сетки,где n кол-во интервалов

 ix[1]:=a;

 ix[kt]:=b;  // значение b равно кол-ву узлов сетки

 iy[1]:=(a*a+4*sin(a)); // просчитываем значения сетки(у)

 iy[kt]:=(b*b+4*sin(b));

 for i:=2 to n do

 begin

 ix[i]:=ix[i-1]+ih; //просчитываем х[i] с учетом шага

 iy[i]:=(ix[i]*ix[i]+4*Sin(ix[i]));

 end;

 end

 else MessageDlg('ошибка', mtInformation, [mbOK], 0);

  //вывод значения точек в листинг 1

for i:=1 to kt do

Lst1.Items.Add ('x'+FloatToStr(i-1)+' = ' + floatToStrF(ix[i],ffFixed,8,4) + '    y = ' + FloatToStrF(iy[i],ffFixed,8,4));

for i:=1 to kt do

begin

masA[i,kt]:=1;

for j:=n downto 1 do

begin

masA[i,j]:=masA[i,j+1]*ix[i];

end;

end;

for i:=1 to kt do

for j:=1 to kt do

h[i,j]:=masA[i,j];

  //считаем определитель,если =0 выходим,если нет a[i]=Ar[j]

d:=det(masA,kt);

if d=0 then Exit else

begin

 for j:=1 to kt do

 begin

   for i:=1 to kt do

   h[i,j]:=iy[i];

   Ar[j]:=det(h,kt)/d;

   for l:=1 to kt do

   for k:=1 to kt do

   h[k,l]:=masA[k,l];

 end;

 for j:=1 to kt do

 lst2.Items.Add('A'+floattostr(j)+' = '+floattostrF(Ar[j],ffFixed,8,4));

end;

hag:=(b-a)/99;

x1:=a;

for i:=1 to 100 do

begin

Series1.AddXY(x1,x1*x1+4*Sin(x1),'');

Series2.AddXY(x1,pol(x1),'');

x1:=x1+hag;

end;

for i:=1 to kt do

begin

lnsrsSeries3.AddXY(ix[i],iy[i],'');

end;

s1:=Pol(xz);

lbl7.Caption:=FloatToStrF(s1,ffGeneral,8,4);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.close;

end;

end.

Результат работы программы


 

А также другие работы, которые могут Вас заинтересовать

42537. ИССЛЕДОВАНИЕ ИСТОЧНИКОВ И СПОСОБОВ ОСЛАБЛЕНИЯ ПРОИЗВОДСТВЕННОГО ШУМА 9.42 MB
  Шум представляет собой сочетание звуков, различных по частоте и интенсивности в частотном диапазоне 16-20000 Гц, не несущих полезной информации. В каждой точке пространства, в котором распространяются звуковые волны, давление и скорость движения частиц воздуха изменяются во времени. При колебаниях частиц воздуха, вызванных прохождением звуковой волны, возникает избыточное (относительно атмосферного) давление, называемое звуковым давлением Р, Па
42538. Побудова системи масового обслуговування з втратами та без очікування 23 KB
  Кількість обслуговуючих пристроїв Кг де Кг кількість голосних букв в Вашому прізвищі. Процедура розподілу потоків поміж обслуговуючими пристроями: Якщо Кп – парне, то – рівномірно на всі пристрої, якщо Кп – непарне, то спочатку спроба на перший пристрій, при занятості на другий і т.д.
42539. Понятие социального действия. Социальное взаимодействие 15.4 KB
  Социальное действие - действие человека (независимо от того, носит ли оно внешний или внутренний характер, сводится к невмешательству или к терпеливому принятию), которое по предполагаемому действующим лицом или действующими лицами смыслу соотносится с действием других людей или ориентируется на него
42540. Концепция общества. Общество как система 15.77 KB
  Социальная система - структурный элемент социальной реальности, определенное целостное образование, основными элементами которого являются люди, их связи и взаимодействия.
42541. Принципы типологии общества. Типы общества 16.21 KB
  Традиционное общество — это общество с аграрным укладом, малоподвижными структурами и способом социокультурной регуляции, основанном на традициях (традиционное общество). Поведение индивидов в нем строго контролируется, регламентируется обычаями и нормами традиционного поведения, устоявшимися социальными институтами
42542. Первині засоби пожежегасіння та дослідження якості вогнегасних речовин 37 KB
  В комплексі заходів спрямованих на ліквідацію пожежі що використовуються в системі протипожежного захисту важливе значення має вибір найбільш раціональних способів та засобів припинення горіння згідно зі СниП 2. Існують такі основні способи припинення горіння : Охолодження зони горіння або речовини що горять нижче певних температур. Ізоляція вогнища горіння від повітря. Хімічне гальмування інгібування швидкості реакцій окислення горіння у полумї.
42543. Імітаційна модель CALL-центру 29 KB
  Вихідні дані Кп кількість букв у Вашому прізвищі 5. Кг кількість голосних букв в Вашому прізвищі 2. Кприг кількість приголосних букв в Вашому прізвищі 3. Кількість операторів = Кп = 5 Обробка викликів надання відповіді користувачеві розподіляється за законом Паретто.
42544. КОНТРОЛЬ ПАРТИИ ИЗДЕЛИЙ, ВЫБОР ОРГАНИЗАЦИОННОЙ СТРУКТУРЫ 893.5 KB
  Бригады получают конкретное задание детально знакомятся с постановкой задачи разбивают ее на простейшие выясняют тип распределения контролируемого параметра и определяют его числовые вероятностные характеристики.
42545. Разработать Windows Forms приложение - программу-калькулятор дробей 44 KB
  не имеют общих делителей то дробь называется несократимой; любая дробь может быть представлена к несократимой если её числитель сократить на их наибольший общий делитель Hog наибольшее натуральное число на которое они оба делятся без остатка; две любые дроби b и c b считаются равными если d=bc; две несократимые дроби считаются равными если равны их числители и знаменатели =c и b=d. Умножение: W W'={U U'V V'} W=U d1V d2 и W'=U' d2V' d1 где d1=HogUV' и d2=HogU' V. Деление: W W'={U U' V...