Курсовая работа: Численные методы решения типовых математических задач
При использовании
ортонормированной системы функций система (3.8) упрощается:
,
т.е. являются коэффициентами
Фурье, а наилучшее приближение есть ряд Фурье, обрываемый на каком-то члене.
Доказано, что в любом
линейно нормированном пространстве при линейной аппроксимации вида (3.4) наилучшее
приближение существует, хотя оно может быть не единственным.
В тех случаях, когда
функции не
ортогональны, при определитель Грама уменьшается,
приближаясь к нулю. Тогда система становится плохо обусловленной и ее решение
дает большую погрешность. В этой ситуации обычно берут не более пяти-шести
членов в сумме (3.7).
В качестве чаще всего используют
полиномы Лежандра, Чебышева, Лагерра, Эрмита, ортогональные с заданным весом.
Рассмотрим частный
случай, когда необходимо найти наилучшее приближение функции, заданной
таблично. Для вещественных функций, заданных на конечном множестве точек,
скалярное произведение определяется формулой
, (3.9)
где - число заданных узлов.
Условие наилучшего
среднеквадратичного приближения записывается следующим образом:
. (3.10)
Полагая , где , и подставляя этот
многочлен в (3.10), придем к системе (3.8), в которой скалярные произведения
вычисляют согласно (3.9). Описанная процедура аппроксимации носит название
метода наименьших квадратов.
Наиболее употребительный
вариант метода наименьших квадратов соответствует случаю степенного вида
функций ,
т.е. ,
причем .
Система уравнений (3.8)
при этом принимает вид
, , (3.11)
где .
3.5 Схема
алгоритма

Рис.
3.1 Основная программа

Рис.
3.2 Процедура ввода данных

Рис
3.3 Процедура среднеквадратичного приближения
program
srpribl; {$R+}
uses graph;
label 1,2,3,4;
const m=2;
type mas=
array [1..21] of real;
mas1=
array [1..m] of real;
mas2=
array [1..m,1..m+1] of real;
var i,j:byte;
y1,x1:mas;
xx1:mas1;
a1:mas2;
procedure vvod
(x,y: mas);
begin
x[1]:=0;y[1]:=0.290234387293458;
x[2]:=0.25;y[2]:=0.201247759722173;
x[3]:=0.5;y[3]:=0.0712686786428094;x[4]:=0.75;
y[4]:=0.044294935464859;
x[5]:=1;y[5]:=-0.0745576142333448;
x[6]:=1.25;y[6]:=-0.0807833694852889;
x[7]:=1.5;y[7]:=-0.233371530473232;x[8]:=1.75;y[8]:=-0.283957027737051;
x[9]:=2;y[9]:=-0.308697660081089;x[10]:=2.25;y[10]:=-0.42091366359964;
x[11]:=2.5;y[11]:=-0.516991161741316;x[12]:=2.75;y[12]:=-0.427710095947851;
x[13]:=3;y[13]:=-0.374748698528856;x[14]:=3.25;y[14]:=-0.229905794281513;
x[15]:=3.5;y[15]:=-0.205365492492496639;x[16]:=3.75;y[16]:=-0.129155068378896;
x[17]:=4;y[17]:=-0.0438349825330079;x[18]:=4.25;y[18]:=0.0294586319476366;
x[19]:=4.5;y[19]:=0.132592592108995;x[20]:=4.75;y[20]:=0.206369574274868;
x[21]:=5;y[21]:=0.26959548862651;
end;
procedure
srpribl (xx:mas1;a:mas2);
var l:real;
s,z,k1:integer;
begin
for s:=1 to
m-1 do
for z:=s+1 to
m do
begin
a[z,s]:=-a[z,s]/a[s,s];
for k1:=s+1
to m+1 do a[z,k1]:=a[z,k1]+a[z,s]*a[s,k1]
end;
xx[m]:=a[m,m+1]/a[m,m];
writeln(' xx[',m,']=',xx[m]:2:3);
for i:=m-1
downto 1 do
begin
l:=a[i,m+1];
for j:=i+1 to
m do l:=l-xx[j]*a[i,j];
xx[i]:=l/a[i,i];
writeln(' xx[',i,']=',xx[i]:2:3)
end
end;
procedure
Grafik (var x,y:mas;xx:mas1)
var
ec,gd,gm:integer;
begin
gd:=detect;
initgraph
(gd,gm,' ');
ec:=graphresult;
if
ec<>grok then begin
writeln
('Oshibka v inicializacii grafika');
halt (1);
end;
setcolor(white);
line
(0,420,620,420);
line
(0,0,0,420);
setcolor
(white);
for i:=1 to 21
do begin
circle (round
(x[i]*150),round (y[i]*100),1);
end;
setcolor
(yellow);
for i:=1 to m
do begin
circle (round
(x[i]*150),round (xx[i]*100),1);
end;
setcolor
(green);
for i:=2 to m
do begin
line (round
(x[i-1]*150),round(xx[i-1]*100),round (x[i]*150),
round
(xx[i]*100));
end;
end;
begin
vvod(x1,y1);
for i:=1 to 2
do
for j:=1 to 3
do a[i,j]:=0;
a[1,1]:=21;
for i:=1 to
21 do
begin
a[1,2]:=a[1,2]+x[i];
a[2,1]:=a[2,1]+x[i];
a[2,2]:=a[2,2]+x[i]*x[i];
a[1,3]:=a[1,3]+y[i];
a[2,3]:=a[2,3]+y[i]*x[i]
end;
srpribl(xx1,a1);
for i:=1 to
21 do
writeln(y[i]:2:3,'
',xx[1]+xx[2]*x[i]:2:3);
Grafik(x1,y1,xx1);
end.
3.7
Тестовый пример

Найти
тригонометрический многочлен наилучшего среднеквадратичного приближения
наименьшей степени со среднеквадратичным отклонением меньшим для функции
![[Graphics:2.gif]](/image/61048_66_1.png)
Введем
функцию ![[Graphics:3.gif]](/image/61048_67_1.png)
![[Graphics:4.gif]](/image/61048_68_1.png)
Вычислим
коэффициенты Фурье
![[Graphics:5.gif]](/image/61048_35_1.jpeg)
Вычислим
частичные суммы ряда Фурье
![[Graphics:6.gif]](/image/61048_36_1.jpeg)
Вычислим среднеквадратичное отклонение
![[Graphics:7.gif]](/image/61048_37_1.jpeg)
Найдем
минимальное , при котором будет
меньше ![[Graphics:10.gif]](/image/61048_65_2.png)
![[Graphics:11.gif]](/image/61048_38_1.jpeg)
![[Graphics:12.gif]](/image/61048_39_1.jpeg)
Следовательно
многочлен степени является
наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого
многочлениа и исходной функции
![[Graphics:14.gif]](/image/61048_40_1.jpeg)
![[Graphics:15.gif]](/image/61048_72_1.png)
![[Graphics:16.gif]](/image/61048_41_1.jpeg)
Построим
график среднеквадратичного отклонения
![[Graphics:17.gif]](/image/61048_42_1.jpeg)
![[Graphics:18.gif]](/image/61048_73_1.png)
![[Graphics:19.gif]](/image/61048_43_1.jpeg)
![[Graphics:20.gif]](/image/61048_44_1.jpeg)
Найдем
минимальное , при котором будет
меньше ![[Graphics:10.gif]](/image/61048_47_1.jpeg)
![[Graphics:11.gif]](/image/61048_48_1.jpeg)
![[Graphics:12.gif]](/image/61048_49_1.jpeg)
Следовательно,
многочлен степени является
наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого
многочлениа и исходной функции
![[Graphics:14.gif]](/image/61048_51_1.jpeg)
![[Graphics:15.gif]](/image/61048_72_2.png)
![[Graphics:16.gif]](/image/61048_74_1.png)
Построим
график среднеквадратичного отклонения
![[Graphics:17.gif]](/image/61048_52_1.jpeg)
![[Graphics:18.gif]](/image/61048_73_2.png)
![[Graphics:19.gif]](/image/61048_53_1.jpeg)
![[Graphics:20.gif]](/image/61048_54_1.jpeg)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |