Les sommes de Riemann gauche et droite sont des approximations d' intégrales définies . Bien sûr, en mathématiques, nous devons être très précis, nous visons donc à les calculer avec un certain nombre de subdivisions qui approchent de l'infini, mais ce n'est pas nécessaire aux fins de ce défi. Vous devriez plutôt essayer d'écrire le programme le plus court, en prenant l'entrée et en fournissant la sortie par l'une des méthodes par défaut , dans n'importe quel langage de programmation , ce qui fait ce qui suit:
Tâche
Étant donné deux nombres rationnels et (les limites de l'intégrale définie), un entier positif , un booléen représentant gauche / droite et une fonction boîte noire , calculez la somme de Riemann gauche ou droite (en fonction de ) de , en utilisant subdivisions égales .
Spécifications d'E / S
et peuvent être des nombres ou des fractions rationnelles / à virgule flottante.
peut être représenté par deux valeurs distinctes et cohérentes, mais gardez à l'esprit quevous n'êtes pas autoriséà prendre des fonctions complètes ou partielles en entrée.
est une fonction de boîte noire. En citant la méta-réponse liée ci-dessus,le contenu (c'est-à-dire le code) des fonctions de boîte noire n'est pas accessible, vous pouvez seulement les appeler (en passant des arguments le cas échéant) et observer leur sortie. Si nécessaire, veuillez inclure les informations nécessaires sur la syntaxe utilisée par votre langue afin que nous puissions tester votre soumission.
En sortie, vous devez fournir une fraction rationnelle / virgule flottante / représentant la somme de Riemann qui vous est demandée. Comme discuté dans le passé , l'imprécision en virgule flottante peut être ignorée, tant que votre sortie est précise à au moins trois décimales lorsqu'elle est arrondie au multiple le plus proche de 1/1000 (par exemple, 1.4529999
c'est bien au lieu de 1.453
).
Spécifications mathématiques
est garanti d'être continu entre et (pas de sauts, pas de trous, pas d'asymptotes verticales).
Vous devez gérer trois cas: (le résultat doit être ou ses équivalents), ou .
Si , l'intégrale change de signe. En outre, le bon sens de l'intégrale dans ce cas est vers .
Les zones sous le graphique sont négatives et celles au-dessus du graphique sont positives.
Exemples / cas de test
La résolution n'est pas optimale, car j'ai dû les réduire un peu, mais elles sont toujours lisibles.
, k = droite:
Le résultat doit être , car la largeur de chaque rectangle est et les hauteurs correspondantes sont .
, k = gauche:
La sortie doit être .
, k = droite:
La valeur de sortie attendue est , car l'intégrale change de signe lors du retournement des limites ( ) .
, k = gauche:
En calculant notre somme de Riemann, nous obtenons .
, k = droite - Sortie: .
, k = gauche - Sortie: .
, k = droite - Sortie: . Notez que le sinus utilise des radians ici, mais n'hésitez pas à utiliser des degrés à la place.
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.
Maintenant que f (x) est une boîte noire, pourquoi est-ce important?