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

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

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

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

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

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

1. Последовательность определяется соотношением: x_{n+1}=\lambda-x_n^2, где \lambda=2, x_0=\frac{\displaystyle 1}{\displaystyle \sqrt{2}}. Найти x_{10}, x_{20} и x_{30}.

2. Вычислите золотое сечение по формуле

      1+\frac{\displaystyle 1}{\displaystyle  1+\frac{\displaystyle 1}{\displaystyle  1+\frac{\displaystyle 1}{\displaystyle  1+\ldots}}}

Сделайте 20 итераций. В каком знаке будут наблюдаться изменения, если сделать 30 итераций?

3. В 1674 году Г. Лейбниц показал, что число \frac{\displaystyle \pi}{\displaystyle 4}=1-\frac{\displaystyle 1}{\displaystyle 3}+\frac{\displaystyle 1}{\displaystyle 5}-\frac{\displaystyle 1}{\displaystyle 7}+\ldots  Найдите приближенное значение числа \pi, просуммировав 100 членов этого ряда.

4. Составив соответствующие рекуррентные соотношение, вычислите значения выражений:

    1) 1+\frac{\displaystyle 1}{\displaystyle 2!}+\frac{\displaystyle 1}{\displaystyle 3!}+\ldots+\frac{\displaystyle 1}{\displaystyle n!}

    2) n+\frac{\displaystyle n-1}{\displaystyle 2!}+\frac{\displaystyle n-2}{\displaystyle 3!}+\ldots+\frac{\displaystyle 1}{\displaystyle n!}

    3) \frac{\displaystyle (x-2)(x-4)\ldots(x-2n)}{\displaystyle (x-1)(x-3)\ldots(x-2n+1)}

    4) \underbrace{\sqrt{2+\sqrt{2+\ldots+\sqrt{2+\sqrt{2}}}}}
n раз

    

    

5. Пользователь вводит 10 чисел. Определить, образуют ли они возрастающую последовательность.

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

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

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

  1. Таня

    Тарас Викторович, спасайте! Забыла коэффициенты для авторегрессионной модели чтобы синусоида получилась((

  2. Таня

    Всё, вспомнила) 0 -1 1.8

  3. Taras

    \sin \omega t с шагом по времени \Delta t:

    x_{n+1}=2\cos \omega \Delta t \cdot x_n-x_{n-1}

  4. Константин

    Я хотел бы узнать, можно ли мне 16-ти летнему десятикласснику, не проходящему реккурентные соотношения,мяссивы и т.д в школе, выучит на этом сайте Паскаля и есть ли у меня шанся, если упорно учиться?

  5. Taras

    Среди моих студентов, для которых я изначально делал этот курс, Паскаль в школе учили 2-3 человека из 10. Так что все как раз и рассчитано на тех, кто начинает с нуля.

  6. Константин

    Спасибо за ответ, буду учиться :)

  7. Константин

    И ещё я хотел бы узнать. В реккурентных соотношениях я плохо рабираюсь и на обучение, скорей всего, уидёт много времени.Можно ли пропустить этот этап и продолжать изучать следующие параграфы? Не сильно ли затруднит процесс дальнейшего обучения, не зная реккурентных соотношений?

  8. Taras

    Хотя бы самые простые задачи, я бы посоветовал порешать. Кроме того, к минимуму необходимого я бы отнес понимание того, что будет происходить при повторении каких-то действий с одними и теми же переменными. Для проверки этого надо решить задачу 5 из контрольной №3 и задачу 3 из контрольной №4.

    Двигаться дальше с этим можно, но совсем забывать и игнорировать эту тему я бы не советовал. Здешние задачи учат сразу двум очень важным вещам. Во-первых, видеть как сложные на первый взгляд вычисления сводятся к повторению очень простых действий. А во-вторых, делить сложные формулы на просто вычисляемые части. В общем, есть необходимые любому программисту мыслительные навыки, которые эти задачи хорошо тренируют.

  9. Константин

    Большое спасибо. Основу соотношений уже понял ;)

  10. Аноним

    В 4.4 ответ должен быть 2?

  11. Taras

    Да, с ростом n ответ стремится к 2-м.

  12. Аноним

    Благодарю. А в пятом должны использоваться реккурентные соотношения, правильно же?

  13. Taras

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

  14. Аноним

    Чего-то кроме как через if, как в Задании 2, №9 ничего в голову и не идет. Может намекнете как-нибудь?

  15. Taras

    Ну, совсем без if не обойтись. Программа должна напечатать что-то вроде «Образуют» или «Не образуют», а другого способа выполнить только одно из двух действий нет.

    Однако писать что-то вроде:

      if (x2 > x1)and(x3 > 2)and ... and(x10 > x9) then ...
    

    не хорошо. Чтобы не было такого соблазна, давай считать, что чисел вводится не 10, а n, где n также вводится пользователем.

    Так что, очевидно, нужен цикл. Что касается if внутри цикла, то если смотреть широко, то его можно рассматривать как часть рекуррентного соотношения. В конце концов рекуррентное соотношение, это когда есть зависимость следующих значений от предыдущих. Проверку условия вполне можно считать частью выражения для этой зависимости.

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

    Само собой, можно обойтись и обычными числовыми переменными и арифметическим операторами.

  16. Володя

    В первом задании у меня получились ответы:
    x10 = -112.642135623731
    x20 = -426.784271247462
    x30 = -940.926406871193
    Это правильно?

  17. Taras

    Нет, должно быть
    -1.57012631524044
    -1.33939117894528
    1.68452121727001

  18. Дмитрий

    Честно говоря, условие 5 задания не совсем ясно. Должны эти числа просто возрастать или идти по порядку? Задача решается очень просто с помощью логического выражения. И как тут применить рекуррентное соотношение?

  19. Taras

    Каждое следующее число должно быть больше предыдущего.
    Если ты не собираешься строить одно длинное логическое выражение с 9-ю сравнениями (а это нехорошо, представь, что чисел не 10 а 1000), то результат каждого очередного сравнения должен каким-то образом добавляться к запомненному результату всех предыдущих. Это и будет рекуррентным соотношением.

  20. Дмитрий

    Но ведь рекуррентное соотношение описывает функцию, а произвольные числа никак между собой не связаны.

  21. Taras

    В рекуррентном соотношении будут присутствовать результаты сравнения этих чисел. Может быть, напрямую, как true или false. А может быть, ты с помощью if’а результату сравнения поставишь в соответствие какое-то число.

  22. Илья

    В 4 задании в примере 2 в 3 слагаемом должно быть n-2.

  23. Taras

    Спасибо, исправил.

  24. АленА

    В 3-ем задании получился ответ 0.782898225889638

  25. АленА

    Можно задачу 5 выразить таким образом:

    program zadacha_5;
    var
    i: integer;
    x, n, y: real;
    begin
    x:=0;
    n:=0;
    y:=0;
    for i:=1 to 10 do
    begin
    n:=x;
    readln (x);
    if n >= x then
    y:=1;
    end;
    if y>0 then
    writeln (‘числа не образуют возрастающую последовательность’)
    else
    writeln (‘числа образуют возрастающую последовательность’);
    end.

  26. Ruslan

    //5. Пользователь вводит 10 чисел. Определить, образуют ли они возрастающую последовательность.
    program a45;
    var
    i, x, y, z,zz: integer;
    begin
    for i:=1 to 10 do
    begin
    z:=0;
    writeln (‘Введите число №’, i);
    read (x);
    if (i>=2) then
    if (y>=x) then
    begin
    z:=1;
    end else
    y:=x;
    end;
    if z=0 then
    begin
    write (‘Да’)
    end else
    write (‘Нет’);
    end.

  27. Pavel

    program primer1;
    var
    i,m:integer;
    k,n:real;
    ans:string;
    begin
    m:=10;
    writeln(‘vvedite 10 chisel’);
    readln(n);
    for i:=1 to (m-1) do
    begin
    readln(k);
    if k > n then
    ans:=’vozrastaet’
    else
    ans:=’ne vozrastaet’;
    end;
    writeln(ans);
    end.

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