Вход | Регистрация


Информационные технологии :: Математика и алгоритмы

Проверить бесконечность процесса генерации последовательности

[Asmody, 05.06.18 - 09:21]
Проверить бесконечность процесса генерации последовательности
Я
   Ненавижу 1С
 
30.05.18 - 09:28
Есть последовательность. Допустим
х[0]=2017
х[1]=2018

и далее рекуррентное выражение х[n+1] = х[n-1]-1/х[n]

Итак, упрется данная последовательность во что-нибудь или зациклится или она бесконечна и сходящаяся/расходящаяся?
 
 
   Asmody
 
1 - 30.05.18 - 09:46
(0) Для n > 1 последовательность убывающая.
   Asmody
 
2 - 30.05.18 - 09:49
Хотя нет, это же прямая минус гипербола.
   assasu
 
3 - 30.05.18 - 09:50
убывающая последовательность не гарантирует сходимость .
   assasu
 
4 - 30.05.18 - 09:51
а вообще математика же строгая наука..надо от автора узнать что такое "упрется".
Дай определение
   Сияющий в темноте
 
5 - 30.05.18 - 09:52
Если последовательность закончится,то Х(н+1)=Х(н)
или Х=Х-(1/Х) ответ очевиден
можно еще рассмотреть вариант,когда идут скачки
Х1=Х2-(1/Х1) и Х2=Х1-(1/Х2)
   assasu
 
6 - 30.05.18 - 09:53
(5)не научно
   Сияющий в темноте
 
7 - 30.05.18 - 09:53
на компьютере же из за ограниченности разрядной сетки последовательность найдет машинный ноль.
   Малыш Джон
 
8 - 30.05.18 - 09:55
(4) видимо имеется в виду предел последовательности при n стремящемся к бесконечности.
   assasu
 
9 - 30.05.18 - 09:58
(8) есть признаки сходимости. Даламбера или Коши. Интегральный признак.
   Ненавижу 1С
 
10 - 30.05.18 - 10:02
(4) специально в этот раз не скажу
проявите собственную фантазию
 
 Рекламное место пустует
   zva
 
11 - 30.05.18 - 10:33
Что-то из разряда чему равно (x-a)(x-b)...(x-z)
а если
х[0]=2017,0000001
х[1]=2018
   Ненавижу 1С
 
12 - 30.05.18 - 10:35
(11) результат изменится кардинально
   Гобсек
 
13 - 30.05.18 - 10:52
Х[8000001]=-0,00000000000000035203296976519521763926843568
Х[9000000]=12502763442543763254605,67856292239846365202003919
Х[9000001]=-0,000000000000000394288352543365707084127417483
Х[10000000]=13712359097589733057451,55618791239846365202003919
Х[10000001]=-0,000000000000000432434270266615321243204806686
   Гобсек
 
14 - 30.05.18 - 10:53
Х[6000000]=7822403641917245403402,83950212639846365202003919
Х[6000001]=-0,000000000000000246688113824696260201613048152
Х[7000000]=9638448892748395083971,76485681539846365202003919
Х[7000001]=-0,000000000000000303959073975501505757024568694
Х[8000000]=11162857849993687829840,34751568639846365202003919
Х[8000001]=-0,00000000000000035203296976519521763926843568
Х[9000000]=12502763442543763254605,67856292239846365202003919
Х[9000001]=-0,000000000000000394288352543365707084127417483
Х[10000000]=13712359097589733057451,55618791239846365202003919
Х[10000001]=-0,000000000000000432434270266615321243204806686
   Гобсек
 
15 - 30.05.18 - 11:00
Х[17000000]=20248374756225609613024,49581634139846365202003919
Х[17000001]=-0,000000000000000638554657134869947431192871915
Х[18000000]=21016811808397528052157,69894779939846365202003919
Х[18000001]=-0,000000000000000662788158688950997066623866731
Х[19000000]=21758126686611626450760,20368989539846365202003919
Х[19000001]=-0,000000000000000686166332930980275162751236404
Х[20000000]=22475003342195175242098,79912642039846365202003919
Х[20000001]=-0,000000000000000708773821185297196733865965727
   RomanYS
 
16 - 30.05.18 - 11:02
Аналитика:
x[n+1]*x[n] = x[n]*x[n-1]-1
Ряд из произведений соседних членов - линейно убывающий
   Гобсек
 
17 - 30.05.18 - 11:07
Из (15) видно, что начиная с некоторого n подпоследовательность с четными номерами монотонно возрастает и больше 0. Подпоследовательность с нечетными номерами монотонно убывает и меньше 0.
   RomanYS
 
18 - 30.05.18 - 11:09
+(16)
x[n]*x[n-1] = 2017*2018+1-n=4070307-n

x[n+2] = x[n]*(x[n]*x[n-1] - 2)/(x[n]*x[n-1] - 1)=
=x[n]*(4070305-n)/(4070306-n)
   Гобсек
 
19 - 30.05.18 - 11:12
(17)+ К пределу эти последовательности стремиться не будут.
   zva
 
20 - 30.05.18 - 11:16
(19) Если не наткнуться на земную ось, точнее машинный ноль... а может и не машинный...
   RomanYS
 
21 - 30.05.18 - 11:17
(18)
x[4070307]=0 (Абсолютный математический ноль!)
   Ненавижу 1С
 
22 - 30.05.18 - 11:19
(21) вот именно
   RomanYS
 
23 - 30.05.18 - 11:19
+(21)
x[4070308] очевидно не определено
Решено!
   Гобсек
 
24 - 30.05.18 - 13:14
Х[4070301]=2,350546619069195710984191751
Х[4070302]=2,127164787729236405386438455
Х[4070303]=1,880437295255356568787378612
Х[4070304]=1,59537359079692730403986449
Х[4070305]=1,253624863503571045858308432
Х[4070306]=0,79768679539846365202003919
Х[4070307]=-0,000000000000000000141691568
Х[4070308]=7057582988989154245,79768679539846365202003919
Х[4070309]=-0,000000000000000000283383135999999999988532667
Х[4070310]=10586374483483731368,79768679539846365202003919

То есть при попытке непосредственного вычисления (15) компьютер проскочил мимо нуля за счет ошибок округления
   mistеr
 
25 - 30.05.18 - 13:19
Отвечаю. Последовательность упрется во что-то, немного покрутится воззе него, затем перескочит сверху и пойдет дальше.

P.S. Если есть проблемы с пониманием ответа, проявите фантазию.
   Йохохо
 
26 - 30.05.18 - 13:21
(24) и потом пошел треш, не все задачи можно на компьютере решать
(0) за задачу спс, решал как 18. Задача как то не на фантазию,  не думая первая же попытка посмотреть н+2
   Ненавижу 1С
 
27 - 30.05.18 - 13:28
(25) если бы я сразу сказал, что "упрется" это значит не возможно ее продолжить с определенного момента, то была бы слишком явная подсказка на то, что она достигнет 0
   Asmody
 
28 - 31.05.18 - 10:07
(24) Чем считал?
Я на haskell попробовал через тип Rational, но оно долго считает.
   Гобсек
 
29 - 31.05.18 - 10:15
(28) 1С 8. Время расчета несколько минут.

&НаКлиенте
Процедура Сформировать(Команда)
    Пер1 = 2017;
    Пер2 = 2018;
    Для нпп = 1 По 4070307 + 3 Цикл
        Пер_ = Пер1 - 1/Пер2;
        Пер1 = Пер2;
        Пер2 = Пер_;
        //Если Нпп % 1000000 = 0 Тогда
        Если Нпп > 4070300 Тогда
            Сообщить("Х[" + Формат(нпп,"ЧДЦ=; ЧГ=") +"]="  + Формат(Пер1,"ЧГ=") );
            //Сообщить("Х[" + Формат(нпп+1,"ЧДЦ=; ЧГ=") +"]="  + Формат(Пер2,"ЧГ=") );
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
   Михаил Козлов
 
30 - 05.06.18 - 09:09
В качестве "наводки".
Вместо разностного соотношения возьмем дифф. уравнение, примерно такое:
dX/dt = -1/X. X(0)=X0 (2017)
Решение: X(t)=SQRT(X0^2-t). При t=X0^2 особенность. Т.е. смахивает на точку бифуркации, но я в этом - ноль.
На бифуркацию намекает и (12) - неустойчивость решения при малом изменении нач. условий.
   Asmody
 
31 - 05.06.18 - 09:30
(29) Так не интересно, в 1С у чисел ограниченная точность.
Rational в Haskell выглядит как пара (Числитель, Знаменатель), где Числитель и Знаменатель типа Integer, который в Haskell имеет произвольную точность.
   RomanYS
 
32 - 05.06.18 - 09:36
(31)
>>Числитель и Знаменатель типа Integer
этого явно мало для данной задачи

(28) возьми вводные поменьше, 507 и 508 например

кмк компьютерной точности  не хватит для данной задачи, если только делать Числитель и Знаменатель большими массивами
   Asmody
 
33 - 05.06.18 - 09:39
(32) Почему? В этой задаче иррационального значения не получится.
 
 
   RomanYS
 
34 - 05.06.18 - 09:42
(33) да теоретически решаема, но разрядность числителя и знаменателя должна быть очень большой
   Asmody
 
35 - 05.06.18 - 09:44
(34) В Haskell тип Integer имеет произвольную (читай "неограниченную") точность.
   RomanYS
 
36 - 05.06.18 - 09:49
(35) ааа..., тогда должно работать. Именно это я имел в виду, когда говорил про массивы. В Haskell встроена такая математика, это же должно быть очень медленно. Или там есть другие целые типы для обычных целей?
   Asmody
 
37 - 05.06.18 - 09:54
(36) Там есть Int, который обычный int, и есть Integer. Плюс умный компилятор, который понимает, когда Integer можно преобразовать в Int.
   RomanYS
 
38 - 05.06.18 - 10:13
(37) круто. Только очень медленно, цикл 10^6 не должен долго выполняться
   Asmody
 
39 - 05.06.18 - 10:39
(38) Rational в конструкторе упрощает дробь. Ясен пень, это небыстро.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует