Ліві та праві суми Рімана є наближенням до певних інтегралів . Звичайно, в математиці нам потрібно бути дуже точними, тому ми прагнемо обчислити їх за допомогою ряду підрозділів, що наближаються до нескінченності, але це не потрібно для цілей цього завдання. Натомість слід спробувати написати найкоротшу програму, взявши введення та надавши висновок будь-яким із методів за замовчуванням , будь-якою мовою програмування , яка виконує такі дії:
Завдання
Враховуючи два раціональних числа і (межі визначеного інтеграла), додатне ціле число , булева представляє лівий / правий, і функцію чорного поля , обчислюють ліву або праву Ріманову суму (залежно від ) від , використовуючи рівних підрозділів.
Технічні характеристики вводу / виводу
і можуть бути раціональними / числами або дробами з плаваючою комою.
може бути представлено будь-якими двома різними і послідовними значеннями, але врахуйте, що вам не дозволяється приймати повні або часткові функції як вхідні дані.
- функція чорного поля. Посилаючись на метавідповідь, зв'язану вище, до вмісту (тобто коду) функцій чорної скриньки неможливо отримати доступ, ви можете лише викликати їх (передаючи аргументи, якщо це можливо) та спостерігати за їх результатами . Якщо потрібно, додайте необхідну інформацію про синтаксис, який використовує ваша мова, щоб ми могли перевірити ваше подання.
Як вихід, ви повинні надати раціональну / з плаваючою точкою / дробом, що представляє суму Рімана, про яку ви просите. Як обговорювалося раніше , неточність з плаваючою комою може бути проігнорована, якщо ваш висновок точний щонайменше до трьох десяткових знаків після округлення до найближчого кратного 1/1000 (наприклад 1.4529999
, точне замість 1.453
).
Математичні характеристики
гарантовано буде безперервним між і (без стрибків, без дірок, без вертикальних асимптот).
Є три можливі випадки, з якими вам доведеться впоратися: (Результат повинен бути або його еквіваленти), або .
Якщо , інтеграл змінює свій знак. Також правильне почуття інтеграла в цьому випадку спрямоване на .
Площі під графіком негативні, а ті, що над графом - позитивні.
Приклади / Випробування
Роздільна здатність не є оптимальною, тому що мені довелося їх трохи зменшити, але вони все ще читаються.
, k = право:
Результат повинен бути , тому що ширина кожного прямокутника дорівнює та відповідному висоти .
, k = зліва:
Вихід повинен бути .
, k = справа:
Очікуване значення виходу становить , оскільки інтеграл змінює знаки при перегортанні меж ( ) .
, k = зліва:
Обчисливши нашу Ріманову суму, отримаємо .
18 , k = право - Вихід: .
0 , k = зліва - вихід: .
0,385723952885505 , 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) - чорна скринька, чому це важливо?