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

lab8 / report_lab8

.docx
Скачиваний:
5
Добавлен:
22.12.2018
Размер:
79.85 Кб
Скачать

МИНОБРНАУКИ РОССИИ

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

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра математического обеспечения и применения ЭВМ

отчет

по практической работе № 8

по дисциплине «Вычислительная математика»

Тема: Формула Гаусса

Студент гр. 7777

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

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

2018

Цель работы.

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

(1)

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

, ;

, ;

, ;

, .

Основные теоретические положения.

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

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

, (2)

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

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

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

Порядок выполнения, следующий:

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

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

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

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

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

Были составлены функцию для вычисления интеграла по формуле Гаусса, функция для вычисления подынтегральной функции. Также была написана головная программа, содержащая обращение к заданным функциям. Коды данных функций приведены в приложении A.

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

.

Вычисление интеграла с помощью WolframAlpha:

.

В данном случае метод Гаусса дал точность в 7 знаков после запятой.

Выводы.

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

ПРИЛОЖЕНИЕ А

Код программы

#include "pch.h"

#include <iostream>

#include <math.h>

#include <iomanip>

using namespace std;

double F(double x) {

return (x*exp(x) / (1 + x * x));

}

double gauss(double a, double b) {

double s = 0, t, t1 = (a + b) / 2, t2 = (b - a) / 2;

double A[8], X[8];

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

A[0] = A[7] = 0.10122854;

A[1] = A[6] = 0.22238103;

A[2] = A[5] = 0.31370664;

A[3] = A[4] = 0.36268378;

X[0] = -0.96028986;

X[1] = -0.79666648;

X[2] = -0.52553242;

X[3] = -0.18343464;

X[4] = -X[3];

X[5] = -X[2];

X[6] = -X[1];

X[7] = -X[0];

for (int i = 0; i < 8; i++){

t = t1 + t2 * X[i];

s += A[i] * F(t);

}

return (t2 * s);

}

int main(){

double a, b, I;

a = 0;

b = 1;

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

I = gauss(a, b);

cout << "I = " <<fixed << setprecision(10)<< I << endl;

}

Соседние файлы в папке lab8