Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа 7

.doc
Скачиваний:
26
Добавлен:
01.05.2014
Размер:
109.57 Кб
Скачать

Федеральное агенство по образованию РФ

СПбГЭТУ «ЛЭТИ»

Кафедра МО-ЭВМ

Факультет КТИ

ОТЧЕТ

по лабораторной работе № 7

Составные формулы прямоугольников, трапеций, Симпсона.

Дисциплина: вычислительная мпатематика

Студент группы 4351

Кузьменко А.

Преподаватель:

Щеголева Н.Л.

Санкт-Петербург

2006

Лабораторная работа № 7

Составные формулы прямоугольников, трапеций, Симпсона.

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

Вычислить методом прямоугольников, трапеций и Симпсона и, применив правило Рунге, найти наименьшее значение n (на­и­боль­шее значение шага h), при котором каждый из указанных методов дает приближенное значение интеграла с погрешностью , не превышающей заданную.

2. Теоретические сведения.

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

На сетке , , , составные формулы имеют следующий вид:

формула прямоугольников

;

формула трапеций

;

формула Симпсона

,

где - остаточные члены. При приближенные значения интегралов для всех трех формул (в предположении отсутствия погрешностей округления) стремятся к точному значению интеграла.

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

- для формулы прямоугольников;

- для формулы трапеций;

- для формулы Симпсона.

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

3. Текст программ.

#include <math.h>

extern double F(double x);

double Met_P (double a,double b,int n)

{

double h, x, s; int i;

h=(b-a)/n;

x=a; s=0;

for (i=1;i<=n;i++)

{

s=s+F(x+h/2);

x=x+h;

}

s=s*h;

return (s);

}

double Met_T (double a,double b,int n)

{

double h, x1, x2, s; int i;

h=(b-a)/n;

x1=a; x2=a+h; s=0;

for (i=1;i<=n;i++)

{

s=s+F(x1)+F(x2);

x1=x2; x2=x2+h;

}

s=s*h/2;

return (s);

}

double Met_S (double a,double b,int n)

{

double h, x1, x2, x3, s; int i;

h=(b-a)/n;

x1=a; x2=a+h; x3=x2+h; s=0;

for (i=1;i<=n/2;i++)

{

s=s+F(x1)+4*F(x2)+F(x3);

x1=x3; x2=x3+h; x3=x2+h;

}

s=s*h/3;

return (s);

}

#include "Met.h"

#include <iostream.h>

#include <conio.h>

void main()

{

double I1, I2, eps, epsil; int n;

clrscr;

cout<<"\n*** Программа вычисляет интеграл f=cos(x^2)на[0,1] ***\n"

<<"*** с заданной точностью eps различными методами ***\n"

<<"\n‚Введите точность: eps=";

cin>>epsil;

cout<<"\n___Метод прямоугольников___";

n=1; eps=1000;

while (epsil<eps)

{

n=n*2;

I1 = Met_P(0,1,n); I2 = Met_P(0,1,n*2);

eps=fabs(I1-I2)/3;

}

I1=I2+eps;

cout<<"\n\nРезультат: "<<I1<<"\nn = "<<n<<"\nТочность: "<<eps;

cout<<"\n\n___Метод трапеций___";

n=1; eps=1000;

while (epsil<eps)

{

n=n*2;

I1 = Met_T(0,1,n); I2 = Met_T(0,1,n*2);

eps=fabs(I1-I2)/3;

}

I1=I2-eps;

cout<<"\n\nРезультат: "<<I1<<"\nn = "<<n<<"\nТочность: "<<eps;

cout<<"\n\n___Метод Симпсона ___";

n=1; eps=1000;

while (epsil<eps)

{

n=n*2;

I1 = Met_S(0,1,n); I2 = Met_S(0,1,n*2);

eps=fabs(I1-I2)/15;

}

I1=I2-eps;

cout<<"\n\nРезультат: "<<I1<<"\nn = "<<n<<"\nТочность: "<<eps;

getch();

}

double F(double x)

{

double s;

s=cos(x*x);

return s;

}

4. Вычислительный эксперимент.

Вычислим точное значение искомого интеграла: = 0,90452426.

Зная точное значение, можем сравнить теоретическую точность с реальной точностью результата.

В столбце «точность» - точность по формуле Рунге, в столбце «точность пр.» - разность полученного и точного результата. Она должна быть меньше точности по Рунге или хотя бы требуемой точности

Результаты работы программы:

epsil=0.01

метод

результат

n

точность

точность пр

прямоугольников

0,913267

2

0,00436

0,008743

трапеций

0,887017

2

0,008742

0,017507

Симпсона

0,904378

2

0,000123

0,000146

epsil=0.001

метод

результат

n

точность

точность пр

прямоугольников

0,9051

8

0,000274

0,000548

трапеций

0,9034

8

0,000548

0,001095

Симпсона

0,9044

2

0,000123

0,000146

epsil=0.0001

метод

результат

n

точность

точность пр

прямоугольников

0,9047

16

6,85E-05

0,000137

трапеций

0,9045

32

3.424e-05

6,83E-05

Симпсона

0,9045

4

1.526e-06

1,26E-06

5. Выводы.

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