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

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

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

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

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

Контрольная работа №4

1. Укажите 4-й член последовательности заданной рекуррентным соотношением

    x_{n+1}=2-\frac{\displaystyle 1}{\displaystyle x_n},~x_1=2

2. Какими рекуррентными соотношениями задаются последовательности

    а) 2, 4, 16, 256, …

    б) 2, 0.5, 2, 0.5, 2, …

    в) 2, 5, 8, 11, 14, …

    г) 2, -4, 16, -256, …

3. Какую функцию переменной x вычисляет программа? Укажите также рекуррентные соотношения, в соответствии с которыми происходят вычисления.

    а)
  readln(x);
  y:=0;
  p:=1;
  sgn:=1;
  for i:=2 to 4 do
  begin
    p:=p*x;
    y:=y+sgn*p;
    sgn:=-sgn;
  end;
  writeln(y);
    б)
  readln(x);
  y:=0;
  p:=1;
  for i:=1 to 4 do
  begin
    p:=-p*x*x;
    y:=y+p/i;
  end;
  writeln(y);
    в)
  readln(x);
  y:=1;
  p:=1;
  for i:=1 to 4 do
  begin
    p:=p*(x-1);
    y:=y+p;
  end;
  writeln(y);
    г)
  readln(x);
  y:=1;
  p:=1;
  for i:=1 to 4 do
  begin
    p:=-p/x;
    y:=y+p;
  end;
  writeln(y);

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

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

9 комментариев

  1. АленА

    Правильно ли я поняла 2-е задание?
    Ответ, рекуррентное соотношение для данной последовательности: X(n+1) = Xn * Xn, X1 = 2 ;

    Программа для проверки:
    program zadacha_2a;
    var
    i, x: integer;
    begin
    write (‘2, ‘); {первый член последовательности}
    x:=2;
    for i:=2 to 4 do
    begin
    x:=x*x;
    write (x, ‘, ‘);
    end;
    write (‘…’);
    end.

  2. АленА

    В 2 г никак не получается менять знак на «минус» с помощью рекуррентного соотношения, а не с помощью команд. Дайте волшебного пинка )

  3. Taras

    >> Правильно ли я поняла 2-е задание?

    Правильно

    >> В 2 г никак не получается менять знак на «минус»

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

    Одномерным тоже можно обойтись, но оно будет довольно хитрым.

  4. АленА

    Спасибо за «пинок», вспомнила о модуле )
    Ответ в 2г, рекуррентное соотношение для данной последовательности: X(n+1) = |Xn | * (-Xn), X1 = 2 ;
    Программа для проверки:
    program zadacha_2g;
    var
    i, x: integer ;
    begin
    write (‘2, ‘); {первый член последовательности}
    x:=2;
    for i:=2 to 4 do
    begin
    x:=abs(x)*(-x);
    write (x, ‘, ‘);
    end;
    write (‘…’);
    end.

  5. АленА

    Можно ли 3а выразить таким рекуррентным соотношением?
    X(n+1) = -Xn * X + X, X1 = X;

    А программа под это соотношение отличается у меня, хотя результат такой же:

    program zadacha_3a;
    var
    i, x, y: integer;
    begin
    readln(x);
    writeln (x); {первый член последовательности}
    y:=x;
    for i:=2 to 3 do
    begin
    y:=(-y)*x+x;
    writeln (y);
    end;
    end.

  6. Taras

    В 3а предполагалось тривиальное:

    p_{n+1}=x\cdot p_n\\  s_{n+1}=-s_n\\  y_{n+1}=y_n+s_n\cdot p_n

    но твой вариант красив и тоже правилен.

  7. АленА

    Извините, Тарас, но или я что-то недопонимаю, или в третьей строчке должно быть Y(n+1)=Yn+Sn*P(n+1). Там же берется результат первого уравнения, а не его исходное значение Pn?

  8. АленА

    Или условие 3а должно выглядеть так:
    readln(x);
    y:=0;
    p:=1;
    sgn:=1;
    for i:=2 to 4 do
    begin
    y:=y+sgn*p;
    sgn:=-sgn;
    p:=p*x;
    end;
    writeln(y);

  9. Taras

    >> в третьей строчке должно быть Y(n+1)=Yn+Sn*P(n+1)

    Можно и так и так. Только разные начальные значения подставлять: p(0) = 1 — твой вариант, p(0) = x — мой.

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