Many of one thing

It moves to first order and not at all

Two bars from one joint to two pinned ones, all three in line: the rank leaves a freedom pointing straight up, and lifting the joint stretches both bars. The obstruction is 1.414214, the walk travels a millionth of what it is asked to, and how far it gets is a property of the tolerance rather than of the mechanism.

Assumes Many loops, one freedom and A constraint that has been said already.

Everything this field measures is a rank, and a rank is a statement about a linearisation. It is worth finding out what that costs before trusting any of it.

Take the smallest possible case. Pin two points a unit apart on either side of a third, put all three in line, and join the middle one to each of the others with a bar.

The smallest mechanism that is not oneTwo bars from a free joint to two pinned ones, with the three points in line. The constraint matrix has two rows and two columns, both rows are horizontal, and its rank is 1: one freedom left over, pointing straight up, and one dependency among the two bars. Move the joint up and neither bar changes length **to first order**, which is what the freedom says. To second order both bars get longer, by the same amount and in the same direction, and there is nothing to trade off against — which is what the dependency says. The obstruction is the dependency applied to the second-order stretch and comes to 1.414214; anything but nought there and the freedom is not the beginning of a motion. Lifted by 0.00 the bars are 0.00000 longer, which is the whole argument drawn to scale.the whole travelrank 1 · one freedom · one dependencyobstruction 1.4142
Fig. 1 Two bars, one free joint, two pinned ones, all in line. Two coordinates and two constraints.

Two coordinates, two bars. The rigidity matrix has two rows and both of them point along the same line, so the rank is 1. The mobility is 1 and there is one dependency among the constraints.

The freedom points straight up. Move the joint upward and neither bar changes length — not to first order.

To second order

Lift the joint by hh and each bar becomes 1+h2\sqrt{1 + h^2} long, which is 1+h2/21 + h^2/2 to leading order. Both bars get longer, by the same amount, and there is nothing to trade against.

The smallest mechanism that is not oneTwo bars from a free joint to two pinned ones, with the three points in line. The constraint matrix has two rows and two columns, both rows are horizontal, and its rank is 1: one freedom left over, pointing straight up, and one dependency among the two bars. Move the joint up and neither bar changes length **to first order**, which is what the freedom says. To second order both bars get longer, by the same amount and in the same direction, and there is nothing to trade off against — which is what the dependency says. The obstruction is the dependency applied to the second-order stretch and comes to 1.414214; anything but nought there and the freedom is not the beginning of a motion. Lifted by 0.34 the bars are 0.05622 longer, which is the whole argument drawn to scale.the whole travelrank 1 · one freedom · one dependencyobstruction 1.4142
Fig. 2 The same framework with the joint lifted. Both bars are longer; drag the lift and watch the amount.

That is the whole argument in a picture, and the arithmetic that generalises it is short. A flex uu satisfies R(p)u=0R(p)\,u = 0. Following it needs a second-order correction uu'' satisfying

R(p)u=q(u),q(u)b=uiuj2,R(p)\,u'' = -q(u), \qquad q(u)_b = |u_i - u_j|^2,

where qq is what the bar lengths do if nothing corrects them. That equation is solvable exactly when q(u)q(u) is orthogonal to every dependency among the rows — because a dependency is precisely a direction in constraint space that no change of coordinates can reach.

So each dependency ω\omega gives one number,

bωbuiuj2,\sum_b \omega_b\,|u_i - u_j|^2,

and a flex with any of them non-zero is not the beginning of a motion. Here there is one dependency, (1,1)/2(1,1)/\sqrt{2} — the two bars say the same thing about horizontal motion — and the obstruction comes to 1.4142141.414214.

Not small. Not near a threshold. The freedom the rank found is not a freedom.

Why this cannot happen on a four-bar

The reason this whole question has been avoidable until now is worth stating, because it explains why a field about networks is where it turns up.

A framework with no dependencies has no obstruction. If s=0s = 0 then R(p)R(p) has full row rank, the second-order equation is solvable for any qq, and every first-order flex extends. A four-bar has four bars and no dependency among them; so does a slider-crank, an arm, a cam follower and every other mechanism in the first eighteen fields of this site — which is why a four-bar’s mobility can be counted and believed.

The moment there are dependencies there are obstructions to check, and this field’s mechanisms have four, or sixteen, or a hundred.

What the count is right about. Freedoms minus dependencies, against what the count predicts, on seven assemblies from three different representations. The difference is exact every time and it is exact for a reason that has nothing to do with mechanisms: the count is unknowns minus constraints, the rank is a number no larger than either, and the two nullities are what each of them has left over. So a count is not wrong in the way a mismeasurement is wrong. It is a statement about a difference being read as a statement about one of the terms — and on four of these seven rows both terms are large and the difference is nearly meaningless.
Fig. 3 The dependency column, which is also the count of obstructions a flex has to clear.

The flat sheet, where it is unavoidable

The two-bar framework is a drawing somebody chose. The same situation arrives unchosen in every crease pattern in this field, at the one configuration every pattern passes through.

At the flat state every crease lies in the plane, so each interior vertex’s three constraint rows span two dimensions and the rank falls by exactly one per vertex. On a three-by-three Miura sheet the rank is 8 rather than 12 and the nullity is four, on a mechanism with one freedom.

What the flat state does and does not know. At the flat state every crease lies in the plane, so the three rows each vertex contributes span two dimensions rather than three and the rank is exactly twice the interior vertex count on every row here. The nullity is correspondingly larger than the mechanism's — four freedoms on a three-by-three sheet with one — and the last row is the point: a grid whose vertices have been moved and which cannot fold at all has the same rank and the same nullity at the flat state as the Miura does. The flat state is where the branches meet, so the tangent space there is the union of all of them and belongs to none; and whether any of those directions is the start of a motion is a second-order question that no rank answers.
Fig. 4 Three Miura sheets and one grid that cannot fold at all, measured at the flat state. Rank twice the interior vertex count on every row.

Three of those four directions are not motions of the Miura. And the last row of that table is the sharpest version of the point: a grid whose vertices have been moved and which folds to no angle whatever has the same rank and the same nullity as the Miura does. The first-order analysis cannot tell a mechanism from a structure, and the difference is entirely second order.

That is why this rung sits where it does. In a field of chains the distinction is an edge case; in a field of networks the flat state is where every folded mechanism starts, and a reader who takes its nullity for a mobility has the wrong number for every pattern on the site.

The walk

The second-order test is an argument. The measurement is a walk.

Step along the flex, then pull every bar back to its own length with Newton, and repeat. A framework with a genuine motion walks as far as it is asked to. A framework whose flex is blocked walks nowhere.

Following a freedom, and finding out whether it was one. Step along the flex the rank leaves, then pull every bar back to its own length with Newton, and repeat. A framework with a genuine motion walks as far as it is asked to, with the bar lengths held to 10⁻¹³ the whole way. A framework whose flex is blocked walks nowhere: every step converges, because the projection simply undoes the step and puts the mechanism back where it started, and the distance travelled is 6.1e-7 of the 0.40 it was asked for. That ratio is the measurement, and it separates the two cases by six orders of magnitude. It also has to be the distance from the start and not the number of steps that converged — counted the second way, the blocked framework reports a successful walk.
Fig. 5 Three frameworks, each walked forty steps along the flex its rank leaves.

A four-bar’s coupler, asked to travel 0.4, travels 0.3836 with the bar lengths held to 7.5×10137.5 \times 10^{-13}: the shortfall is the curvature of the path, not a failure. The two bars in line, asked to travel 0.6, travel 6.1×1076.1 \times 10^{-7}.

The two cases separate by six orders of magnitude, and the ratio is the measurement.

It has to be the distance from the start and not the number of steps that converged. The first version of that routine reported how many steps had converged, and on a blocked framework every step converges: the projection simply undoes the step and puts the mechanism back where it began. Twenty steps of a hundredth, a worst residual of 2.6×10132.6 \times 10^{-13}, and a configuration that had moved by six ten-millionths — reported as a successful walk of 0.2. The number was true and it was a statement about the solver.

How far a blocked flex goes

The distance the blocked framework does manage is worth pinning down, because it is the difference between a measurement and an artefact.

A blocked flex travels exactly as far as it is allowed to cheat. The same two bars in line, walked along their flex with five different tolerances on the bar lengths. The distance the mechanism manages is not a property of the mechanism at all: it is where the quadratic stretch crosses whatever error is being tolerated, so halving the exponent of the tolerance halves the exponent of the distance. The fitted slope is 0.4923 against a half. That is the honest way to report a blocked flex — the mechanism does not move, and any distance quoted for it is a statement about the solver. A framework with a real motion gives a flat line here at whatever distance it was asked to walk.
Fig. 6 The same two bars, walked with five different tolerances on the bar lengths.

With the bar lengths allowed to be wrong by 10610^{-6} it travels 6.7×1046.7 \times 10^{-4}; at 10810^{-8}, 7.9×1057.9 \times 10^{-5}; at 101410^{-14}, 7.7×1087.7 \times 10^{-8}. The fitted slope on a log-log plot is 0.512 against a half.

That is exactly what it should be. The stretch is quadratic in the displacement, so the displacement at which it crosses a given tolerance is the square root of that tolerance. The distance is not a property of the mechanism at all — it is a property of how much cheating the solver was allowed. Any figure quoted for how far a blocked flex travels is a statement about the arithmetic, and the honest way to report one is with the tolerance attached.

A framework with a real motion gives a flat line on the same axes, at whatever distance it was asked to walk.

Reading the obstruction

The obstruction is one number per dependency, and it is worth saying what its size means and does not mean.

It is not dimensionless and it is not normalised to anything a reader would recognise: bωbuiuj2\sum_b \omega_b |u_i - u_j|^2 scales with the square of whatever normalisation the flex was given and with the length units of the framework. So 1.4142141.414214 on the two bars is not “large” in any absolute sense.

What it is compared against is the scale of q(u)q(u) itself — the largest second-order stretch any bar suffers — and the test is whether the component along the dependencies is a fraction of that or is at the arithmetic’s floor. On the two bars it is the whole of it: both bars stretch by the same amount and both count with the same sign, so nothing cancels. On a framework whose flex does extend, the same quantity comes back at 101610^{-16} of the scale, because the stretches genuinely do cancel against a second-order correction.

Where a network's rank decision actually is. Every singular value of the deployable ring's constraint matrix, as a fraction of the largest, on a logarithmic scale. There are 48 of them and the first 44 are ordinary numbers; the last 4 are at the arithmetic's own floor. The decision is not close — the smallest kept value is 1.1e+15 times the largest discarded one — and that is what makes a mobility computed this way a measurement rather than an opinion. It is also why the routine that takes the rank matters: the usual way to get a null space out of a small matrix squares it first, which puts the floor at 10⁻⁸ instead of 10⁻¹⁶ and would put the line through the middle of the gap.
Fig. 7 The same discipline one level down: a rank decision reported with the gap it was made across, so that a number near a threshold cannot pass as a fact.

Reporting the ratio rather than the raw number is the same habit as reporting a rank’s gap, and for the same reason: a quantity computed near zero is only as good as what it is being compared with.

The other direction, which is worse

The two bars are a degenerate drawing and a reader could reasonably conclude that the problem is degeneracy. It is not, and the case that shows it is not is a framework nobody would call degenerate.

Six joints in space is eighteen coordinates; six rigid motions come off; twelve bars is twelve constraints. Maxwell’s count is exactly isostatic — no mechanism, no redundancy, every bar carrying its own share. The rank is 11, not 12: there is one dependency and one freedom left over, and the freedom is a genuine finite motion, walked here with every bar held to 4.6×10134.6 \times 10^{-13} of its own length over a distance of 0.16.

So the two failures are opposite and neither is visible in a count. A framework can show a freedom that is not one, and a framework can be counted rigid and move. Both together are the subject of the octahedron’s own essay; what matters here is that no arithmetic on the numbers of bars and joints distinguishes any of the four possible cases.

Where else this site has met it

The distinction has appeared before under other names, and it is worth collecting them because they are the same thing.

A four-bar at a toggleone of the two things called jamming — has a momentarily degenerate Jacobian and a perfectly good motion through it: the flex is real and the rank is temporarily short. A parallel platform at a direct singularity gains a freedom with every actuator locked, and that freedom is real too — the platform genuinely moves. What is new here is the third case, where the rank leaves a direction and nothing at all travels in it.

The cleanest small instance of that is not even in the plane. A degree-three vertex of a crease pattern is a spherical triangle and cannot fold; at the flat state its three crease directions are coplanar, its three constraint rows span two dimensions, and its nullity comes back as one. Asked to fold to 0.05 radians the residual is 1.2×1031.2 \times 10^{-3} and it grows from there. The vertex is a spherical triangle, and a triangle does not move.

Three creases, a freedom at the flat state, and no fold. A vertex of three creases is a spherical triangle, and a triangle does not move. At the flat state its constraint matrix says otherwise: all three crease directions lie in the plane, so the three rows span two dimensions instead of three and the nullity comes back as 1 — a freedom, at a configuration where there is none. Asked to fold to any angle at all, the vertex refuses: the residual never falls below 1.2e-3 and grows with the fold. The four-crease vertex in the right-hand column, asked the same questions, closes at the arithmetic's own floor every time. A nullity is a candidate for a motion and not a motion, and this is the smallest mechanism on the site that says so.
Fig. 8 A degree-three vertex, asked to fold to five angles, against a degree-four one asked the same questions.

What this costs to check, and when it is worth it

The practical question is when a rank has to be followed by a walk, and it has a cheap answer.

If the dependency count is nought, never. The second-order equation is solvable for any right-hand side and every flex extends. That covers the lazy tong at every size and every mechanism in eighteen of this site’s twenty fields.

If it is small, use the obstruction. One number per dependency per flex, each a sum over the constraints, and the whole test costs one rank of the transposed matrix and a dot product. It decides the two-bar case, the degree-three vertex and the flat state of every crease pattern in the field.

If the obstruction vanishes, walk. That is the expensive path — a Newton projection at every step, which for a network means a damped least-squares solve on a matrix with hundreds of rows — and it is the only thing that settles the question. The Bricard octahedron is the case that needs it: its obstruction vanishes, and only forty steps of walking establish that the motion is real.

There is a fourth case the field does not reach and should name. A flex whose obstruction vanishes at second order and which is blocked at third would walk a short distance and stop — further than a tolerance-limited crawl and much less than it was asked. Nothing in this field’s mechanisms does that, and if something did, the ratio column would show it as a number between the two extremes rather than at one of them. The instrument would report it correctly; the interpretation would need more care.

What a rank is worth after this

The conclusion is not that ranks are unreliable. It is that a rank answers a question with a known shape, and the question is narrower than it looks.

A nullity is an upper bound on the mobility, always. The tangent space to the configuration set is contained in the null space of the Jacobian, so anything the mechanism can do is in there. Nothing is missed.

It is an equality when there are no dependencies, which covers every mechanism in the site’s first eighteen fields and the lazy tong.

And when there are dependencies it is a candidate list, and the candidates have to be checked — by the second-order test, which is cheap and decides most cases, or by a walk, which is expensive and decides all of them.

That is why every table in this field carries the dependency column next to the mobility column. The first number tells the reader what the second one is worth.

The two questions a mechanism is asked

It is worth ending on the shape of the whole thing, because it is the same shape three of this field’s rungs have.

There is a linear question — what does the constraint matrix permit, right here — and it is cheap, exact and answers a great deal. And there is a global question — what can this mechanism actually do — and the linear answer bounds it and does not determine it.

The site has met that gap before in every direction. A solve finds a configuration and cannot say how many there are. A search that has stopped finding new branches is not a proof there are no more. A ratio computed at an instant is not the ratio through a turn. This rung is the same gap at the level of the tangent space, and it is the one place where the gap has a test rather than only a warning: the obstruction is computable, it is exact, and it refuses.

Six assemblies, one routine, three disagreements and one accident. Every row is the same three steps: write down the constraint Jacobian, take its rank, and subtract it from the number of unknowns. The representations differ — bars between points, bodies joined by pins, panels joined by creases, one cell of a pattern that repeats for ever — and the routine does not. The counted column is the arithmetic on the numbers of bodies and joints; the measured column is the nullity of the matrix. They agree on the lazy tong and on the kagome cell and disagree on the other four, most sharply on the deployable ring, which the count declares immobile and which is sold as a mechanism that opens. The right-hand column is the reason: constraints that repeat what another constraint has already said, which the count has no way of seeing and the rank cannot help seeing. The fourth row is worth reading twice: the count says nothing can move and nothing can, so the two agree — and they agree for the wrong reason, because that pattern's flat state shows four freedoms and not one of them is a motion.
Fig. 9 The field’s six assemblies. On four of them the dependency column is not nought, which is exactly the four on which a nullity needs checking before it is believed.

What the test cannot do is confirm. An obstruction that vanishes says the flex is not blocked at second order and nothing more, and the mechanism still has to be walked. So the honest summary of this rung is asymmetric, which is usually the sign that it is right: a non-zero obstruction is a proof of rigidity in that direction, and a zero one is an invitation to go and see.

No finite test certifies a motion

The fourth case the field names and does not reach — a flex clearing second order and blocked at third — is worth following, because it says something about what any test of this kind can do.

The obstructions form a sequence. First order is the rank; second order is the quadratic obstruction this essay computes; third order is another expression, fourth another. A flex that clears every one of the first kk may be blocked at the k+1k+1-th, and there is no kk at which the sequence is guaranteed to stop.

So no finite number of obstruction tests certifies a motion. Each one can refute — a non-zero obstruction is a proof that the flex is not a motion — and none of them can confirm, because clearing them all up to some order says nothing about the next.

The walk is not a certificate either, and this is worth being exact about because the essay presents it as the arbiter. A walk that travels is strong evidence and it is not a proof: it travelled at a stated tolerance, with the bar lengths held to 101210^{-12}, and a mechanism that travels 0.38 with an error of 101210^{-12} has not been shown to travel with an error of zero. A walk that fails is likewise a measurement at a tolerance, which is precisely why the field reports the distance against the tolerance rather than a verdict.

What does certify is a construction: an explicit family of configurations, parameterised, each of which satisfies the constraints exactly. That is how every mechanism in this field that genuinely moves is known to move — a Miura sheet folds because a fold was constructed, a ring deploys because its three formulae generate a configuration at every ρ\rho, a tong opens because 2nLcosθ2nL\cos\theta is an identity.

Which gives the field’s instruments their proper standing. The rank is a candidate list, the obstructions refute, the walk measures, and only a construction proves. Three of those four are cheap and the fourth is the design work; and it is not a coincidence that the mechanisms this field can be certain about are exactly the ones somebody constructed rather than found.

What is not settled by any of this

Second order is not the end. A flex that clears every obstruction at second order can still fail at third, and the general question of whether a first-order flex extends to a finite motion is not decided by any finite number of derivatives. The walk is the instrument that settles it, and even a walk that goes a long way is evidence rather than proof — the same standing caution a search that has stopped finding new answers earns on this site.

And a blocked flex is not nothing. It is a direction in which the mechanism is much softer than in others, because the resistance grows quadratically rather than linearly. What that softness is worth needs a material and a stiffness and is not this field’s; the geometric statement is that the length error goes as the square of the displacement, and the exponent is measured at 2 rather than assumed.

What this makes readable

Essays that name this one as a prerequisite.

About the same objects

Not linked from either essay — found by the objects both name.

What links here

The 8 of 15 essays linking to this one that name the most of the same objects.

The objects this essay names

Each one links to every other essay that touches it.

Infinitesimal flexMobilityNetworkNull spaceRankRedundant constraintSecond-orderSingularityTolerance