Лабораторная работа3
.DOCCанкт-Петербургский Государственный Электротехнический Университет
КАФЕДРА МОЭВМ
Отчет по лабораторной работе N9
вариант N4
Преподаватель : Титов М.С.
Студент : Виноградов К. Ю.
Группа : 6361
Санкт-Петербург
1. Задание:
Составить программу, вычисляющую заданный интеграл по формуле Гусса.
2. Теоретическая часть:
В квадратурной формуле Гаусса
узлы и коэффициенты подобраны так, чтобы формула была точна для всех многочленов степени . Для приближенного вычисления интеграла по конечному отрезку выполняется замена переменной ; тогда квадратурная формула Гаусса принимает вид [2,8,12]
,
где ; - узлы квадратурной формулы Гаусса; - гауссовы коэффициенты .
Если подынтегральная функция достаточно гладкая, то формула Гаусса обеспечивает очень высокую точность при небольшом числе узлов.
В лабораторной работе №9 требуется, используя квадратурную формулу Гаусса наивысшего порядка точности, вычислить приближенное значение заданного интеграла.
Интеграл предлагается вычислить по квадратурной формуле Гаусса с восемью узлами:
, ;
,;
,;
,.
3. Порядок выполнения лабораторной работы №9.
-
Составить программу-функцию для вычисления интеграла по формуле Гаусса.
-
Составить программу-функцию для вычисления значений подынтегральной функции.
-
Составить головную программу, содержащую обращение к вычислительным процедурам и осуществляющую печать результатов.
-
Результаты работы оформить в виде краткого отчета, содержащего характеристику используемого метода вычислений, его точности и полученное значение интеграла.
4. Текст программы:
//Программа для вычисления интеграла на отрезке [1;2] по формуле Гаусса.
// Программа написана ст. гр. 6311 Виноградовым Константином
#include<conio.h>
#include<math.h>
const double t[8]= {
-0.9602898986,
-0.79666648,
-0.52553242,
-0.18343464,
0.18343464,
0.52553242,
0.79666648,
0.9602898986
};
const double c[8]= {
0.10122854,
0.22238104,
0.31370664,
0.36268378,
0.36268378,
0.31370664,
0.22238104,
0.10122854
};
const float a=1;
const float b=2;
double func(double x)
{
return (1/(x*x)*exp(-2*x));
}
main()
{
clrscr();
double answer=0;
for(int k=0;k<8;k++)
{ answer+=c[k]*func((b+a)/2+((b-a)/2)*t[k]);
cprintf(" %10.6f\n\r",answer);
};
cprintf(" ЋвўҐв > %10.6f",answer*(b-a)/2);
if(!getch()) getch();
return 0;
}
5. Результаты работы программы:
Программа вычисляет интеграл на отр.[1;2]
С помощью данной программы были получены следующие результаты :
Значение интеграла по формулам: