Численные методы решения типовых математических задач

курсовая работа

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 Тестовый пример

Найти тригонометрический многочлен наилучшего среднеквадратичного приближения наименьшей степени со среднеквадратичным отклонением меньшим для функции

Введем функцию

Вычислим коэффициенты Фурье

Вычислим частичные суммы ряда Фурье

Вычислим среднеквадратичное отклонение

Найдем минимальное , при котором будет меньше

Следовательно многочлен степени является наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого многочлениа и исходной функции

Построим график среднеквадратичного отклонения

Найдем минимальное , при котором будет меньше

Следовательно, многочлен степени является наименьшим многочленом, удовлетворяющим нашим условиям. Построим график этого многочлениа и исходной функции

Построим график среднеквадратичного отклонения

4. Численное интегрирование функций методом Гаусса

4.1 Постановка задачи

Разработать схему алгоритма и написать программу на языке Turbo Pascal 7.0 для вычисления интегралов функции, используя метод Гаусса.

4.2 Математическая формулировка задачи

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

была точной для всех полиномов наивысшей возможной степени.

4.3 Обзор существующих численных методов решения задачи

Одномерный случай

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

где -- число точек, в которых вычисляется значение подынтегральной функции. Точки называются узлами метода, числа -- весами узлов. При замене подынтегральной функции на полином нулевой, первой и второй степени получаются соответственно методы прямоугольников, трапеций и парабол (Симпсона). Часто формулы для оценки значения интеграла называют квадратурными формулами.

Метод прямоугольников

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

,

где , или , соответственно.

Метод трапеций

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

Площадь трапеции на каждом отрезке:

Погрешность аппроксимации на каждом отрезке:

, где

Полная формула трапеций в случае деления всего промежутка интегрирования на отрезки одинаковой длины h:

,

где

Погрешность формулы трапеций:

, где

Метод парабол (метод Симпсона)

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

.

Если разбить интервал интегрирования на 2N равных частей, то имеем

,

где .

Если разбить интервал интегрирования на 2N равных частей, то имеем

,

где .

Увеличение точности

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

Для уменьшения погрешности отрезок интегрирования разбивают на части и применяют численный метод для оценки интеграла на каждой из них.

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

Приведённые выше методы допускают простую процедуру уменьшения шага в два раза, при этом на каждом шаге требуется вычислять значения функции только во вновь добавленных узлах. Для оценки погрешности вычислений используется правило Рунге.

Метод Гаусса

Описанные выше методы используют фиксированные точки отрезка (концы и середину) и имеют низкий порядок точности (0 --- методы правых и левых прямоугольников, 1 --- методы средних прямоугольников и трапеций, 3 --- метод парабол (Симпсона)). Если мы можем выбирать точки, в которых мы вычисляем значения функции , то можно при том же количестве вычислений подынтегральной функции получить методы более высокого порядка точности. Так для двух (как в методе трапеций) вычислений значений подынтегральной функции, можно получить метод уже не 1-го, а 3-го порядка точности:

.

В общем случае, используя точек, можно получить метод с порядком точности . Значения узлов метода Гаусса по точкам являются корнями полинома Лежандра степени .

Значения узлов метода Гаусса и их весов приводятся в справочниках специальных функций. Наиболее известен метод Гаусса по пяти точкам.

В общем случае, используя точек, можно получить метод с порядком точности . Значения узлов метода Гаусса по точкам являются корнями полинома Лежандра степени .

Значения узлов метода Гаусса и их весов приводятся в справочниках специальных функций. Наиболее известен метод Гаусса по пяти точкам.

Метод Гаусса-Кронрода

Недостаток метода Гаусса состоит в том, что он не имеет лёгкого (с вычислительной точки зрения) пути оценки погрешности полученного значения интеграла. Использование правила Рунге требует вычисления подынтегральной функции примерно в таком же числе точек, не давая при этом практически никакого выигрыша точности, в отличие от простых методов, где точность увеличивается в разы при каждом новом разбиении. Кронродом был предложен следующий метод оценки значения интеграла

,

где -- узлы метода Гаусса по точкам, а параметров , , подобраны таким образом, чтобы порядок точности метода был равен .

Тогда для оценки погрешности можно использовать эмпирическую формулу:

,

где -- приближённое значение интеграла, полученное методом Гаусса по точкам.

4.4 Численный метод решения задачи

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

(4.1)

была точной для всех полиномов наивысшей возможной степени.

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

Запишем полином в виде и подставим в (4.1). Получим

,

.

Приравнивая выражения при одинаковых коэффициентах получим

, ,

, .

Итак, и находят из системы уравнений

,

,

, (4.2)

. . . . . . .

.

Система (4.2) нелинейная, и ее решение найти довольно трудно. Рассмотрим еще один прием нахожденияи . Свойства полиномов Лежандра

,

таковы:

1) , ;

2) ;

3) полином Лежандра имеет различных и действительных корней, расположенных на интервале .

Составим по узлам интегрирования многочлен -й степени

.

Функция при есть многочлен степени не выше . Значит для этой функции формула Гаусса справедлива:

, (4.3)

так как .

Разложим в ряд по ортогональным многочленам Лежандра:

,

,

,

т.е. все коэффициенты при . Значит с точностью до численного множителя совпадает с . Таким образом, узлами формулы Гаусса являются нули многочлена Лежандра степени .

Зная , из линейной теперь системы первых (4.2) легко найти коэффициенты являются нули многочлена Лежандра степени .

Зная , из линейной теперь системы первых (4.2) легко найти коэффициенты . Определитель этой системы есть определитель Вандермонда.

Формулу , в которой - нули полинома Лежандра , а определяют из (3.3), называют квадратурной формулой Гаусса.

Делись добром ;)