[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