Автор работы: Пользователь скрыл имя, 06 Декабря 2012 в 20:21, курсовая работа
Цель данной курсовой работы – изучение методов приближённого интегрирования. Для некоторых подынтегральных функций интеграл можно вычислить аналитически или найти в справочниках. Однако в общем случае первообразная может быть не определена: либо первообразные не выражаются через элементарные функции, либо сами подынтегральные функции не являются элементарными. Это приводит к необходимости разработки приближенных методов вычисления определенных интегралов. Наиболее общеупотребительными приближенными методами вычисления одномерных определенных интегралов являются, так называемые, "классические" методы численного интегрирования: метод прямоугольников, метод трапеций, метод парабол (основанные на суммировании элементарных площадей, на которые разбивается вся площадь под функцией ).
Описание численных методов…………...……………………………3
Методы левых и правых прямоугольников………...…………3
Метод средних прямоугольников………………………………4
Метод Симпсона………...……………………………………….5
Схема алгоритма программы……………...………………...6
Описание программы………………………………………...7
Текст программы………………………...…………………...8
Численный пример, рассчитанный вручную и в программе……………………………...…………………….10
Заключение
(9). Эта формула называется малой формулой Симпсона.
Малая формула Симпсона пригодна, когда график подынтегральной функции мало изогнут, например для случая, изображённого на рисунке, применять малую формулу уже нельзя, так как она даёт значение 0 на [a,b]. Но если отрезок [a,b] разбить на части [a,c] и [c,b] и к каждому из них применить формулу (9), то получится приемлемый результат.
Эта идея лежит в основе вывода «большой» формулы Симпсона.
Для вычисления интеграла выберем какое-либо чётное число и разложим [a,b] на n равных частей точками . Интеграл представим в виде суммы . К каждому слагаемому справа применим малую формулу Симпсона. Учитывая, что в каждом интеграле длина промежутка интегрирования , и положить , то получим:
Раскроем скобки:
Это и есть «большая формула Симпсона». Её точность, также как и у всех формул рассмотренных выше, тем выше, чем больше n. Эта формула совпадает с формулой (7), выведенной с помощью парабол. Для оценки погрешности формулы Симпсона используется формула:
Качество этой формулы лучше, чем формулы трапеции и прямоугольников, так как при одном и том же n она даёт большую точность.
1.3.1 СХЕМА АЛГОРИТМА ПРОГРАММЫ
1.3.2. ОПИСАНИЕ ПРОГРАММЫ
Программа предлагает ввести число шагов интегрирования.
Вначале вычисляется сумма первого и последнего членов последовательности F(a)+F(b)/ 2, затем в цикле суммируются члены F(xj), умноженные на 2 и на 4. После завершения цикла накопленная сумма умножается на h и делится на 3 согласно формуле Симпсона. Результат печатается на экране.
a,b:real; границы интервала
h:real; шаг интегрирования
Integral: real; подынтегральная сумма
x:real; аргумент функции
N: integer; число шагов интегрирования
i: integer; переменная для цикла
Собственные функции программы
Функция F предназначена для многократного вычисления значения подынтегральной функции в узловых точках Xi+h. Имеет один вещественный параметр - аргумент, возвращает вещественное число - значение функции.
function F(x_:real):real;
begin
F:=(x*x+0.5)/(sqrt(x*x+1));
end.
1.3.3. ТЕКСТ ПРОГРАММЫ
{ Вычисление интеграла методом Симпсона}
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
{$R *.res}
var
a,b:real; {границы интервала}
h:real; {шаг интегрирования}
S: real;{подынтегральная сумма}
x:real;
N:integer; {число шагов интегрирования}
i,p:integer; {переменная для цикла}
function F(z:real) :real; {функция языка Паскаль для вычисления подынтегральной функции}
begin
F:=(z* z+0.5 )/sqrt(z* z+1);
end;
begin
Writeln('FuHkTioH (x^2 * +0.5)/(sqrt(x^2+1)) [0.5 1.6] ');
Write('BBediTe 4icLo IIIaGoB: ');
Readln(N);
a:=0.5;
b:=1.6;
h := (b-a) / N;
Writeln('IIIaG ' ,h:7:5);
x := a;
S :=F(a)+F(b);
FOR i := 1 TO round((N -2)/2)DO
begin
x := x + h;
S := S + 4 *F(x);
x := x + h;
S := S + 2 *F(x);
end;
S := S * h/3;
Writeln;
Writeln;
Writeln ('iHTeGpaL =',S:7:5);
read(p)
end.
1.3.4. ЧИСЛЕННЫЙ ПРИМЕР, РАССЧИТАННЫЙ
ВРУЧНУЮ И В ПРОГРАММЕ:
Ручной расчёт для N=10
а=0.5
b=1.6
N=10
Шаг интегрирования (1.6-0.5)/10 = 0.1100
S=F(0.5)+F(1.6) = 2.29
х= 0.61 S= 2.29+4*0.7445 = 2.29+2.9781 = 5.27
х= 0.72 S= 5.27+2*0.8265 = 5.27 +1.6529 = 6.92
х= 0.83 S= 6.92+4*0.9148 = 6.92+3.6593 = 10.58
х= о.94 S= 10.58+2*1.0081 = 10.58 +2.0163 = 12.60
х= 1.05 S= 12.60+4*1.1052 = 12.60 +4.4207 = 17.02
х= 1.16 S= 17.02+2*1.2051 = 17.02 +2.4101 = 19.43
х= 1.27 S= 19.43+4*1.3071 = 19.43 +5.2285 = 24.66
х= 1.38 S= 24.66+2*1.4108 = 24.66 +2.8217 = 27.48
S=27.48 *0.1100/3=1.0076
Интеграл =1.00761
Запустим программу с теми же данными:
Рис. 3. Результат решения программы N=10
Рис. 4. Результат работы программы при N=100
Рис. 5. Результат работы программы при N=1000
Видим, что с ростом N увеличивается точность расчётов.
ЗАКЛЮЧЕНИЕ
Программа осуществляет вычисление подынтегральной функции на заданном интервале методом Симпсона. Число шагов интегрирования вводится с клавиатуры. Результаты печатаются на экране. Анализ результатов подтверждает теоретический вывод о наилучшем решении, которое получается при выборе наименьшего шага.
В результате выполнения программы закреплены знания по языку Паскаль, освоена работа в интегрированной среде Borland Pascal, изучены методы численного интегрирования.