Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 10
1

OpenMP, тройной интеграл

12.02.2015, 23:53. Просмотров 1321. Ответов 2
Метки нет (Все метки)


Здравствуйте!
Стоит задача нахождения интеграла с использованием технологии OpenMP. Написал следующий код нахождения интеграла методом прямоугольников:

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
#include <iostream>
#include <Windows.h>
#include <omp.h>
 
#define PARALLEL
 
double inline Function(double value)
{
    return(value * value * value * value);
}
 
double FindInt(double low, double high, double step)
{
    double Value = 1;
 
    int Count = (high - low) / step + 1;
 
    for (int i = 0; i < 3; i++)
    {
        double Temp1 = 0;
        double Temp2 = 1;
        double temp = low;
#ifdef PARALLEL
#pragma omp parallel for reduction(+:Temp1, temp) reduction(*:Temp2)
#endif
        for (int i = 0; i < Count; i++)
        {
            Temp2 = 1;
 
            Temp2 *= temp;
            Temp2 *= temp;
            Temp2 *= temp;
            Temp2 *= temp;
            Temp2 *= step;
 
            Temp1 += Temp2;
 
            temp += step;
        }
        Value *= Temp1;
    }
 
    return(Value);
}
 
void main()
{
    int count = 0;
    double step;
    std::cout << "Input Step: ";
    std::cin >> step;
 
    DWORD Start = GetTickCount();
    std::cout << FindInt(0,1,step);
    std::cout << std::endl << "Time: " << (GetTickCount() - Start);
 
    std::cin >> step;
}
Без использования OpenMP программа выдает корректный результат. При включении OMP программа выдает неверное значение(порядка 10^(-10)). Как можно решить данную проблему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2015, 23:53
Ответы с готовыми решениями:

Кратный интеграл методом Монте Карло OpenMP
Здравствуйте, есть последовательная программа для вычисления кратного интеграла методом Монте...

OpenMP. Время выполнения программы больше чем без OpenMP
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там...

C++ OpenMP Определенный интеграл - метод Симпсона
Ребят, имею следующее задание. В С++ не мастер, но я никак не могу понять, как реализовать этот...

Тройной интеграл
Найти объем тела Т,ограниченного данными поверхностями. Конкретно вопрос по рисунку.О нахождении...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
2
What a waste!
1588 / 1287 / 173
Регистрация: 21.04.2012
Сообщений: 2,696
13.02.2015, 05:19 2
Цитата Сообщение от IvanPisarev Посмотреть сообщение
C++
1
reduction(+:Temp1, temp)
Temp1 и temp при reduction + будут инициализированы 0, но и смысла использовать reduction(+, temp) вроде нет; убрать reduction *
0
Эксперт С++
1919 / 1261 / 360
Регистрация: 16.05.2013
Сообщений: 3,293
Записей в блоге: 6
13.02.2015, 08:28 3
Цитата Сообщение от IvanPisarev Посмотреть сообщение
При включении OMP программа выдает неверное значение(порядка 10^(-10)). Как можно решить данную проблему?
Сложение вещественных чисел не коммутативно. Возможно использование long double.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2015, 08:28

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

тройной интеграл
как найти объём тела через тройной интеграл ??? в какой лит. можно это найти, уже всё перерыл...

Тройной интеграл
Добрый вечер. Есть один интеграл: \int \int \int x^2dxdydz , G: x^2+y^2=9;z=0;z=1; Дошел до...

тройной интеграл
\int_{0}^{R}dx\int_{0}^{\sqrt{{R}^{2}-{x}^{2}}}dy\int_{0}^{\sqrt{{R}^{2}-{x}^{2}-{y}^{2}}}dz

тройной интеграл
Как взять данный интеграл

Тройной интеграл
Решить тройной интеграл. Или напишите подробный алгоритм решения. Спасибо.

Тройной интеграл
3 \iiint_{D} \operatorname{d}x\operatorname{d}y\operatorname{d}z D: 3x-y+0z=0 Добавлено...


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

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

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