Anwendung herunterladen
Wählen Sie einen Ordner und lassen Sie die betreffenden Dateien vor einer Änderung lesen. Legen Sie Ziel und Grenzen der Aufgabe fest.
Führe einen Wahrscheinlichkeitsvektor durch höchstens 100 Übergänge einer Markov-Matrix mit bis zu acht Zuständen. Prüfe null Schritte und absorbierende Zustände und lehne negative Werte sowie Zeilensummen mit mehr als 1e-12 Abstand zu eins ab.
Wählen Sie einen Ordner und lassen Sie die betreffenden Dateien vor einer Änderung lesen. Legen Sie Ziel und Grenzen der Aufgabe fest.
Wählen Sie einen kompatiblen Endpunkt. Verfügbare Werkzeuge und Antwortqualität hängen vom konfigurierten Modell und Server ab.
Prüfen Sie Änderungen und Befehlsausgaben. Führen Sie die Projektprüfungen aus, bevor Sie das Ergebnis übernehmen; erzeugter Code ist nicht automatisch getestet.
Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
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 resultVor dem Anwenden prüfen. Prüfen Sie Änderungen und Befehlsausgaben. Führen Sie die Projektprüfungen aus, bevor Sie das Ergebnis übernehmen; erzeugter Code ist nicht automatisch getestet.