systems.base.utils.stochastic.SDEValidator
systems.base.utils.stochastic.SDEValidator(
drift_expr,
diffusion_expr,
state_vars,
control_vars,
time_var=None,
parameters=None,
)
Validates stochastic dynamical system definitions.
Performs comprehensive validation including: - Drift validation (reuses SymbolicValidator) - Diffusion dimension compatibility - Symbol resolution - Type checking - Noise structure validation - Zero diffusion detection - Parameter validation (via SymbolicValidator) - Physical constraints (via SymbolicValidator) - Naming conventions (via SymbolicValidator)
Examples
>>> from sympy import symbols, Matrix
>>> x1, x2, u = symbols('x1 x2 u')
>>>
>>> drift = Matrix([[x2], [-x1 + u]])
>>> diffusion = Matrix([[0.1], [0.2]])
>>>
>>> validator = SDEValidator(drift, diffusion, [x1, x2], [u])
>>> result = validator.validate()
>>>
>>> if result.is_valid:
... print("System is valid!")
... else:
... print(f"Errors: {result.errors}")
Methods
| validate |
Perform comprehensive SDE validation. |
validate
systems.base.utils.stochastic.SDEValidator.validate(
claimed_noise_type=None,
raise_on_error=False,
)
Perform comprehensive SDE validation.
Parameters
| claimed_noise_type |
str |
User’s claim about noise type (‘additive’, ‘diagonal’, ‘scalar’) If provided, validates claim matches actual structure |
None |
| raise_on_error |
bool |
If True, raise ValidationError on validation failure |
False |
Returns
|
SymbolicValidationResult |
Validation results with errors, warnings, and info |
Raises
|
ValidationError |
If validation fails and raise_on_error=True |
Examples
>>> result = validator.validate()
>>> if not result.is_valid:
... print(f"Validation failed: {result.errors}")
>>>
>>> # Validate claimed noise type
>>> result = validator.validate(claimed_noise_type='additive')
>>>
>>> # Raise exception on error
>>> try:
... result = validator.validate(raise_on_error=True)
... except ValidationError as e:
... print(f"Validation failed: {e}")