Page actions
instrument implementation / implementation-contract
Bode Plot Generator (generic transfer function) implementation
A source-bound implementation contract for Bode Plot Generator (generic transfer function); deployment and executable qualification remain separate.
Binding contract
This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.
- Record owner
- Guth Instruments
- Lifecycle
- verified-clean
- Evidence ID
- t8-010
- Effect
- Computation or source lookup only
Input and validation requirements
The specification exposes several unsafe edges: zero frequency creates an undefined logarithmic plot coordinate, a j-axis pole causes division by zero, a transfer-function zero creates a phase/magnitude branch singularity, and Hz versus rad/s interpretation produces materially different results. The instrument should validate these cases and make frequency and phase conventions explicit.
Required corrections
No binding erratum is attached to this unique-name record. Implementers must still preserve the declared units, domain, and failure behavior.
Inspectable interface fixture
The sample below is evidence for interface and validation tests, not a production implementation.
{
"inputs": {
"numerator_coefficients": [
1
],
"denominator_coefficients": [
1,
1
],
"frequency_hz": [
0.15915494309189535,
0.3183098861837907
]
},
"expected_outputs": {
"canonical_exact": "H(s)=1/(s+1); H(jω)=1/(1+jω); |H(jω)|=1/sqrt(1+ω^2); magnitude_dB=20log10(1/sqrt(1+ω^2)); phase=-atan(ω)",
"samples": [
{
"frequency_hz": 0.15915494309189535,
"omega_rad_s": 1,
"magnitude_db": "-10log10(2)",
"magnitude_db_numeric": -3.010299956639812,
"phase_rad": "-π/4",
"phase_rad_numeric": -0.7853981633974483
},
{
"frequency_hz": 0.3183098861837907,
"omega_rad_s": 2,
"magnitude_db": "-10log10(5)",
"magnitude_db_numeric": -6.989700043360188,
"phase_rad": "-atan(2)",
"phase_rad_numeric": -1.1071487177940904
}
],
"spot_checks": [
{
"at": {
"frequency_hz": 0.15915494309189535,
"omega_rad_s": 1,
"quantity": "magnitude_db"
},
"input_side": -3.010299956639812,
"answer_side": -3.010299956639812
},
{
"at": {
"frequency_hz": 0.15915494309189535,
"omega_rad_s": 1,
"quantity": "phase_rad"
},
"input_side": -0.7853981633974483,
"answer_side": -0.7853981633974483
},
{
"at": {
"frequency_hz": 0.3183098861837907,
"omega_rad_s": 2,
"quantity": "magnitude_db"
},
"input_side": -6.989700043360188,
"answer_side": -6.989700043360188
},
{
"at": {
"frequency_hz": 0.3183098861837907,
"omega_rad_s": 2,
"quantity": "phase_rad"
},
"input_side": -1.1071487177940904,
"answer_side": -1.1071487177940904
}
]
},
"reference_data": {
"system": "first-order unity-gain low-pass",
"expected_behavior": "-3.010299956639812 dB and -45 degrees at the pole frequency ω=1 rad/s",
"phase_degrees_at_omega_1": -45
},
"working": "At f=1/(2π) Hz, ω=2πf=1. Then H(j)=1/(1+j). Multiply by the conjugate: H=(1-j)/2, so |H|=1/sqrt(2), magnitude=20log10(1/sqrt(2))=-10log10(2)=-3.010299956639812 dB, and phase=arg(1-j)=-π/4=-0.7853981633974483 rad. At f=2/(2π) Hz, ω=2. Then |H|=1/sqrt(1+2^2)=1/sqrt(5), magnitude=-10log10(5)=-6.989700043360188 dB, and phase=-atan(2)=-1.1071487177940904 rad."
}Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche8/tranche8-results.json