challenge -- correction of code

[Hans Blom, 950919]

Bill, I have had the time to analyze the problem now. The section
where I made my changes is the following:

b := 1.0; {plug in any value here}

               {RUN THE MODEL MAXTABLE + 1 TIMES}
{==============================================================}
dold := 0.0; { we have no value d [-1] }
for i := 0 to maxtable do
begin
  x := b * u + d[i]; { ENVIRONMENT}
  dnew := x - b * u; { recreate disturbance d[i] }
  dpre := 2 * dnew - dold; { predict next disturbance d[i+1]}
  u := (r [i+1] - dpre)/b; { compute control u[i+1] }
  dold := dnew; { save previous disturbance }
  if i > 1 then { allow for learning }
  sum := sum + sqr(r[i] - x); { ACCUMULATE FOR RMS CALCULATION}
end;
{==============================================================}

In my first over-hasty reaction, I forgot to divide by b in the line
that computes u. Running the above program with values for b of 0.1,
1.0 or 10.0 did not change a thing in the results, except for small
changes due to new random generator values. As it should be, of
course. Please verify.

Bill, how would your program handle different values of b, say from
0.1 to 10.0 and from -0.1 to -10.0? Mine would need no changes and it
would show the same high performance in all cases. Indeed, b could be
a time function in my program and the performance would still remain
identical.

Greetings,

Hans