Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать? / 25 сообщений из 58, страница 1 из 3
10.08.2007, 11:57
    #34719365
Newok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
Всем доброго утра и хорошего дня!
Я вот думал-думал, но так чёт и не придумал. С MODEL можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with a as(
     select level as id
       from dual
     connect by level <  50 
)
select *
 from a
   model
   dimension by (id)
   measures  ( 1  fib)
   ignore nav
   rules (
     fib[id] = fib[cv() -  1 ] + presentv(fib[cv() -  2 ], fib[cv() -  2 ],  1 )
   )
Подскажите плз, а можно ли вообще сделать без MODEL и без использования явной формулы?
Спасибо.
...
Рейтинг: 0 / 0
10.08.2007, 12:21
    #34719471
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
NewokЯ вот думал-думал, но так чёт и не придумал.
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with tab as (select rownum r from all_objects)
select fib from (
select  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y fib
from (
  select t1.r x, t2.r y
  from tab t1, tab t2
)where 
  0  <  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y
)order by fib
...
Рейтинг: 0 / 0
10.08.2007, 12:24
    #34719487
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
...
Рейтинг: 0 / 0
10.08.2007, 12:37
    #34719540
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
Во, все намного проще:
Код: plaintext
1.
2.
with tab as (select rownum - 1  n from all_objects where rownum < 100 )
select round((power(( 1 +power( 5 , 1 / 2 ))/ 2 ,n+ 1 ) - power(( 1 -power( 5 , 1 / 2 ))/ 2 ,n+ 1 ))/power( 5 , 1 / 2 )) fib
from tab;
...
Рейтинг: 0 / 0
10.08.2007, 12:39
    #34719549
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymousВо, все намного проще Newokбез использования явной формулы
...
Рейтинг: 0 / 0
10.08.2007, 12:39
    #34719550
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymousВо, все намного проще:
Чтобы вы не думали, что я тут какой-то мегаматематик, приведу источник вдохновения:
Далеко ходить не надо
...
Рейтинг: 0 / 0
10.08.2007, 12:41
    #34719556
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
Elic Newokбез использования явной формулы
Я лично не понимаю что такое "явная формула"...
Или это просто чтобы "помучаться"? :)
...
Рейтинг: 0 / 0
10.08.2007, 12:42
    #34719567
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous NewokЯ вот думал-думал, но так чёт и не придумал.
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with tab as (select rownum r from all_objects)
select fib from (
select  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y fib
from (
  select t1.r x, t2.r y
  from tab t1, tab t2
)where 
  0  <  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y
)order by fib


Андрей, у меня Ваш запрос уже 5 минут висит, не может выполниться :(
...
Рейтинг: 0 / 0
10.08.2007, 12:43
    #34719571
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymousЯ лично не понимаю что такое "явная формула"...Нерекурсивная формула получения i-того члена последовательности.
...
Рейтинг: 0 / 0
10.08.2007, 12:48
    #34719589
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
PaulEr andrey_anonymous NewokЯ вот думал-думал, но так чёт и не придумал.
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with tab as (select rownum r from all_objects)
select fib from (
select  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y fib
from (
  select t1.r x, t2.r y
  from tab t1, tab t2
)where 
  0  <  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y
)order by fib


Андрей, у меня Ваш запрос уже 5 минут висит, не может выполниться :(
У меня тоже
Это вычисление полинома, множество неотрицательных значений которого на множестве натуральных x,y совпадает с множеством чисел Фибонначи, если верить Википедии
...
Рейтинг: 0 / 0
10.08.2007, 12:53
    #34719622
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous PaulEr andrey_anonymous NewokЯ вот думал-думал, но так чёт и не придумал.
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
with tab as (select rownum r from all_objects)
select fib from (
select  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y fib
from (
  select t1.r x, t2.r y
  from tab t1, tab t2
)where 
  0  <  2 *x*y* 4  + x*x*y*y*y -  2 *x*x*x*y*y - y*y*y*y*y - x*x*x*x*y +  2 *y
)order by fib


Андрей, у меня Ваш запрос уже 5 минут висит, не может выполниться :(
У меня тоже
Это вычисление полинома, множество неотрицательных значений которого на множестве натуральных x,y совпадает с множеством чисел Фибонначи, если верить Википедии

Понятно
...
Рейтинг: 0 / 0
10.08.2007, 12:57
    #34719647
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
PaulErПонятно
Только я в спешке ошибся,
Код: plaintext
 2 *x*y* 4 
читать как
Код: plaintext
 2 *x*y*y*y*y
...
Рейтинг: 0 / 0
10.08.2007, 13:02
    #34719663
Newok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous
Чтобы вы не думали, что я тут какой-то мегаматематик, приведу источник вдохновения:


А я, кстати, немного "какой-то математик" )) Но факта с многочленом не знал. Там только нужно 2*x*y*4 заменить на 2*x*y*y*y*y. И работает довольно долго.. ну ещё бы.

andrey_anonymous Elic Newokбез использования явной формулы
Я лично не понимаю что такое "явная формула"...
Или это просто чтобы "помучаться"? :)

Явная формула в данном случае - на входe порядковый номер(аргумент), на выходе конкретное значение. Т.е. использование явного представления числа Фибоначчи как функции от порядкового номера.
Да я, на самом деле, просто попробовал написать это дело как-нить через аналитику. Долго думал, а не получилось..

Elic
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select rownum -  1  r,
       column_value fib
  from XMLTable('declare function local:fib ($i)
                   {
                     if ($i = 0) then (0)
                     else if ($i = 1) then (1)
                     else if($i >= 2) then number(local:fib($i - 1) + local:fib($i - 2))
                     else (1)
                   }; (: eof :)            
                   for $i in 0 to 15
                   return local:fib($i)')


Здесь у меня internal error вылазит
...
Рейтинг: 0 / 0
10.08.2007, 13:05
    #34719672
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
NewokЗдесь у меня internal error вылазит
Ну этот метод вполне себе эквивалентен применению табличной или pipelined функции в качестве источника данных
...
Рейтинг: 0 / 0
10.08.2007, 13:08
    #34719682
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
автор...на 2*x*y*y*y*y . И работает довольно долго .. ну ещё бы.

Elic
...
авторЗдесь у меня internal error вылазит

После вышеуказанной замены, продолжает всё работать Довольно долго - это сколько ? Девелопер всё трудится :)
У меня не выдал internal error.
...
Рейтинг: 0 / 0
10.08.2007, 13:12
    #34719697
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
PaulErПосле вышеуказанной замены, продолжает всё работать Довольно долго - это сколько ? Девелопер всё трудится :)
Я ограничил выборку from all_objects where rownum < 5000 и получил первые 19 чисел где-то за минуту на домашнем буке.
Сейчас до работы доеду, попробую на настоящей технике :)
...
Рейтинг: 0 / 0
10.08.2007, 13:15
    #34719707
Newok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
PaulEr
.....


Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with tab as (
     select level as r from dual connect by level <  1000 
)
select distinct fib
  from (select  2 *x*y*y*y*y + x*x*y*y*y -  2 *x*x*x*y*y -
               y*y*y*y*y - x*x*x*x*y +  2 *y as fib
          from (select t1.r x,
                       t2.r y
                  from tab t1,
                       tab t2)
         where  0  <  2 *x*y*y*y*y + x*x*y*y*y -  2 *x*x*x*y*y -
               y*y*y*y*y - x*x*x*x*y +  2 *y
)
 order by fib
...
Рейтинг: 0 / 0
10.08.2007, 13:21
    #34719728
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
to andrey_anonymous : настоящая техника, это какая ?:) Ограничил по условию, как Вы и сказали, компьютер пень четвёртый с 3 гигагерцами и гигом оперативы, уже больше двух минут висю :(

to Newok : получил за 7 секунд :)
...
Рейтинг: 0 / 0
10.08.2007, 13:22
    #34719733
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
3 минуты 14 секунд :) Еееее
...
Рейтинг: 0 / 0
10.08.2007, 13:24
    #34719738
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
С rownum < 1000, время такое же как и у Newok, ч.т.д. :)
...
Рейтинг: 0 / 0
10.08.2007, 15:24
    #34720228
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
PaulErС rownum < 1000, время такое же как и у Newok, ч.т.д. :)
Вы rownum < 10000 попробуйте :)

Получилось 20 чисел за 5 минут:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
       FIB
----------
          1 
          1 
          2 
          3 
          5 
          8 
         13 
         21 
         34 
         55 
         89 
        144 
        233 
        377 
        610 
        987 
       1597 
       2584 
       4181 
       6765 

2Newok: distinct делать нельзя - первые два числа это 1 и 1 :)
...
Рейтинг: 0 / 0
10.08.2007, 15:57
    #34720384
Newok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous
Получилось 20 чисел за 5 минут


Да... практическая ценность этого метода очень сомнительна ! ))


В общем задачка обычным SQL, видимо, не решается.
Спасибо всем за Ваши ответы!
...
Рейтинг: 0 / 0
10.08.2007, 16:03
    #34720407
PaulEr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous Вы rownum < 10000 попробуйте :)

У меня при 5000 машина тормозила, так что не буду
...
Рейтинг: 0 / 0
10.08.2007, 16:07
    #34720424
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
Newok andrey_anonymous
Получилось 20 чисел за 5 минут

Да... практическая ценность этого метода очень сомнительна ! ))
В общем задачка обычным SQL, видимо, не решается.
Вы размышляете о практической ценности при запрете на использование явного представления числа Фибоначчи как функции от порядкового номера?!
Оригинально

Решается:
- pipelined/table function (очевидно)
- XMLQuery (как показал Elic)
- MODEL

А если отменить непонятный запрет, то решается и вовсе без изысков...

Вам мало?
...
Рейтинг: 0 / 0
10.08.2007, 17:47
    #34720787
Volder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать?
andrey_anonymous...Решается:
- pipelined/table function (очевидно)...
Вам мало?можно попробовать и не очевидно))
навеяло отсюда :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
SQL> create or replace type num_tab is table of number;
   2   /

Type created

SQL> 
SQL> create or replace function fibonacci_numb(p_num   number,
   2                                             p_prev2 number :=  0 ,
   3                                             p_prev1 number :=  1 )
   4     return num_tab is
   5     arr  num_tab := num_tab();
   6   begin
   7     if p_num- 2  >  0  then
   8       arr := fibonacci_numb(p_num -  1 , p_prev1, p_prev1 + p_prev2);
   9       arr.extend;
  10       arr(arr.last) := p_prev1;
  11     end if;
  12     if p_prev2 =  0  and p_num >=  2  then
  13       arr.extend;
  14       arr(arr.last) :=  0 ;
  15     end if;
  16     return arr;
  17   end;
  18   /

Function created

SQL> var p number;
SQL> exec :p:= 15 ;

PL/SQL procedure successfully completed
p
---------
 15 

SQL> 
SQL> select * from table(fibonacci_numb(:p+ 1 ))
   2   order by  1 
   3   /

COLUMN_VALUE
------------
            0 
            1 
            1 
            2 
            3 
            5 
            8 
           13 
           21 
           34 
           55 
           89 
          144 
          233 
          377 

 15  rows selected
p
---------
 15 

SQL> 
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Числа Фибоначчи без MODEL и явной формулы. Можно ли сделать? / 25 сообщений из 58, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]