Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Способы нахождения площади криволинейной трапеции



I. Теорема. Если f(x) непрерывная и неотрицательная функция на отрезке [a;b], то площадь соответствующей криволинейной трапеции равна приращению первообразных.

Дано: f(x)– непрерывная неопр. функция, x [a;b].

Доказать: S = F(b) – F(a), где F(x) – первообразная f(x).

Доказательство:

1) Рассмотрим вспомогательную функцию S(x). Каждому x[a;b] поставим в соответствие ту часть криволинейной трапеции (рис 4), которая лежит левее прямой, проходящей через точку с этой абсциссой и параллельно оси ординат.

Следовательно, S(a)=0 и S(b)=Sтр 2) Докажем, что S(a) – первообразная f(x).

D(f) = D(S) = [a;b]

1. S’(x0)= lim(S(x0+x) – S(x0) / x), при x0 S – прямоугольник

2. при x0 со сторонами x и f(x0)

S’(x0) = lim(x f(x0) /x) = lim f(x0) = f(x0): т.к. x0 точка,

x0 x0

то S(x) – первообразная f(x).

Следовательно, по теореме об общем виде первообразной

S(x) = F(x) + C.

3) Т.к. S(a)=0, то S(a) = F(a)+C

C = –Fa

4) S = S(b)=F(b)+C = F(b)–F(a)

1). Разобьем отрезок [a;b] на n равных частей (рис 5). Шаг разбиения

x=(b–a)/n. При этом Sтр=lim(f(x0)x+f(x1)x+...+f(xn))x=lim x(f(x0)+f(x1)+...+f(xn))

При n получим, что Sтр= x(f(x0)+f(x1)+...+f(xn))Предел этой суммы называют определенным интегралом.

b

Sтр= f(x)dx.

a

Сумма, стоящая под пределом, называется интегральной суммой.

Определённый интеграл это предел интегральной суммы на отрезке [a;b] при n. Интегральная сумма получается как предел суммы произведений длины отрезка, полученного при разбиении области определения функции в какой либо точке этого интервала.

a — нижний предел интегрирования;

b — верхний предел интегрирования.

Метод Гаусса (численное интегрирование)

Численное интегрирование функции x5+6x2+1 методом гаусса-3

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

Например, для двух узлов можно получить метод 3-го порядка точности

I≈b−a2(f(a+b2−b−a23√)+f(a+b2+b−a23√)),

тогда как для равноотстоящих узлов метода выше 2-го порядка получить невозможно. В общем случае, используя n точек, можно получить метод с порядком точности 2n−1. Значения узлов метода Гаусса по n точкам являются корнями полинома Лежандра степени n. Значения весов вычисляются по формуле ai=2(1−x2i)[P′n(xi)]2, где P′n - первая производная полинома Лежандра.

Для n=3 узлы и веса имеют следующие значения: x1,3=±0.6−−−√,x2=0, веса: a1,3=59,a2=89.

(Полином определён на отрезке [−1,1]).

Наиболее известен метод Гаусса по пяти точкам.

Метод Гаусса

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

I≈∑i=1naif(xi)+∑i=1n+1bif(yi),

где xi — узлы метода Гаусса по n точкам, а 3n+2 параметров ai, bi, yi подобраны таким образом, чтобы порядок точности метода был равен 3n+1. Тогда для оценки погрешности можно использовать эмпирическую формулу:

Δ=(200|I−IG|)1.5,

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

Раскрытие темы курсовой работы я провела по следующему плану: определение определённого интеграла и его свойства; длина дуги кривой; площадь криволинейной трапеции; площадь поверхности вращения.

Задание на курсовую работу

Разработать программу нахождения значения определенного интеграла методом Гаусса. Функция для интегрирования

y=xsinx / (1+x2)

Интервал интегрирования [0;22].

Исходные данные: интервал, количество разбиений отрезка.

Результат: график заданной функции.

Решение интегрировать графически (автоматическое масштабирование, название графика, метки на осях и обозначение осей).

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

Предусмотреть проверку корректности данных.

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

Численное интегрирование — вычисление значения определённого интеграла (как правило, приближённое), основанное на том, что величина интеграла численно равна площади криволинейной трапеции, ограниченной осью абсцисс, графиком интегрируемой функции и отрезками прямых x=a и x=b, где a! и b — пределы интегрирования.

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

Для вычислений применяются 2-х-10-ти точечные методы. Для 2-5 точечных методов коэффициенты приведены в таблице.

Наиболее точным методом вычисления определенного интеграла считается десятиточечный метод Гаусса.

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

Коэффициенты при трехточечном методе следующие:

A1=5/9, A2=8/9, A3=5/9,, t2=0, t3=-t1

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

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

.

Затем частичные интегралы суммируются и находится конечный результат.

Математическая модель для решения задачи

В формуле Гаусса на каждом интервале интегрирования значение функции f(x) вычисляется не в равномерно распределенных по интервалу узлах, а в абсциссах, выбранных из условия обеспечения минимума погрешности интерполяции:

где n- число интервалов интегрирования, m – число вычисляемых на каждом интервале значений функции., – границы интервалов интегрирования; и - коэффициенты значения которых определяются величиной m. Для m=3 A1=5/9, A2=8/9, A3=5/9,, t2=0, t3=-t1

Блок-схема программы

Текст программы

Uses

Crt, Graph;

const

A1=5/9;

A2=8/9;

A3=5/8;

t=-0.77459;

t2=0;

t3=-t; {константы для взятия интеграла методом Гаусса}

var

GraphDriver, GraphMode: Integer;

x, x_nach, x_kon, eps: real; {пределы интегрирования и точность вычисления}

MaxX, MaxY: integer;

y_min_FUN, y_max_FUN: real;

yFUN: array [1..1100] of real; {массив для хранения точек графика}

c: char;

i, j, n: integer; {указатели на эл.массива и т.д.}

{ * * * * * * * функция y(x) * * * * * * * * * * * *--}

Function FUN(x: real): real;

begin

FUN:= x*sin(x)/(1+x*x);

end;

{ * * * * * * *--вычисление интеграла методом Гаусса * * * * *}

function Gauss (a, b, eps: real; var k:integer): real;

var

S, z, h, c, d, l, x, x1, x2, x3: real;

i, n: integer;

begin

n:=1;

S:=0;

k:=0;

repeat

k:=k+1; {увеличиваем число итераций}

z:=S; {предыдущее значение интеграла равно текущему}

n:=n*2; {в два раза увеличиваем число интервалов интегрирования}

h:=(b-a)/n;

x:=a;

S:=0;

c:=h/2;

l:=c*t; {определение шага интегрирования,

начального значения x, сам интеграл сначала равен 0,

вспомогательные переменные считаем }

for i:=0 to n-1 do {перебираем все интервалы интегрирования}

begin

d:=x+c;

x1:=d-l;

x2:=d;

x3:=d+l; {вычисляем значения абсцисс узлов,

выбранных из условия обеспечения минимума погрешности интерполяции}

S:=S+A1*(FUN(x1)+FUN(x3))+A2*FUN(x2); {добавляем к сумме}

x:=x+h; {переходим на новый интервал интегрирования}

end;

S:=S*c; {умножаем полученную сумму на h/2}

until (abs(z-S)<eps*abs(S)) or (k>=14);

Gauss:= S;

end;

{ * * * * * *--построение Декарт. системы координат * * *-}

procedure Dekart (x_min, x_max, y_min, y_max: real);

var

x_i, y_i: real;

s: string;

i: real;

ii: integer;

nulx: integer;

koord_x, koord_y: integer;

begin

GraphDriver:= Detect; {инициализация графики}

InitGraph(GraphDriver, GraphMode, '');

if GraphResult <> grOk then Halt(1);

nulx:= round (MaxY-MaxY*(0-y_min)/(y_max - y_min));

setcolor(DarkGray);

Setlinestyle(1,1,1);

i:= 0;

while i <= MaxY

do begin

line (0, round(i), MaxX, round(i)); {деление экрана на 10 частей}

i:= i + (MaxY/20);

end;

i:= 0;

while i <= MaxX

do begin

line (round(i), 0, round(i), MaxY);

i:= i + (MaxX/20);

end;

Setlinestyle(0,1,1);

setcolor (white);

x_i:= x_min;

for ii:= 1 to 10 {разметка по осям}

do begin

koord_x:= round (MaxX*(x_i-x_min)/(x_max-x_min));

koord_y:= nulx+10;

Str (x_i:1:2, s);

OutTextXY (koord_x, koord_y, s);

x_i:= x_i + (x_max-x_min)/10;

end;

y_i:= y_min;

for ii:= 1 to 10

do begin

koord_x:= 5;

koord_y:= round (MaxY-MaxY*(y_i-y_min)/(y_max - y_min));

Str (y_i:1:2, s);

OutTextXY (koord_x, koord_y-10, s);

y_i:= y_i + (y_max - y_min)/10;

end;

setcolor (white);

OutTextXY (MaxX-15, nulx-12, 'X');

OutTextXY (MaxX-20, nulx-4, ' >');

OutTextXY (0, 4, '^ Y');

line (0, nulx, MaxX, nulx);

line (2, 0, 2, MaxY);

end;

{ * * *--расчет точек, мин и макс для графика функции *--}

Procedure CalcF (x_nach, x_kon: real);

var

x: real;

dx: real;

i: integer;

begin

x:= x_nach;

i:= 1;

dx:= (x_kon-x_nach)/(MaxX-1);

y_min_FUN:= FUN(x); y_max_FUN:= FUN(x);

while x <= x_kon do

begin

yFUN[i]:= FUN(x);

if yFUN[i] < y_min_FUN

then y_min_FUN:= yFUN[i];

if yFUN[i] > y_max_FUN

then y_max_FUN:= yFUN[i];

x:= x + dx;

i:= i + 1

end

end;

{ * * * *--построение функции y(x) * * * * * * * *}

Procedure GFUN;

var

i: integer;

koord_x1, koord_y1, koord_x2, koord_y2: integer;

begin

setcolor (White);

OutTextXY (40, 40, ' sin(x) ');

OutTextXY (40, 48, ' Y(x) = x* * *. Для продолжения нажмите ввод...');

OutTextXY (40, 56, ' (1+x^2) ');

for i:= 1 to MaxX-2 do

begin

koord_x1:= i;

koord_y1:= round (MaxY-MaxY*(yFUN[i]-y_min_FUN)/(y_max_FUN - y_min_FUN));

koord_x2:= i+1;

koord_y2:= round (MaxY-MaxY*(yFUN[i+1]-y_min_FUN)/(y_max_FUN - y_min_FUN));

line (koord_x1, koord_y1, koord_x2, koord_y2)

end

end;

{======================================================================}

{ * * * * * * * * *--главная программа * * * * * * * *}

begin

GraphDriver:= Detect;

InitGraph(GraphDriver, GraphMode, '');

if GraphResult <> grOk then Halt(1);

MaxX:= GetMaxX;

MaxY:= GetMaxY;

CloseGraph;

repeat

repeat

clrscr;

writeln ('Введите значения для вычисления графика:');

write (' X нач. = ');

readln (x_nach);

write (' Х кон. = ');

readln (x_kon);

write (' Точность = ');

readln (eps);

until (x_nach>=0) and (x_kon <= 22) and (x_nach<x_kon);

writeln ('Интеграл = ', Gauss (x_nach, x_kon, eps, n):7:5,' ',n,' итераций');

writeln ('Для продолжения нажмите ввод...');

readln;

CalcF (x_nach, x_kon);

Dekart (x_nach, x_kon, y_min_FUN, y_max_FUN);

GFUN;

readln;

CloseGraph;

GotoXY(23,10);

writeln ('Для продолжения нажмите пробел,');

GotoXY(23,12);

writeln ('для выхода из программы - ESC.');

c:= ReadKey;

until ord(c) = 27;

End.

Руководство пользователя

Для работы с программой требуется в среде Pascal 7.0 запустить файл GAUSS_010.pas. Или запустить откомпилированный файл GAUSS_010.exe. Для его работы требуется файл для вывода графической информации EGAVGA.BGI. После ввода значений для вычисления интеграла и количество разбиений отрезка происходит проверка вводимых данных. Если данные правильные - выводится графический экран и строится график данной функции. Если вводимые данные неправильные – они запрашиваются заново. Далее ожидается нажатие на ввод. Выводится сообщение о продолжении или выходе из программы. Если нужно выйти из программы – нажимаем Esc. Программа завершается.

Результаты работы программы для различных вариантов

Примеры для всех ветвей работы программы (как для корректной, так и для некорректной работы)

Примеры для корректной работы программы показаны на Рис.1 и Рис.2.

В случае некорректной роботы программа запрашивает данные заново.

Выводы по курсовой работе

В данной курсовой работе мы вычисляли определенный интеграл методом Гаусса и наглядно отображали вычисление интеграла. Десятиточечный метод Гаусса является самым точным методом вычисления определенного интеграла, в случае, когда невозможно получить первообразную исходной функции, или она слишком сложна для вычисления по формуле Ньютона-Лейбница, но для вычисления данного интеграла я использовал трехточечный метод Гаусса, потому что в данном случае он является наиболее подходящим.

Список использованной литературы

1.Немнюгин С.А. Turbo Pascal. СПб.: Питер, 2000.- 496с.

2.Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся втузов. М.: Просвещение, 1986.-544с.

3.Цикунов А.Е. Сборник Формул по математике. М.: Питер, 2009.-128с.

4.Бахвалов Н.С. Численные методы. М.: Просвещение, 1975.-245с.

5.Семашко Г.Л., Салтыков А.И. Программирование на языке паскаль. М.: Наука, 1988.-128с.

http://5ballov.qip.ru/referats/preview/101858/3/?kursovaya-pervoobraznaya-funktsiya-i-neopredelennyiy





Дата публикования: 2015-03-29; Прочитано: 952 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.025 с)...