Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

4. Вычисления с помощью рекуррентных соотношений

Предыдущий раздел:

Следующий раздел:

4.3. Многомерные рекуррентные соотношения

Размерностью рекуррентного соотношения называют размерность (количество компонент) вектора состояния \vec{x}_n. Соответственно говорят об одномерных или многомерных рекуррентных соотношениях. Программирование вычислений с помощью одномерного рекуррентного соотношения заключается в простом помещении его внутрь цикла. Например, если надо найти 10-й член последовательности x_{n+1}=2-x_n^2, при x_0=0.5:

  x:=0.5;
  for i:=1 to 10 do
    x:=2-x*x;

Если переменных несколько, возникает небольшая тонкость. Для примера рассмотрим двумерное соотношение общего вида:

\left\{ \begin{array}{l}  x_{n+1}=f(x_n,y_n),\\  y_{n+1}=g(x_n,y_n).  \end{array} \right.~~~~~~~~~(2)

Если снова поместить эти формулы внутрь цикла, как показано ниже:

  for i:=1 to 10 do
  begin
    x:=f(x, y);
    y:=g(x, y);
  end;

получится, что строчка

    x:=f(x, y);

запишет в x значение x_{i+1}, которое будет использовано в следующей строке вместо требуемого x_{i}. Таким образом, чтобы корректно итерировать многомерные рекуррентные соотношения, надо перед вычислением последующего члена последовательности запоминать предыдущее значение. Для двумерного рекуррентного соотношения (2) корректная программа будет выглядеть так:

  for i:=1 to 10 do
  begin
    x2:=x; {Запоминаем последний из вычисленных членов последовательности}
    x:=f(x, y); {Вычисляем следующий элемент}
    y:=g(x2, y); {Для вычислений используем запомненное значение}
  end;

Другой способ заключается том, что в дополнительные переменные записываются новые члены последовательности. Для двумерного соотношения это будет выглядеть так:

  for i:=1 to 10 do
  begin
    x2:=f(x, y); {новый член последовательности запоминается 
                 в дополнительной переменной x2}
    y:=g(x, y);
    x:=x2;
  end;

Следующий раздел:

Предыдущий раздел:

Добавить комментарий