(материал из свободной энциклопедии Wikipedia)
Криволинейная трапеция
— плоская, ограниченная
графиком
неотрицательной непрерывной
функции y=f(x)
определенной на отрезке [a; b], осью абсцисс и прямыми x=a и x=b
Для нахождения
площади
криволинейной трапеции пользуются
интегралом
или
Это значит, что площадь криволинейной трапеции можно найти по
сумме
значений функции
y=f(x)
взятые через бесконечно малые промежутки по оси Ох на
отрезке от a до b
Можно сказать, что мы разбили криволинейную трапецию на бесконечное число
прямоугольников, длина каждого из которых равна
ординате функции
y=f(x)
через бесконечно малые промежутки по оси Ох на
отрезке от a до b,
а ширина — бесконечно малому значению х, нашли их площади
произведением длины на ширину и сложили. Предел суммы их площадей равен площади криволинейной трапеции.
Требования к средствам разработки и исполнения
Решения задач должны быть разработаны кроссплатформенными языковыми средствами, корректно
компилироваться и функционировать в операционных системах Windows и Linux.
Условие задачи
Дана криволинейная трапеция, ограниченная сверху функцией e
x2.
-
Найти ее площадь на промежутке
от a до b, разбив на n равных интервалов по оси абсцисс. Значения a,b,n передаются в командной строке,
тип a и b - вещественный, тип n - неотрицательный. Результат работы программы - рассчитанная площадь и
время рассчета в миллисекундах. Подобрать значения a, b и n таким образом, чтобы время рассчета было порядка 10 секунд.
-
Распараллелить решение предыдущей задачи, передавая и обрабатывая четвертый параметр numt - количество
потоков в программе. Каждый поток обрабатывает свой набор (n div numt) интервалов из диапазона от a до b,
основной поток обрабатывает остаток интервалов n mod numt, дожидается окончания работы остальных потоков,
суммирует полученные интервалы, выводит рассчитанную площадь и
время рассчета в миллисекундах. Сравнить время работы первого и второго решения на различных значениях numt, сделать выводы.
-
Модифицировать предыдущее решение следующим образом: при старте программы создается текстовый файл
с именем программы и расширением ".txt".
Раз в секунду (пример), а также один раз по окончании рассчета,
каждый поток (в том числе - основной) должен дописывать к указанному файлу 4 строки, блокируя при этом другие потоки:
- номер потока и количество миллисекунд, прошедшее с начала старта рассчета
- номер потока и количество обработанных интервалов
- номер потока и текущую рассчитанную сумму
- пустую строку-разделитель.
По завершении всех рассчетов основной поток должен дописать в файл 3 строки:
- количество миллисекунд, прошедшее с начала старта рассчетов
- результирующее количество обработанных интервалов
- результирующую рассчитанную сумму
- пустую строку-разделитель.
Сравнить результат работы данной программы с альтернативным вариантом, не предусматривающим синхронизации.