ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.04.2021

Просмотров: 399

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

16 

Таблица

 2 

Варианты

задания

точек

, ,

Вариант

1 0,175118  0,715878

0,464331 

2 0,090566  0,826611

0,395142 

3 0,157369  0,826216

0,445135 

4 0,053526  0,866027

0,610308 

5 0,109658  0,710092

0,468515 

6 0,094189  0,755627

0,343888 

7 0,132747  0,755108

0,447232 

8 0,058421  0,731564

0,429815 

9 0,063946  0,907395

0,455020 

10 0,182461  0,717093

0,525286 

11 0,173762  0,759231

0,482714 

12 0,129140  0,766507

0,238812 

Вариант

 2. 

Таблица

 1  

Значения

функции

в

узлах

сетки

Узлы

сетки

Значение

функции

в

узлах

0,0 0,962852
0,1 1,044824
0,2 1,123512
0,3 1,198709
0,4 1,270228
0,5 1,337904
0,6 1,401593
0,7 1,461175
0,8 1,516552
0,9 1,567650

Таблица

 2  

Варианты

задания

точек

, ,

Вариант

1 0,052914  0,882964

0,391986

2 0,147327  0,721404

0,355038

3 0,148489  0,822272

0,544808

4 0,070926  0,901307

0,213966

5 0,124548  0,769617

0,303341

6 0,009510  0,944211

0,417157

7 0,087996  0,778350

0,546174


background image

17 

Продолжение

таблицы

 2

Вариант

8 0,051598  0,709740

0,542017

9 0,083288  0,887929

0,517459

10 0,174607  0,902430

0,240569

11 0,172537  0,819656

0,698720

12 0,160270  0,851787

0,463563


background image

18 

ПРИЛОЖЕНИЕ

  
 

На

первом

этапе

создается

входной

файл

содержащий

значения

функции

в

узлах

интерполяции

 (

эти

значения

берутся

из

табл

. 1) 

и

строится

таблица

конечных

разностей

Значения

этой

таблицы

обозначаются

 fr[i,j] 

и

являются

входными

для

методов

Ньютона

Стирлинга

и

Бесселя

Для

куби

-

ческого

сплайна

создается

новый

входной

файл

 (

содержащий

число

частич

-

ных

отрезков

узлы

интерполяции

и

значения

функции

в

узлах

). 

Для

выполнения

задания

можно

использовать

следующие

процедуры

функции

1. 

Процедура

newt

реализующая

алгоритм

построения

первой

интер

-

поляционной

формулы

Ньютона

function newt(m,k:integer; x:real):real; 
{

Входные

параметры

степень

интерполяционного

многочлена

номер

ближайшего

узла

точка

в

которой

ищем

значение

интерпо

-

ляционного

многочлена

}. 

var 
        i      :integer; 
        y,z,q :real; 
begin  
        y:=fr[k,1]; q:=x*10-k+1; 
        z:=1; 
        for i:=1 to m do begin 
                          z:=z*(q-i+1)/i; 
                          y:=y+z*fr[k,i+1] 
                         end; 
        newt:=y 
end. 

Здесь

число

шагов

необходимое

для

достижения

точки

   

исходя

из

точки

  ; 

2. 

Процедура

stir

реализующая

алгоритм

построения

формулы

Стир

-

линга

function stir(m,k:integer; x:real):real; 
{

Входные

параметры

степень

интерполяционного

многочлена

номер

ближайшего

узла

точка

в

которой

ищем

значение

интерпо

-

ляционного

многочлена

.} 

var 
        i,j,ii,jj,l  :integer; 
        y,z,q,r,s    :real; 
begin 
        l:=trunc(m/2); q:=x*10-k+1; z:=1.0; i:=2; 
        y:=fr[k,1]+0.5*q*(fr[k-1,2]+fr[k,2]); 


background image

19 

        repeat 
              ii:=trunc((i-1)/2); 
              z:=z*(q+ii)*(q-ii)/((i-1)*i); 
              y:=y+z*fr[k-trunc(i/2),i+1]; 
              i:=i+2 
        until i>2*l; 
        r:=0.0; s:=q; j:=3; 
        repeat 
              jj:=trunc((j-1)/2); 
              s:=s*(q+jj)*(q-jj)/((j-1)*j); 
r:=r+s*0.5*(fr[k-trunc((j+1)/2),j+1]+(fr[k-trunc(j/2),j+1])); 
              j:=j+2 
        until j>2*l-1; 
        stir:=y+r 
end; 
3. 

Процедура

spl

реализующая

алгоритм

построения

естественного

кубического

сплайна

Процедура

 spl 

составляет

систему

основываясь

на

оптимальном

спо

-

собе

построения

естественного

кубического

сплайна

Процедура

 sy 

решает

систему

методом

прогонки

procedure sy(il,ir:integer; a,b,d:vec; var c:vec); 
{

Входные

параметры

: il – 

номер

 1-

го

уравнения

системы

; ir – 

номер

последнего

уравнения

системы

; a – 

коэффициенты

ниже

главной

диагонали

b – 

коэффициенты

выше

главной

диагонали

; d – 

коэффициенты

на

главной

диагонали

; c – 

вектор

правой

части

Выходные

параметры

: c – 

решение

системы

.} 

var 
        i,j,l   :integer; 
        r       :real; 
begin 
        l:=il+1; 
        for i:=l to ir do begin 
                           r:=b[i]/d[i-1]; 
                        d[i]:=d[i]-r*a[i-1]; 
                        c[i]:=c[i]-r*c[i-1] 
                          end; 
        c[ir]:=c[ir]/d[ir]; 
        for i:=l to ir do begin 
                           j:=ir-i+il; 
                        c[j]:=(c[j]-a[j]*c[j+1])/d[j] 
                          end 
end; 


background image

20 

procedure spl(n:integer; x,f:vec; var x0,y0:real; var i0:integer); 
{

Входные

параметры

число

узлов

вектор

состоящий

из

уз

-

лов

вектор

содержащий

значения

функции

в

узлах

; x0 – 

точка

в

кото

-

рой

ищем

значение

интерполяционного

многочлена

Выходные

параметры

: y0 – 

значение

кубического

сплайна

в

точке

 x0; 

i0 – 

номер

частичного

отрезка

в

котором

находится

точка

.} 

var 
        i           :integer; 
        r,t         :real; 
        a,b,c,d     :vec; 
begin 
        for i:=1 to n do b[i]:=x[i]-x[i-1]; 
        for i:=1 to n do if (x[i-1]<x0) and (x0<=x[i]) then i0:=i; 
        write('i0= ',i0); 
        for i:=1 to n-1 do 
        begin 
         d[i]:=2*(b[i]+b[i+1]); 
         a[i]:=b[i+1]; 
         c[i]:=6*((f[i+1]-f[i])/b[i+1]-(f[i]-f[i-1])/b[i]) 
        end; 
        sy(1,n-1,a,b,d,c); c[0]:=0; c[n]:=0; 
        r:=(x[i0]-x0); t:=(x0-x[i0-1]); 
        y0:=(c[i0-1]*r*r*r+c[i0]*t*t*t)/(6*b[i0]); 
        y0:=y0+(f[i0-1]/b[i0]-c[i0-1]*b[i0]/6)*r; 
        y0:=y0+(f[i0]/b[i0]-c[i0]*b[i0]/6)*t 
end.