Linke und rechte Riemann-Summen sind Annäherungen an bestimmte Integrale . Natürlich müssen wir in der Mathematik sehr genau sein, deshalb versuchen wir, sie mit einer Reihe von Unterteilungen zu berechnen, die gegen unendlich gehen, aber das wird für die Zwecke dieser Herausforderung nicht benötigt. Sie sollten stattdessen versuchen, das kürzeste Programm zu schreiben, indem Sie Eingaben und Ausgaben mit einer der Standardmethoden in einer beliebigen Programmiersprache vornehmen , die Folgendes ausführen:
Aufgabe
Mit zwei rationalen Zahlen und (den Grenzen des bestimmten Integrals), einer positiven ganzen Zahl , einem Booleschen für left / right und einer Black-Box-Funktion berechnen Sie die linke oder rechte Riemann-Summe (in Abhängigkeit von k ) von \ int_a ^ bf (x) \ mathrm {d} x mit n gleichen Unterteilungen.
E / A-Spezifikationen
und können rationale / Gleitkommazahlen oder Brüche sein.
kann durch zwei unterschiedliche und konsistente Werte dargestellt werden. Beachten Sie jedoch, dass Sie keine vollständigen oder teilweisen Funktionen als Eingabe verwenden dürfen.
ist eine Black-Box-Funktion. Unter Berufung auf die oben verlinkte Meta-Antwort kann möglicherweise nicht auf den Inhalt (dh den Code) von Black-Box-Funktionen zugegriffen werden. Sie können sie nur aufrufen (ggf. Argumente übergeben) und ihre Ausgabe beobachten . Geben Sie bei Bedarf die erforderlichen Informationen zu der von Ihrer Sprache verwendeten Syntax an, damit wir Ihren Beitrag testen können.
Als Ausgabe müssen Sie einen rationalen Gleitkomma-Bruch angeben, der die Riemann-Summe darstellt, nach der Sie gefragt werden. Wie bereits erwähnt , kann die Gleitkomma-Ungenauigkeit ignoriert werden, solange Ihre Ausgabe auf mindestens drei Dezimalstellen genau ist, wenn sie auf das nächste Vielfache von 1/1000 gerundet wird (z. B. 1.4529999
ist in Ordnung statt 1.453
).
Math Specs
ist garantiert durchgehend zwischen und (keine Sprünge, keine Löcher, keine vertikalen Asymptoten).
Es gibt drei mögliche Fälle, die Sie behandeln müssen: (Das Ergebnis sollte oder dessen Äquivalente sein), oder .
Wenn , ändert das Integral sein Vorzeichen. Auch der richtige Sinn des Integrals ist in diesem Fall in Richtung .
Bereiche unter dem Diagramm sind negativ und diejenigen über dem Diagramm sind positiv.
Beispiele / Testfälle
Die Auflösung ist nicht optimal, weil ich sie etwas verkleinern musste, aber sie sind immer noch lesbar.
, k = rechts:
Das Ergebnis sollte , da die Breite jedes Rechtecks und die entsprechende ist Die Höhen sind .
, k = links:
Die Ausgabe sollte .
, k = rechts:
Der erwartete Ausgabewert ist , da das Integral beim Umkehren der Grenzen das Vorzeichen ändert ( ) .b < a
, k = left:
wir unsere Riemann-Summe berechnen, erhalten wir .
, k = rechts - Ausgabe: .
, k = links - Ausgabe: .
, k = rechts - Ausgabe: . Beachten Sie, dass der Sinus hier Bogenmaß verwendet, Sie können jedoch auch Grad verwenden.
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.
Nun, da f (x) eine Blackbox ist, warum ist das wichtig?