Расчет определённого интеграла. Фролова Ксения. 6 курс — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Постановка задачи)
(Реализация)
Строка 6: Строка 6:
 
  <math>\int^b_a f(x)\,dx \approx \sum_{i=0}^{n-1} \frac{ f(x_i) + f(x_{i+1}) }{2} (x_{i+1} - x_{i}) </math>
 
  <math>\int^b_a f(x)\,dx \approx \sum_{i=0}^{n-1} \frac{ f(x_i) + f(x_{i+1}) }{2} (x_{i+1} - x_{i}) </math>
 
При этом нам необходимо распределить заданное количество интервалов между определенным количеством процессов. На каждом полученном таким способом интервале процесс интегрирования осуществляется отдельным процессом, при этом в связи с использованием явной схемы соседние процессы должны обмениваться крайними значениями, полученными на предыдущем шаге, для выполнения следующего шага. Так, каждый процесс рассчитывает определенное количество интервалов по методу трапеций и обменивается информацией с соседними процессами. Суммируя результаты, полученные каждым отдельным процессом, мы получаем конечный результат.
 
При этом нам необходимо распределить заданное количество интервалов между определенным количеством процессов. На каждом полученном таким способом интервале процесс интегрирования осуществляется отдельным процессом, при этом в связи с использованием явной схемы соседние процессы должны обмениваться крайними значениями, полученными на предыдущем шаге, для выполнения следующего шага. Так, каждый процесс рассчитывает определенное количество интервалов по методу трапеций и обменивается информацией с соседними процессами. Суммируя результаты, полученные каждым отдельным процессом, мы получаем конечный результат.
 +
Программа, выполняющая расчет интеграла:
 +
==Результаты==

Версия 14:51, 17 января 2016

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

Необходимо вычислить определенный интеграл [math]\int^1_0x^2dx[/math] с использованием средств параллельного программирования на основе MPI.

Реализация

Для расчета указанного интеграла используется метод трапеций - метод численного интегрирования функции одной переменной, заключающийся в замене на каждом элементарном отрезке подинтегральной функции на многочлен первой степени, то есть линейную функцию. Площадь под графиком функции аппроксимируется прямоугольными трапециями. Отрезок [a, b] (в данной задаче [0,1]) разбивается на заданное количество интервалов (в данной задаче n=100000000), и на каждом из элементарных отрезков применяется формула трапеций. Cуммирование даст составную формулу трапеций:

[math]\int^b_a f(x)\,dx \approx \sum_{i=0}^{n-1} \frac{ f(x_i) + f(x_{i+1}) }{2} (x_{i+1} - x_{i}) [/math]

При этом нам необходимо распределить заданное количество интервалов между определенным количеством процессов. На каждом полученном таким способом интервале процесс интегрирования осуществляется отдельным процессом, при этом в связи с использованием явной схемы соседние процессы должны обмениваться крайними значениями, полученными на предыдущем шаге, для выполнения следующего шага. Так, каждый процесс рассчитывает определенное количество интервалов по методу трапеций и обменивается информацией с соседними процессами. Суммируя результаты, полученные каждым отдельным процессом, мы получаем конечный результат. Программа, выполняющая расчет интеграла:

Результаты