Курсовая работа: Численные методы решения типовых математических задач
При использовании
ортонормированной системы функций система (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
Тестовый пример
Найти
тригонометрический многочлен наилучшего среднеквадратичного приближения
наименьшей степени со среднеквадратичным отклонением меньшим для функции
Введем
функцию
Вычислим
коэффициенты Фурье
Вычислим
частичные суммы ряда Фурье
Вычислим среднеквадратичное отклонение
Найдем
минимальное , при котором будет
меньше
Следовательно
многочлен степени является
наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого
многочлениа и исходной функции
Построим
график среднеквадратичного отклонения
Найдем
минимальное , при котором будет
меньше
Следовательно,
многочлен степени является
наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого
многочлениа и исходной функции
Построим
график среднеквадратичного отклонения
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |