Bell-Zahlen-Rechner
B(5) ist 52: Es gibt 52 Möglichkeiten, fünf verschiedene Elemente in nichtleere Gruppen aufzuteilen, wenn die Reihenfolge der Gruppen keine Rolle spielt. Geben Sie ein n von 0 bis 20 ein und erhalten Sie die exakte Bell-Zahl. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Index n
- 0
- Bell-Zahl
- 1
kostenlos
Was B(n) zählt
Zu einer nicht negativen Ganzzahl n liefert dieser Endpunkt B(n), die Bell-Zahl, welche die Möglichkeiten zählt, eine Menge aus n verschiedenen Elementen in nicht leere, ungeordnete Blöcke zu partitionieren. Da eine Partition die Reihenfolge der Blöcke und die Reihenfolge der Elemente innerhalb eines Blocks ignoriert, ist B(n) auch gleich der Summe der Stirling-Zahlen zweiter Art über alle möglichen Blockanzahlen. Das Ergebnis ist eine exakte Ganzzahl, nie ein Float oder eine Näherung, sodass nachgelagerter Code es direkt vergleichen kann.
Die verwendete Rekurrenz
Intern wird der Wert mit einer Bottom-up-Rekurrenz aufgebaut statt mit einer statischen Nachschlagetabelle. Ausgehend von B(0)=1 wird jedes neue B(i+1) als Summe über k von C(i,k)·B(k) akkumuliert, wobei der Binomialkoeffizient C(i,k) inkrementell mit der multiplikativen Aktualisierung c = c·(i−k+1)/k erzeugt wird, was es vermeidet, jemals eine Fakultät zu bilden, die überlaufen könnte. Die laufende Summe wird durch Math.round geführt, bevor sie gespeichert wird, was den winzigen Fließkommafehler behebt, den die Division einbringen kann, sodass jedes gespeicherte B(i) eine exakte Ganzzahl bleibt.
Dies ist dieselbe Identität, die dem Bell-Dreieck zugrunde liegt, ausgewertet in O(n²) Additionen.
Bereich, Prüfung und Zugang
Die Prüfung ist streng und erfolgt vor jeder Berechnung. Die obere Schranke von 20 ist bewusst gewählt: B(20) ist gleich 51.724.158.235.372, die größte Bell-Zahl, die noch exakt in eine JavaScript-Zahl doppelter Genauigkeit passt, sodass der Endpunkt nie stillschweigend eine gerundete Großzahl zurückgibt. Negatives n, gebrochenes n, Strings, Arrays und ein fehlendes n werden alle auf dieselbe Weise abgelehnt.
Anwendungsfälle
Kombinatorik im Unterricht
Prüfen Sie Partitionsanzahlen B(0)–B(20) beim Lehren von Mengenpartitionen und Stirling-Zahlen, mit exakten Ganzzahlen, die Studierende für kleine n von Hand nachrechnen können.
Häufige Fragen
Was berechnet dies?
Die Bell-Zahl B(n): die Anzahl der Möglichkeiten, eine Menge aus n Elementen in nicht leere, ungeordnete Blöcke zu partitionieren. Sie gibt n zurück und liefert value.
Warum ist n auf 20 begrenzt?
B(20) = 51.724.158.235.372 ist die größte Bell-Zahl, die exakt in eine Zahl doppelter Genauigkeit passt, sodass das Ergebnis oberhalb von 20 nicht mehr exakt sein könnte. n muss eine Ganzzahl von 0 bis 20 sein.
Ist die Antwort exakt?
Ja. Jeder Term wird innerhalb der Rekurrenz auf eine Ganzzahl zurückgerundet, sodass value eine exakte Ganzzahl ist und keine Fließkomma-Näherung.
Auf wie viele Arten lassen sich drei Elemente in Gruppen aufteilen?
Auf fünf, das ist B(3). Alle drei bleiben zusammen, jedes steht allein, oder eines der drei möglichen Paare bildet sich, während das übrige Element für sich bleibt.
Wie hängen Bell-Zahlen und Stirling-Zahlen zusammen?
Eine Bell-Zahl ist die Summe der Stirling-Zahlen zweiter Art zum selben n, genommen über jede mögliche Anzahl von Gruppen. Jede Stirling-Zahl zählt die Aufteilungen in genau so viele Gruppen.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/math/bell-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5}'const res = await fetch("https://api.kit.forhosting.com/math/bell-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/bell-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/bell-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/bell-number", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"n": 5
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.bell_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Geben Sie eine nicht negative Ganzzahl n (0 bis 20) ein und erhalten Sie B(n), die Anzahl der Möglichkeiten, eine Menge aus n Elementen in nicht leere, ungeordnete Blöcke zu partitionieren, zurückgegeben als exakte Ganzzahl in JSON. Kostenlos im Browser oder per API ab $0.002.
Was B(n) zählt
B(0) und B(1) sind beide gleich 1, danach wächst die Folge mit 2, 5, 15, 52, 203, 877 für n = 2 bis 7. Der Anfragekörper trägt ein einziges Pflichtfeld, n, und die Antwort gibt es zusammen mit value, der berechneten Bell-Zahl, als schlichtes JSON wie {"n":5,"value":52} zurück.
Die verwendete Rekurrenz
Jedes Zwischenergebnis B(k) bis n wird einmal berechnet und wiederverwendet, sodass ein Aufruf für n=20 nur einige hundert Operationen ausführt und sofort zurückkehrt, ohne Rekursionstiefe, die überlaufen könnte, und ohne Memoization-Cache, der zwischen den Anfragen erst warmlaufen müsste.
Bereich, Prüfung und Zugang
Die Eingabe muss ein JSON-Objekt sein, n muss eine Ganzzahl sein und im geschlossenen Bereich 0 bis 20 liegen; alles andere wirft einen typisierten invalid_input-Fehler, dessen Meldung das beanstandete Feld nennt statt einer nackten Ausnahme.
Integrationsbeispiele
Test-Fixtures
Erzeugen Sie geprüfte Bell-Zahlen als golden values für Unit-Tests Ihres eigenen Partitions-, Cluster- oder Aufzählungscodes.
Werkzeuge für Zahlenfolgen
Befüllen Sie OEIS-A000110-Nachschlagevorgänge oder Tabellen in großer Zahl über die API, ohne eine Großzahlenbibliothek an den Client auszuliefern.
Technische Fragen
Was liefert eine ungültige Eingabe zurück?
Einen typisierten invalid_input-Fehler, der das Feld benennt — zum Beispiel ein nicht ganzzahliges, negatives oder außerhalb des Bereichs liegendes n oder ein fehlendes n.
Ist es kostenlos?
Ja im Browser als tier-A-Widget. Die API kostet $0.002 pro erfolgreichem Aufruf; fehlgeschlagene Aufgaben werden nicht berechnet.