Schritte endlicher Markov-Verteilungen
Führe einen Wahrscheinlichkeitsvektor durch höchstens 100 Übergänge einer Markov-Matrix mit bis zu acht Zuständen.
from math import fsum, isfinite
def markov_steps(initial, matrix, steps):
if type(initial) is not list or not 1 <= len(initial) <= 8:
raise ValueError("state count")
n = len(initial)
if type(matrix) is not list or len(matrix) != n or any(
type(row) is not list or len(row) != n for row in matrix):
raise ValueError("square matrix")
rows = [initial] + matrix
if any(type(x) not in (int, float) or not 0 <= x <= 1 or
not isfinite(x) for row in rows for x in row):
raise ValueError("probability values")
if any(abs(fsum(row)-1) > 1e-12 for row in rows):
raise ValueError("row sums")
if type(steps) is not int or not 0 <= steps <= 100:
raise ValueError("step count")
result = initial[:]
for _ in range(steps):
result = [fsum(result[i] * matrix[i][j] for i in range(n))
for j in range(n)]
return result| Vor dem Anwenden prüfen | Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen. |
|---|---|
| Modelle | Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen. |
| Projekt | Prüfe null Schritte und absorbierende Zustände und lehne negative Werte sowie Zeilensummen mit mehr als 1e-12 Abstand zu eins ab. |
from math import fsum, isfinite
def markov_steps(initial, matrix, steps):
if type(initial) is not list or not 1 <= len(initial) <= 8:
raise ValueError("state count")
n = len(initial)
if type(matrix) is not list or len(matrix) != n or any(
type(row) is not list or len(row) != n for row in matrix):
raise ValueError("square matrix")
rows = [initial] + matrix
if any(type(x) not in (int, float) or not 0 <= x <= 1 or
not isfinite(x) for row in rows for x in row):
raise ValueError("probability values")
if any(abs(fsum(row)-1) > 1e-12 for row in rows):
raise ValueError("row sums")
if type(steps) is not int or not 0 <= steps <= 100:
raise ValueError("step count")
result = initial[:]
for _ in range(steps):
result = [fsum(result[i] * matrix[i][j] for i in range(n))
for j in range(n)]
return resultWahrscheinlichkeitskonventionen bei Codeänderungen klar halten
StepMaranta bietet für Wahrscheinlichkeitsmodellierung eine KI-Programmierumgebung für Windows mit Projektkontext und Gespräch mit einem verbundenen Modell. Beginnen Sie mit der Anwendungskonvention für Zustände und Übergänge und benennen Sie anschließend Routine und Verbraucher. Eine Erklärung vor der Änderung anzufordern hilft, eine abweichende Interpretation von einem Berechnungsfehler zu unterscheiden.
Eine Aufgabe zu endlichen Markov-Übergängen kann eine Anfangsverteilung, eine zeilenbasierte Übergangsmatrix und eine begrenzte Schrittzahl festlegen. Nehmen Sie den zulässigen Wahrscheinlichkeitsbereich und die Toleranz der Zeilensummen in die Anfrage auf. Fragen Sie, wie der vorgeschlagene Code diesen Vertrag bei null Schritten und in einem absorbierenden Zustand bewahrt, statt die Ausgabe nur wegen plausibel aussehender Zahlen zu akzeptieren.
Prüfen Sie die resultierende Änderung mit ausdrücklich erwarteten Verteilungen in Ihren eigenen Projekttests. Prüfen Sie fehlerhafte Dimensionen und negative Werte getrennt von gültigem Übergangsverhalten. Behalten Sie bei der Prüfung auf Veränderungen die Originaleingabe neben der Ausgabe bei. Dieser Ansatz verbindet einen numerischen Vorschlag mit beobachtbaren Anwendungsanforderungen, ohne die Umgebung als statistischen Validierungsdienst darzustellen.
StepMaranta unterstützt OpenAI-kompatible oder Anthropic-Endpunktverbindungen und bei Bedarf Zugangsdaten. Sie können ein uneingeschränktes KI-Modell wählen, wenn Ihr Endpunkt eines anbietet. Einschränkungen, verfügbare Werkzeuge und Kontextgrenzen hängen von diesem Modell und Server ab. Ihre Definition der Übergangskonvention und Ihre Prüfergebnisse bleiben zentral für die Annahme des vorgeschlagenen Codes.
Fragen zu einem Patch des Übergangsmodells
- Welche Matrixkonvention sollte ich angeben?
Geben Sie an, ob jede Zeile Übergänge von einem Zustand beschreibt und wie die Anfangsverteilung dargestellt wird. Ergänzen Sie ein kleines Erwartungsergebnis. So kann das Modell die Implementierung untersuchen, ohne stillschweigend eine transponierte Konvention einzusetzen, die Ihre Aufrufer nicht verwenden.
- Warum null Schritte ausdrücklich prüfen?
Dadurch wird die unveränderte Anfangsverteilung zu einer beobachtbaren Anforderung; außerdem können unbeabsichtigte Veränderungen sichtbar werden. Legen Sie fest, ob ein separates Ergebnisobjekt nötig ist, und testen Sie vor der Annahme der Implementierung Rückgabewerte und Originaleingabe mit Ihren Projektprüfungen.
- Wie sollte die Zeilensummentoleranz in die Anfrage eingehen?
Geben Sie die von Ihrer Anwendung benötigte Toleranz an und erklären Sie, was außerhalb davon geschieht. Prüfen Sie Validierung getrennt von der Übergangsberechnung. Ein Modell kann Alternativen besprechen, sollte aber bei einer unabhängigen Änderung nicht stillschweigend eine andere Annahmeschwelle wählen.
- Validiert ein bestandener Test mit absorbierendem Zustand das ganze Modell?
Nein. Er prüft ein nützliches Codeverhalten. Nehmen Sie weitere relevante Testfälle auf und beurteilen Sie, ob die Modellannahmen zur Anwendung passen. Die Umgebung unterstützt Quellcodeprüfung; sie belegt nicht die wissenschaftliche Gültigkeit Ihrer Wahrscheinlichkeiten.
StepMaranta · Aktualisiert 2026-10-25