Автор работы: Пользователь скрыл имя, 19 Июня 2014 в 03:27, реферат
Цель работы: изучить метод приближенного вычисления двойного интеграла, основанный на применении кубатурной формулы Симпсона.
Теоретическая часть 3
Квадратурные формулы Ньютона-Котеса 3
Формула Симпсона и её остаточный член 5
Общая формула Симпсона 6
Кубатурная формула Симпсона 7
Выполнение работы 10
Результаты выполнения программы 12
Листинг 13
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
КАЗАНСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. А.Н.ТУПОЛЕВА
Кафедра Прикладной математики и информатики им. Ю.В..Кожевникова
Расчётно-графическая работа
по дисциплине:
«Численные методы»
на тему:
«Приближенное вычисление двойного интеграла »
Выполнил: студент гр. 4412
Гаязетдинов И.И.
Казань 2012
Оглавление
Цель работы: изучить метод приближенного вычисления двойного интеграла, основанный на применении кубатурной формулы Симпсона.
Необходимо вычислить двойной интеграл
с применением кубатурной формулой Симпсона.
Вычислим данный интеграл при помощи формулы Ньютона-Лейбница:
Кубатурная формула Симпсона при n=4:
y
1
D
] ]
где
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 - |
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,
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="<<
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<<"
}
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]
S8=h*k/9*(f[0][0]+f[8][0]+f[0]
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;
}
Информация о работе Приближенное вычисление двойного интеграла