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.

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


 

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

76796. Строение миокарда 183.83 KB
  Проводящая система сердца. В предсердиях и желудочках образуется разное количество слоев с неодинаковым расположением и направлением мышечных волокон сократительных кардиомиоцитов которые начинаются от мягкого соединительнотканного скелета сердца. В сократительном миокарде желудочков различаются: общий поверхностный слой с косо ориентированными волокнами начинающимися от фиброзных колец и уходящими в верхушку сердца где они образуют завиток вортекс и плавно переходят во внутренний слой; средний слой из круговых волокон являющийся...
76797. Сосуды и нервы сердца 180.54 KB
  Они венцом окружают основание сердца отчего нередко называются венечными. Левая венечная артерия проходит между началом легочного ствола и левым ушком и передней межжелудочковой ветвью спускается к верхушке сердца а огибающей ветвью по венечной борозде и задней поверхности. Наиболее выраженные и постоянные анастомозы находятся: в верхней части передней стенки правого желудочка; в передней стенке левого желудочка по левому краю; в верхушке сердца задней межжелудочковой борозде и межжелудочковой перегородке; в стенках предсердий.
76798. Сосуды большого круга 180.76 KB
  Аорта на всем протяжении делится на париетальные и висцеральные ветви и заканчивается бифуркацией на общие подвздошные артерии на уровне IVVго поясничных позвонков. Из ее париетальных и висцеральных ветвей возникают экстра и интраорганные артерии которые подходят к органам как правило с медиальной стороны используя кратчайшие пути. В части паренхиматозных органов: легких печени селезенке почке артерии разветвляются в соответствии с делением на доли сектора сегменты и более мелкие части вплоть до структурнофункциональных единиц ...
76799. Бедренный канал 180.44 KB
  Глубокое кольцо бедренного канала находится в медиальной части сосудистой лакуны под паховой связкой и ограничено: сверху паховой связкой у места прикрепления ее к лобковому бугорку и симфизу; снизу лобковым гребнем и покрывающей его гребенчатой связкой; медиально лакунарной связкой заполняющей внутренний угол сосудистой лакуны; латерально стенкой бедренной вены. В практике хорошо прощупываемая паховая связка выступает как важный клиникоанатомический ориентир позволяющий отличить бедренную грыжу от паховой так как бедренный...
76800. Медиальные и задние мышцы и фасции бедра 180.94 KB
  Медиальная бедренная мышечная группа Хорошо развита в связи с прямохождением и выполняет приведение бедра потому в основном укомплектована приводящими мышцами. Длинная приводящая мышца начинается толстым сухожилием от лобковой кости между гребнем и симфизом. Мышца лежит погранично с медиальной широкой из четырехглавой мышцы бедра. Короткая приводящая мышца с началом от тела и нижней ветви лобковой кости прикреплением к верхнему участку тернистой линии бедренной кости; приводит и сгибает бедро.
76801. Мышцы и фасции голени и стопы 190.57 KB
  Передняя мышечная группа голени Передняя большеберцовая мышца с началом от латерального мыщелка верхнелатеральной поверхности диафиза большеберцовой кости и межкостной мембраны. Мышца в голеностопном суставе разгибает и поворачивает стопу кнаружи поднимает ее медиальный край укрепляет продольный свод его пружинящую часть. От нижней части мышечного брюшка отходит в виде небольшого пучка третья малоберцовая мышца прикрепляющаяся к основанию Y плюсневой кости. Латеральная мышечная группа голени Длинная малоберцовая мышца начинается от...
76802. Развитие пищеварительной системы 184.66 KB
  Они расположены на боковых стенках головной кишки соответственно на уровне формирующейся глоточной камеры поэтому данную часть кишки называют глоточной. Передний отдел ротовой полости возникает из эктодермальных зачатков задний глубокий развивается из энтодермы глоточной кишки. Глотка развивается из краниального отдела первичной кишки путем превращения основной глоточной камеры зародыша в глотку растущего плода при отделении от нее глоточных висцеральных карманов.
76803. Полость рта 192.32 KB
  Через зев полость рта переходит в глотку. Мощная круговая мышца рта вместе с конечными частями мимических мышц смеха поднимающих и опускающих губы и угол рта все мышечные волокна вплетаются в кожу губ. Уздечки губ срединная и боковые это индивидуально выраженные складки слизистой оболочки короткие средние длинные расположенные в преддверии рта между резцовыми участками слизистой оболочки губ и деснами.
76804. Строение зубов 198.51 KB
  Зубы являются органами жевательноречевого аппарата человека и состоят из передних резцов и клыков задних малых и больших коренных зубов. Самый сложный рельеф несет поверхность смыкания зубов антагонистов окклюзионная которая у передних зубов представлена зубчатым режущим краем. Коронки передних и задних зубов сильно отличаются по форме: у резцов они прямоугольные трапециевидные или овоидные у клыков копьевидные у премоляров ромбические и квадратные у моляров кубические и прямоугольные.