среда, 24 сентября 2008 г.

Основы информатики. Вычисление определенных интегралов. Метод трапеций.

Необходимость в вычислении определенных интегралов с использованием численных методов возникает, в основном, в двух случаях. Во-первых, подынтегральная функция может быть задана таблично, например, как полученная в результате каких-либо измерений. Во-вторых, первообразная не может быть найдена в аналитическом виде, то есть, интеграл не является табличным. Как и все вычислительные методы, численное интегрирование является приближенным, и интеграл может быть получен с заданной точностью. Простейшим методом численного интегрирования является МЕТОД ТРАПЕЦИЙ. Речь идет о вычислении интегралаМетод применим, если пределы интегрирования конечны, а подынтегральная функция не имеет особенностей, хотя несложная предварительная процедура деления интервала интегрирования на несколько частей позволяет применить эту методику и к интегрированию функции, имеющей конечное число разрывов первого рода. В методе трапеций интервал [a,b] разбивается на n элементарных отрезков длиной
точками с координатой
На каждом из элементарных отрезков подынтегральная функция заменяется линейной функцией, а соответствующий участок площади под кривой y=f(x) заменяется трапецией так, как это показано на рис. 1.7.
Исходя из известной формулы для площади трапеции, нетрудно получить выражение для приближенного значения интеграла:
Эту формулу наиболее удобно использовать, если интегрируется функция, заданная таблично, причем, координаты xi могут быть расположены на интервале [a,b] произвольным образом (не обязательно равноудалены друг от друга).
Для вычисления интеграла от функции, заданной аналитически, целесообразно воспользоваться другим представлением формулы трапеций. В этом случае отрезок [a,b] может быть разбит на n равных отрезков длиной h. При этом предыдущая формула упрощается и принимает вид:

Методом трапеций и методом Симпсона вычислить с заданной точностью определенный интеграл:


Программный код:
procedure TForm1.Button1Click(Sender: TObject);
var p,x,h,a,b:real;
n,i:integer;
begin
a:=0;
b:=pi;
n:=strtoint(edit1.Text);
h:=(b-a)/n;
x:=(sin(a)+sin(b))/2;
for i:=1 to n do
x:=x+sin(a+i*h);
x:=x*h;
edit2.Text:=floattostr(x);
p:=abs((2-x)/2);
edit3.Text:=floattostr(p);
end;

Скчать проект

Вся теория

Комментариев нет: