Приближенное вычисление двойного интеграла

Автор работы: Пользователь скрыл имя, 19 Июня 2014 в 03:27, реферат

Краткое описание

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

Содержание

Теоретическая часть 3
Квадратурные формулы Ньютона-Котеса 3
Формула Симпсона и её остаточный член 5
Общая формула Симпсона 6
Кубатурная формула Симпсона 7
Выполнение работы 10
Результаты выполнения программы 12
Листинг 13

Вложенные файлы: 1 файл

RGR_ChM_Islam (2).docx

— 1.09 Мб (Скачать файл)

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

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

КАЗАНСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. А.Н.ТУПОЛЕВА

Кафедра Прикладной математики и информатики им. Ю.В..Кожевникова

 

 

 

 

 

 

 

 

 

 

Расчётно-графическая работа

 по дисциплине: «Численные методы» 
на тему: 

«Приближенное вычисление двойного интеграла »

 

 

 

 

 

 

 

 

 

 

 

Выполнил: студент гр. 4412

Гаязетдинов И.И.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Казань   2012

 

 

Оглавление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

Теоретическая часть

Квадратурные формулы Ньютона-Котеса

 

 

 

 

 

 

 

 

 

 

 

 

Формула Симпсона и её остаточный член

 

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Общая формула Симпсона

 

 

 

 

 

Кубатурная формула Симпсона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

Необходимо вычислить двойной интеграл

 

 

 

с применением кубатурной формулой Симпсона.

 

Вычислим данный интеграл при помощи формулы Ньютона-Лейбница:

 

 

 

 

 

Кубатурная формула Симпсона при n=4:

 

y


                      


1   


                     

            D

 

        1. x

 

 

 

 

 

 

 

 

 

 

] ]

 

где  

i

0

1

2

3

4

xi

0

0.25

0.5

0.75

1

yi

0

0.25

0.5

0.75

1


Кубатурная формула Симпсона при n=8:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результаты выполнения программы

 

 

 

n

Точное значение интеграла,

Кубатурная Формула Симпсона, 
SD =

| Кубатурная Формула Симпсона –|,

SD -

4

 

 

0.125

0,11111111193895340

0,01388888806104660

8

0,12022569775581360

0,00477430224418640


 

 

 

 

 

 

 

 

 

 

 

Вывод: С уменьшением шагов h по оси ОХ и k по оси OY точность кубатурной формулы Симпсона увеличивается.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг

 

// RGR_ch_M_Ucjam.cpp: определяет  точку входа для консольного  приложения.

//

 

#include "stdafx.h"

#include <stdio.h>

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

 

 

float x[9], y[9],h,k,a,A,b,B,S4,S8,integral,f[9][9];

int i,j,n;

a=b=0.;

A=B=1.;

n=4;

integral=1./8;

cout<<"       Gayazetdinov Islam  4412   RGR 25_3"<<endl<<endl;

 

for (int qwe=0; qwe<2; qwe++)

{

 

cout<<"______________---n="<<n<<"---___________________"<<endl<<endl;

 

h=(A-a)/n;

k=(B-b)/n;

x[0]=a;

y[0]=b;

 

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

{

              x[i+1]=x[i]+h;

  y[i+1]=y[i]+k;

  cout<<"X"<<i<<"=";

  printf("%0.3f",x[i]);

  cout<<"   Y"<<i<<"=";

  printf("%0.3f",y[i]);

  cout<<endl;

}

 

 

 cout<<endl;

 

 cout<<"F[i][j]=xy, x*x+y*y<=1, x>=0, y>=0"<<endl<<endl;

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

{

for (j=0; j<=n; j++)

{

if( (x[i]*x[i]+y[j]*y[j])<=1.0)

{

 f[i][j]= x[i]*y[j];

 //if(f[i][j]!=0.)

 cout<<"F["<<i<<"]"<<"["<<j<<"]="<<f[i][j]<<endl;

}

else

{

f[i][j]= 0;

}

}

}

 

 

 cout<<endl<<"              | Fij |=|Xi*Yj|:"<<endl;

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

{

cout<<endl;

for (j=0; j<=n; j++)

{

printf("%6.4f  ", f[i][j]);

}

}

 

cout<<endl;

S4=h*k/9*(f[0][0]+f[4][0]+f[0][4]+f[4][4]+2*(f[2][0]+f[0][2]+f[4][2]+f[2][4])+4*(f[1][0]+f[3][0]+f[0][1]+f[4][1]+f[2][2]+f[0][3]+f[4][3]+f[1][4]+f[3][4])+8*(f[2][1]+f[1][2]+f[3][2]+f[2][3])+16*(f[1][1]+f[3][1]+f[1][3]+f[3][3]));

S8=h*k/9*(f[0][0]+f[8][0]+f[0][8]+f[8][8]+4*(f[1][0]+f[3][0]+f[5][0]+f[7][0]+f[0][1]+f[8][1]+f[2][2]+f[4][2]+f[6][2]+f[0][3]+f[8][3]+f[2][4]+f[4][4]+f[6][4]+f[0][5]+f[8][5]+f[2][6]+f[4][6]+f[6][6]+f[0][7]+f[8][7]+f[1][8]+f[3][8]+f[5][8]+f[7][8])+2*(f[2][0]+f[4][0]+f[6][0]+f[0][2]+f[8][2]+f[0][4]+f[8][4]+f[0][6]+f[8][6]+f[2][8]+f[4][8]+f[6][8])+8*(+f[2][1]+f[4][1]+f[6][1]+f[1][2]+f[3][2]+f[5][2]+f[7][2]+f[2][3]+f[4][3]+f[0][3]+f[1][4]+f[3][4]+f[5][4]+f[7][4]+f[2][5]+f[4][5]+f[6][5]+f[1][6]+f[3][6]+f[5][6]+f[7][6]+f[2][7]+f[4][7]+f[6][7])+16*(+f[1][1]+f[3][1]+f[5][1]+f[7][1]+f[1][3]+f[3][3]+f[5][3]+f[7][3]+f[1][5]+f[5][5]+f[7][5]+f[3][5]+f[1][7]+f[3][7]+f[5][7]+f[7][7]));

if (n!=8)

{

cout<<endl<<"n=4: S=";

printf("%.17f    |S4-f(x,y)|= %.17f\n",S4,abs(S4-integral));

}

else

{

cout<<endl<<"n=8: S=";

printf("%.17f    |S8-f(x,y)|= %.17f",S8,abs(S8-integral));

}

cout<<endl<<endl;

n=n*2;

 

}

 

int qwe;

cin>>qwe;

return 0;

 

}

 

 

 

 

 

 

 


Информация о работе Приближенное вычисление двойного интеграла