Левая и правая римановы суммы являются приближениями к определенным интегралам . Конечно, в математике мы должны быть очень точными, поэтому мы стремимся вычислять их с помощью ряда подразделений, приближающихся к бесконечности, но это не требуется для целей этой задачи. Вместо этого вы должны попытаться написать самую короткую программу с вводом и выводом с помощью любого из методов по умолчанию на любом языке программирования , который выполняет следующие действия:
задача
Учитывая два рациональных числа и (пределы определенного интеграла), положительное целое число , логическое значение представляющее левый / правый и функцию черного ящика , вычисляют левую или правую сумму Римана (в зависимости от ) от , используя равных подразделений.
Спецификации ввода / вывода
и могут быть рациональными числами или числами с плавающей точкой или дробями.
может быть представлено любыми двумя различными и непротиворечивыми значениями, но имейте в виду, что вы не можете принимать полные или частичные функции в качестве входных данных.
- это функция черного ящика. Ссылаясь на мета-ответ, связанный выше, содержимое (то есть код) функций черного ящика может быть недоступно, вы можете только вызывать их (передавая аргументы, если применимо) и наблюдать за их выводом . При необходимости, пожалуйста, включите необходимую информацию о синтаксисе вашего языка, чтобы мы могли проверить вашу заявку.
В качестве вывода вы должны предоставить рациональную / с плавающей запятой / дробь, представляющую сумму Римана, о которой вы просили. Как обсуждалось в прошлом , неточность с плавающей запятой можно игнорировать, при условии, что ваши выходные данные с точностью не менее трех десятичных знаков при округлении до ближайшего кратного 1/1000 (например, 1.4529999
в порядке вместо 1.453
).
Математические характеристики
гарантированно будет непрерывным между и (без скачков, без дырок, без вертикальных асимптот).
Есть три возможных случая, которые вы должны обработать: (результат должен быть или его эквивалентами), или .
Если , интеграл меняет свой знак. Кроме того , право смысл интеграла в данном случае по отношению к .
Области под графиком отрицательные, а над графиком положительные.
Примеры / Тестовые случаи
Разрешение не является оптимальным, потому что мне пришлось немного уменьшить их, но они все еще читаемы.
, k = справа:
Результат должен быть , потому что ширина каждого прямоугольника равна и соответствующему высоты .
, k = слева:
Выход должен быть .
, k = справа:
Ожидаемое выходное значение составляет , потому что интеграл меняет знаки при переключении границ ( ) .
, k = слева:
Подсчитав нашу сумму Римана, мы получим .
, k = вправо - Выход: .
, k = слева - Выход: .
, k = вправо - Выход: . Обратите внимание, что здесь синус использует радианы, но вы можете использовать градусы.
f(x) = x * sin(1 / x); a = 0; b = 1; n = 50; k = right — Output: 0.385723952885505. Note that sine uses radians here, but feel free to use degrees instead.
Теперь, когда f (x) черный ящик, почему это важно?