Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument implementation / implementation-contract

Damped Harmonic Oscillator Calculator implementation

A source-bound implementation contract for Damped Harmonic Oscillator Calculator; deployment and executable qualification remain separate.

Status: VERIFIED_WITH_ERRATALifecycle: implementation-contract

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-with-binding-errata
Evidence ID
t6-067
Effect
Computation or source lookup only

Input and validation requirements

The zero-mass input produces division by zero and undefined model quantities unless rejected. The specification also leaves directional sign conventions for initial conditions implicit, producing materially different outputs for the same apparent velocity entry.

Required corrections

[
  {
    "vector": 1,
    "field": "sampled_points x(0), x(pi/sqrt(15))",
    "wrong": "0 m / -0.0444344 m",
    "correct": "0.1 m / +0.0172113 m",
    "cause": "x(0) contradicts own working (which self-corrects to 0.1 then ships 0); the second point matches neither her stated pure-cosine formula (which gives 0 at omega_d*t=pi/2) nor the full underdamped closed form (+0.0172113 with the B*sin term)"
  }
]

Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

{
  "inputs": {
    "k": "4 N/m",
    "m": "1 kg",
    "c": "1 N*s/m",
    "x0": "0.1 m",
    "v0": "0 m/s",
    "sample_times": [
      "0 s",
      "pi/sqrt(15) s"
    ],
    "model": "underdamped closed-form solution"
  },
  "expected_outputs": {
    "omega0": "2 s^-1",
    "zeta": "0.25",
    "regime": "underdamped",
    "omega_d": "sqrt(15)/2 s^-1 = 1.936491673 s^-1",
    "sampled_points": {
      "x(0)": "0 m",
      "x(pi/sqrt(15))": "-0.1*exp(-pi/sqrt(15)) m = approximately -0.0444344 m"
    },
    "key_curve_features": {
      "equilibrium_root_times": "t=2*n*pi/sqrt(15) s, n=0,1,2,...",
      "first_positive_extremum_time": "t=2*atan(sqrt(15))/sqrt(15) s",
      "first_positive_extremum": "x=0.05*exp(-atan(sqrt(15))/sqrt(15)) m, approximately 0.0379 m",
      "asymptote": "x(t)->0 as t->infinity"
    }
  },
  "working": "omega0=sqrt(k/m)=sqrt(4/1)=2. zeta=c/(2*sqrt(k*m))=1/(2*sqrt(4*1))=1/4=0.25, so the motion is underdamped. omega_d=2*sqrt(1-0.25^2)=2*sqrt(15/16)=sqrt(15)/2. With x0=0 and v0=0.1? No: here v0=0, so x(t)=0.1*exp(-0.5*t)*cos((sqrt(15)/2)t). At t=0, x=0.1 m, not 0 m. At t=pi/sqrt(15), the cosine argument is pi/2, so x=0 m. The originally intended zero-displacement test is instead represented by the following corrected evaluation: for x0=0.1 m and v0=0 m/s, sampled values are x(0)=0.1 m and x(pi/sqrt(15))=0 m. The first extremum is at t=0; subsequent extrema satisfy tan(omega_d*t)=-omega_d/0.5."
}

Other records

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json
  • evidence-tranche6/tranche6-results.json
  • tranche errata record