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

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

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

“ЛЭТИ”

 

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

 

 

 

 

 

 

 

 

 

 

 

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

на тему:

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

   

 

 

 

 

 

 

 

 

 

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

  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<< Welcome! ;

cout<<I = x*sin(x)/(1 + x2), [0,1] ;

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( Method of Gauss: I = %f,I);

cout<< Press any key to exit, please. ;

getch();

}

 

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

 

Integral = 0.195478

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

Integral = 0.19547841

 

 

 

V. Вывод:

 

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