Pași ai distribuțiilor Markov finite
Avansează un vector de probabilități cu cel mult 100 tranziții ale unei matrice Markov cu maximum opt stări.
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| Verifică înainte de aplicare | Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări. |
|---|---|
| Modele | Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat. |
| Proiect | Testează zero pași și stări absorbante, respingând valori negative și sume de linie depărtate de unu cu peste 1e-12. |
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 resultPăstrează clare convențiile probabilităților în timpul modificării codului
StepMaranta oferă unei sarcini de modelare probabilistică un spațiu de lucru Windows pentru programare cu IA, cu contextul proiectului și conversație cu un model conectat. Începe cu convenția aplicației pentru stări și tranziții, apoi identifică rutina și codul care o folosește. Solicitarea unei explicații înaintea modificării ajută la distingerea unei nepotriviri de interpretare de o eroare de calcul.
O sarcină cu tranziții Markov finite poate specifica o distribuție inițială, o matrice de tranziție bazată pe rânduri și un număr limitat de pași. Include în cerere intervalul probabilităților acceptate și toleranța sumei rândurilor. Întreabă cum păstrează codul propus acel contract la zero pași și într-o stare absorbantă, în loc să accepți ieșirea doar pentru că numerele par plauzibile.
Examinează modificarea rezultată folosind distribuții așteptate explicite în propriile teste ale proiectului. Verifică separat dimensiunile malformate și valorile negative de comportamentul valid al tranzițiilor. Păstrează intrarea originală alături de ieșire când verifici modificarea datelor. Această abordare leagă o propunere numerică de cerințe observabile ale aplicației fără a prezenta spațiul de lucru ca serviciu de validare statistică.
StepMaranta acceptă conexiuni la endpointuri compatibile cu OpenAI sau Anthropic și credențiale când sunt necesare. Poți alege un model de IA fără restricții dacă endpointul îl oferă. Restricțiile, instrumentele disponibile și limitele contextului depind de acel model și server. Definiția convenției tranzițiilor și rezultatele verificărilor tale rămân centrale pentru acceptarea codului propus.
Întrebări pentru o modificare a modelului de tranziții
- Ce convenție a matricei trebuie să ofer?
Precizează dacă fiecare rând descrie tranziții dintr-o stare și cum este reprezentată distribuția inițială. Include un rezultat mic așteptat. Astfel modelul poate examina implementarea fără să înlocuiască implicit convenția cu una transpusă, nefolosită de apelanți.
- De ce să verific explicit zero pași?
Astfel, distribuția inițială neschimbată devine o cerință observabilă și poate fi dezvăluită o modificare nedorită a datelor. Precizează dacă este necesar un obiect rezultat separat, apoi testează valorile returnate și intrarea originală cu propriile verificări ale proiectului înainte să accepți implementarea propusă.
- Cum trebuie inclusă toleranța sumei rândurilor în cerere?
Oferă toleranța cerută de aplicație și explică ce se întâmplă în afara ei. Examinează validarea separat de calculul tranziției. Un model poate discuta alternative, dar nu trebuie să aleagă implicit alt prag de acceptare în timp ce implementează o modificare solicitată fără legătură.
- Validează întregul model un exemplu reușit de stare absorbantă?
Nu. El verifică un comportament util al codului. Include alte cazuri relevante de test și evaluează dacă ipotezele modelului se potrivesc aplicației. Spațiul de lucru sprijină examinarea sursei; nu stabilește validitatea științifică a probabilităților pe care le furnizezi.
StepMaranta · Actualizat 2026-10-25