Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Nick08
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
1

Вычислить двойной интеграл методом Гаусса

16.04.2013, 22:36. Просмотров 1394. Ответов 8
Метки нет (Все метки)

Неправильный результат выдаёт. Помогите найти в чём ошибка. (Visual C++ 2008)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
using namespace std;
 
double Func (double x, double y) //Podintegralinaya function
{
    double F;
    F=exp(-(x*x+y+y));
    return F;
}
 
double Xi(int i, int j) //uzli
       {
           double array[8][8]=
           {
           {0.5      ,0        ,0        ,0        ,0       ,0       ,0,0},
           {-0.577350,0.577350 ,0        ,0        ,0       ,0       ,0,0},
           {-0.774597,0        ,0.774597 ,0        ,0       ,0       ,0,0},
           {-0.861136,-0.339981,0.339981 ,0.861136 ,0       ,0       ,0,0},
           {-0.906180,-0.538470,0        ,0.538470 ,0.906180,0       ,0,0},
           {-0.932470,-0.661210,-0.238620,0.238620 ,0.661210,0.932470,0,0},
           {-0.949108,-0.741531,-0.405845,0        ,0.405845,0.741531,0.949108,0},
           {-0.960290,-0.796666,-0.525532,-0.183434,0.183434,0.525532,0.796666,0.960290}
           };
          return array[i][j];
       }              
    
 
double Ci(int i, int j) //vesovie koefficienti
    {
                         double array[8][8]=
                  {
           {2,0,0,0,0,0,0,0},
           {1,1,0,0,0,0,0,0},
           {0.555555,0.888889,0.555555,0,0,0,0,0},
           {0.347855,0.652145,0.652145,0.347855,0,0,0,0},
           {0.236927,0.478629,0.568889,0.478629,0.236927,0,0,0},
           {0.171324,0.360761,0.467914,0.467914,0.360761,0.171324,0,0},
           {0.129485,0.279705,0.381830,0.417960,0.381830,0.279705,0.129485,0},
           {0.101228,0.222381,0.313707,0.362684,0.362684,0.313707,0.222381,0.101228}
                   };
                          return array[i][j];
    }
 
 
double GaussMethod (double A, double B, double C, double D, int N) //A, B, C, D - predeli integrirovaniya
{
    double Sum=0;
    for (int i=0;i<=N;i++)
    {
        Sum=Sum+Func( (A+B)/2+((B-A)/2)*Xi(N,i) , (C+D)/2+((D-C)/2)*Xi(N,i) ) * Ci(N,i);
    }
    return Sum*((B-A)*(D-C)/4);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    cout<<"Otvet = "<<GaussMethod(-1,1,-1,1,7)<<endl;
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 22:36
Ответы с готовыми решениями:

Найти двойной интеграл методом прямоугольников
программа для решения задачи вычисления двойного интеграла методом...

Определённый интеграл методом Гаусса
Составить программу вычисления определенного интеграла с автоматическим выбором...

Вычислить интеграл методом Симпсона
Требуется написать программу, которая решает интеграл методом Сипмсона. Вот...

Вычислить интеграл методом трапеции
как написать программу?

Вычислить интеграл f(x)=5x(кв.)-x+2 методом прямоугольников
Напишите программу вычисления интеграла f(x)=5x(кв.)-x+2 методом прямоугольников

8
w8me
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
17.04.2013, 02:06 2
C++
1
2
3
4
5
6
7
8
9
double GaussMethod (double A, double B, double C, double D, int N) //A, B, C, D - predeli integrirovaniya
{
    double Sum=0;
    for (int i=0;i<=N;i++)
    {
        Sum+=(Func(0,Xi(N,i) )+Func(Xi(N,i),0 )) * Ci(N,i);
    }
    return Sum;
}
0
Nick08
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
17.04.2013, 10:23  [ТС] 3
Всё равно ответ неверный...
0
w8me
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
17.04.2013, 10:39 4
А с чем сверяте ?
И исходный интеграл если несложно в студию
0
Nick08
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
17.04.2013, 10:40  [ТС] 5
К примеру вот с этим - http://matematikam.ru/calculate-online/definite-integral.php . Также смотрел ответ в книге...
0
w8me
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
17.04.2013, 10:45 6
Исходный интеграл если несложно в студию
0
Nick08
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
17.04.2013, 10:47  [ТС] 7
exp(-(x*x+y+y)). Пределы интегрирования: (-1, 1), (-1, 1)
0
w8me
496 / 11 / 6
Регистрация: 10.04.2013
Сообщений: 44
17.04.2013, 14:39 8
Действительно поспешил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double GaussMethod (double A, double B, double C, double D, int N) 
{
    double Sum=0;
    for (int i=0;i<=N;i++)
    {
        Sum+=Func(Xi(N,i),0)* Ci(N,i);
    }
    double Fy=Sum;
    Sum=0;
    for (int i=0;i<=N;i++)
    {
        Sum+=Func(0,Xi(N,i))* Ci(N,i)*Fy;
    }
    return Sum;
}
0
Nick08
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 11
21.04.2013, 15:38  [ТС] 9
Для этой функции с такими пределами интегрирования всё правильно. Стоит изменить интегрируемую функцию или пределы, то неверный результат...
0
21.04.2013, 15:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 15:38

Вычислить интеграл методом прямоугольников
Ребят помогите пожалуйста кому не трудно :( Вычислить интеграл методом...

Вычислить определенный интеграл методом прямоугольников
Вычислить определенный интеграл методом прямоугольников Помогите!!! Вообще...

Вычислить определённый интеграл методом тропеций
помогите пожалуйста ни как не пойму как реализовать вычисление интеграла


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru