Sumy Riemanna po lewej i prawej stronie są przybliżeniami do całek oznaczonych . Oczywiście w matematyce musimy być bardzo dokładni, więc staramy się je obliczać za pomocą szeregu podziałów zbliżających się do nieskończoności, ale nie jest to potrzebne do celów tego wyzwania. Zamiast tego powinieneś spróbować napisać najkrótszy program, przyjmując dane wejściowe i dostarczając dane wyjściowe za pomocą dowolnej domyślnej metody , w dowolnym języku programowania , który wykonuje następujące czynności:
Zadanie
Biorąc pod uwagę dwie liczby wymierne i (granice całkowitej całki), dodatnią liczbę całkowitą , wartość logiczną reprezentującą funkcję lewo / prawo i czarną skrzynkę , oblicz lewą lub prawą sumę Riemanna (w zależności od ) z , używając równych poddziałów.
Specyfikacja I / O
i mogą być liczbami racjonalne / zmiennoprzecinkowe lub frakcje.
może być reprezentowane przez dowolne dwie odrębne i spójne wartości, ale należy pamiętać, że nie wolno przyjmować pełnych lub częściowych funkcji jako danych wejściowych.
jest funkcją czarnej skrzynki. Powołując się na powyższą meta odpowiedź, zawartość (tj. Kod) funkcji czarnej skrzynki może nie być dostępna, możesz tylko wywoływać je (przekazując argumenty, jeśli dotyczy) i obserwować ich wyniki . W razie potrzeby podaj niezbędne informacje o składni używanej przez Twój język, abyśmy mogli przetestować Twoje zgłoszenie.
Jako wynik musisz podać ułamek wymierny / zmiennoprzecinkowy / reprezentujący sumę Riemanna, o którą jesteś proszony. Jak omówiono w przeszłości , niedokładność zmiennoprzecinkowa może być ignorowana, o ile wynik jest dokładny do co najmniej trzech miejsc po przecinku, gdy jest zaokrąglany do najbliższej wielokrotności 1/1000 (np. 1.4529999
Jest w porządku zamiast 1.453
).
Dane matematyczne
jest zagwarantowana w sposób ciągły pomiędzy i (bez skoków, otwory, nie ma pionowych asymptoty).
Istnieją trzy możliwe przypadki, z którymi musisz sobie poradzić: (Wynik powinien wynosić lub jej odpowiedniki), lub .
Jeśli , całka zmienia swój znak. Również prawo poczucie całki jest w tym przypadku w kierunku.
Obszary pod wykresem są ujemne, a te nad wykresem są dodatnie.
Przykłady / przypadki testowe
Rozdzielczość nie jest optymalna, ponieważ musiałem je nieco zmniejszyć, ale nadal są czytelne.
, k = prawo:
Wynik powinien wynosić , ponieważ szerokość każdego prostokąta wynosi a odpowiednie wysokości to .
, k = left:
Dane wyjściowe powinny wynosić .
, k = prawo:
Oczekiwana wartość wyjściowa wynosi , ponieważ całka zmienia znaki podczas przesuwania granic ( b < a ) .
, k = w lewo:
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.
Teraz, gdy f (x) jest czarną skrzynką, dlaczego to ma znaczenie?