[From Bruce Abbott (950113.1125 EST)]
Rick Marken (960112.2330) --
Me:
you say that Killeen's model is a positive feedback system that
is in equilibrium (which means a loop gain < 1.0).
Bruce Abbott (960112.2015)
To be in equilibrium the loop gain has to be 1.0
This is not consistent with Bill's analysis of P-systems (p. 143
in LCS). Bill claims that a positive feedback loop is stable only
when loop gain is _less than_ 1.0; as soon as the loop gain becomes
1.0 the system becomes unstable.
I think we are talking about different circumstances. Bill is talking about
a variable that can take on both positive and negative values. In that
case, when g < 1.0 the following will be true:
X(n) < g*X(n-1), X > 0
X(n) = g*X(n-1), X = 0
X(n) > g*X(n-1), X < 0
Or, to put it simply, the deviation of X from zero will be reduced with each
iteration, regardless of whether X is above or below zero. Once X reaches
zero, it will stay there. An example would be a ball rolling down the
curved sides of a bowl. Move it up a side and release it, and it will
always return to the bottom.
In this system, if the gain is 1.0, X(n) = X(n) regardless of the value of
X. Such a system is neither stable nor unstable; it is astable. An example
would be a ball resting on a flat, horizontal surface. Wherever you put it,
it stays there when you release it.
If the gain is > 1.0, then any small deviation of X from zero leads to
runaway, because the absolute value of X(n) will be larger than the absolute
value of X(n-1) on each cycle. Such a system is unstable. This is the ball
resting at the top of a hill: any slight push sends it accelerating down.
The kind of system I was describing has a variable that ranges from zero on
up, and the gain is positive. If the gain is > 1 then
X(n) > g*X(n-1)
and the system runs away to infinity unless it encounters an upper limit, in
which case the limit forces X(n) = g*X(n-1). Now, if this is true, then
g = X(n)/X(n-1) = 1.0 at the limit.
If the gain is positive and < 1 then
X(n) < g*X(n-1)
and the system runs away to zero, at which point it encounters its lower
limit. At this point X(n) = X(n-1) = 0.0, and once again the gain is
effectively 1.0 since X remains unchanged over cycles. [Mathematically, the
gain is undefined, since g = X(n)/X(n-1) = 0.0/0.0 is undefined.]
When g = 1.0 then
X(n) = g*X(n-1) and the system remaines in its current state over iterations.
Now, imagine that g is a negative function of X such that g is always
positive throughout the range of X. Assume the following:
When X = a, g = 1.0;
When X < a, g > 1.0;
When X > a, g < 1.0;
When X = a, then g = 1.0 and X(n) = g*X(n-1). The system will remain at a.
When X < a, then g > 1.0 and X(n) > g*X(n-1). X will approach a from below
as a negative exponential.
When X > a, then g < 1.0 and X(n) < g*X(n-1). X will approach a from above
as a negative exponential. By linking g to X in this way, we have converted
this bistable, positive feedback system into a stable, negative feedback
system whose stable value is a.
I suspect that Bill P. can provide a simpler description of this system, but
I believe that it works as I suggest.
In order to make the loop dynamically stable I had to use a _leaky_
integrator in the output function, so that:o := o + (k.2i-o)
If the output function is a simple integral (o := o + k.2i) then the
loop variables (o and i) go to infinity no matter what the loop gain
(unless the loop gain is 0.0).I can stabilize the loop with a loop gain of 1.0 or higher by making the
integrator "leak" more than it increments:o := o + (k.2i-k.3o)
By making k.3 large enough, you can stabilize the loop even with very
high gain.
What do you suppose your leaky integrator is doing to the loop gain on each
iteration? When you find the right answer to that question, you will know
why this positive feedback loop stabilizes.
Regards,
Bruce