Скачиваний:
43
Добавлен:
01.05.2014
Размер:
104.45 Кб
Скачать

Министерство образования и науки РФ

Санкт-Петербургский государственный электротехнический университет

“ЛЭТИ”

кафедра МОЭВМ

Лабораторная работа №8 по дисциплине вычислительная математика

на тему:

«Формула Гаусса».

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

  1. Год

I. Цель работы:

Используя квадратурную формулу Гаусса наивысшего порядка точности, вычислить значения интеграла

Интеграл предлагается вычислить по квадратурной формуле Гаусса с восемью узлами:

, ;

, ;

, ;

, .

II. Общие сведения:

В квадратурной формуле Гаусса

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

,

где ; - узлы квадратурной формулы Гаусса; - гауссовы коэффициенты .

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

III. Порядок выполнения работы:

  1. Составить программу-функцию для вычисления интеграла по формуле Гаусса.

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

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

  4. Результаты работы оформить в виде краткого отчета, содержащего характеристику используемого метода вычислений, его точности и полученное значение интеграла.

IV. Выполнение работы:

1) Составим программу-функцию для вычисления интеграла по формуле Гаусса.

double GAUS(double L,double R)

{

float X5,X6,X7,X8,A5,A6,A7,A8;

float A1=A8=0.10122854,

A2=A7=0.22238103,

A3=A6=0.31370664,

A4=A5=0.36268378;

float X1=-0.96028986,

X2=-0.79666648,

X3=-0.52553242,

X4=-0.18343464;

X5=-X4;

X6=-X3;

X7=-X2;

X8=-X1;

float s=(R-L)/2*(A1*F((L+R)/2+(R-L)/2*X1)+A2*F((L+R)/2+(R-L)/2*X2)+A3*F((L+R)/2+(R-L)/2*X3)+A4*F((L+R)/2+(R-L)/2*X4)+A5*F((L+R)/2+(R-L)/2*X5)+A6*F((L+R)/2+(R-L)/2*X6)+A7*F((L+R)/2+(R-L)/2*X7)+A8*F((L+R)/2+(R-L)/2*X8));

return(s);

}

2) Составим программу-функцию для вычисления подынтегральной функции.

double F(double x)

{

double s;

s = (x*sin(x)/(1+x*x));

return (s);

}

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

void main()

{

clrscr();

cout<<"\n Welcome!\n\n";

cout<<"I = x*sin(x)/(1 + x^2), [0,1]\n\n";

double a,b,I;

float a1,b1;

double F(double);

double GAUS(double,double);

printf("Input a: ");

scanf("%f",&a1);

a = a1;

printf("Input b: ");

scanf("%f",&b1);

b = b1;

I = GAUS(a,b);

printf("\nMethod of Gauss: I = %f",I);

cout<<"\n\nPress any key to exit, please.\n";

getch();

}

4) Проведем вычисления по программе:

Integral = 0.195478

Теперь вычислим наш заданный интеграл с помощью программы MathCad:

Integral = 0.19547841

V. Вывод:

Проанализировав результаты работы программы, мы можем сделать вывод, что формула Гаусса позволяет вычислить приближенное значение интеграла по конечному отрезку [a,b].

Соседние файлы в папке LR_8
  • #
    01.05.20141.27 Кб19MAIN.BAK
  • #
    01.05.20141.27 Кб22Main.CPP
  • #
    01.05.201443.87 Кб20MAIN.OBJ
  • #
    01.05.20141.15 Кб19Main.~CPP
  • #
    01.05.2014196.61 Кб19Project1.tds
  • #
    01.05.2014104.45 Кб43ВМ_8.doc