szukanie zaawansowane
 [ Posty: 7 ] 
Autor Wiadomość
Mężczyzna
PostNapisane: 22 wrz 2013, o 14:43 
Użytkownik

Posty: 34
Lokalizacja: Informatyka
Mam takie dwa ciągi i chciałbym wyliczyć szybko ile mają w danym przedziale punktów wspólnych i jakie te punkty są:
Pierwszy ciąg x+y wynik to pierwszy wyraz ciągu następny to wynik + y powiększony o 8 i znowu w następnym kroku wynik + y powiększony o 8 czyli np x=1, y=1 to tak 2,11,28,53...
A drugi ciąg jest trochę inny i zawsze taki sam 0,8,24,48,80... albo zaczynający się nie od 0 tylko od 4
czyli: 0,0+(1 \cdot 8)=8,8+(2 \cdot 8)=24,24+(3 \cdot 8)=48...
w zasadzie potrzebuję jakiegokolwiek wspólnego punktu w danym przedziale
Czy istnieje jakaś metoda żeby to szybciej wyliczyć niż generować ciągi i porównywać ich kolejne wyrazy?
Góra
Mężczyzna
PostNapisane: 22 wrz 2013, o 18:30 
Użytkownik
Avatar użytkownika

Posty: 7129
Piszesz ten post już trzeci raz, a wciąż mętnie opisujesz powyższe ciągi .

Chyba chodzi ci o ciągi rekurencyjne:
a _{1} =x \wedge a _{n}=a _{n-1}+y+(n-1) \cdot 8
b _{1} =t \wedge b _{n}=b _{n-1}+(n-1) \cdot 8

Nie rozumiem dlaczego szukasz ,,łatwiejszego "sposobu. Przecież algorytm wyliczania wszystkich wyrazów obu ciągów w konkretnym przedziale i znalezienia powtarzających się liczb jest o wiele prostszy niż programowanie ,,łatwiejszego" sposobu, o ile taki by istniał.
A jeśli przedział w którym mogą być wspólne wyrazy obu ciągów jest duży to podziel go na mniejsze. Dla każdego dokonuj sprawdzenia i opróżniaj rejestry przechowujące wyliczone, zbędne już dane.
Góra
Mężczyzna
PostNapisane: 22 wrz 2013, o 22:06 
Użytkownik

Posty: 34
Lokalizacja: Informatyka
No a gdyby istniała metoda która zamienia te dwa ciągi na jakieś równania nie wiem może nawet kwadratowe nie znam się na tyle po czym rozwiązanie od razu dałoby punkt wspólny to by nie było szybciej? Normalnie nic nie trzeba zapisywać po prostu dwie zmienne które są porównywane jeżeli wartość pierwszego ciągu jest większa to przejdź do następnego wyrazu ciągu drugiego i porównaj znowu jeśli mniejsza to przejdź do następnego wyrazu ciągu pierwszego... ale gdy moje przedziały będą może od 0 do 1000 cyfrowej liczby to ile ja mam czekać? Gdybym mieścił się w long longu to bym nie narzekał.
Góra
Mężczyzna
PostNapisane: 22 wrz 2013, o 22:53 
Gość Specjalny
Avatar użytkownika

Posty: 12762
Lokalizacja: Kraków
W innym temacie napisałem Ci, jak wygląda rozwiązanie rekurencji, z którą masz problem. Wzór ogólny to wielomian stopnia drugiego ze względu na n. Dwa wielomiany drugiego stopnia albo są równe wszędzie, albo mają jeden punkt wspólny, albo dwa. Pierwszy wariant wynika wprost z równości obu wielomianów. Drugi i trzeci to rozwiązanie równania kwadratowego ze względu na n - to jest łatwe do zaimplementowania oraz wyliczenia. Poza tym przy takich ciągach oraz stosunkowo niskich wartościach początkowych x oraz y nie będziesz długo czekał na albo równe, ale brak równości. Wystarczy trywialna analiza na poziomie szkoły średniej, by to stwierdzić.
Góra
Mężczyzna
PostNapisane: 23 wrz 2013, o 08:09 
Użytkownik

Posty: 34
Lokalizacja: Informatyka
Ok to dobrze. A jeszcze jedno przy stosunkowo niskich wartościach x i y ? A co gdy będą tak liczbami wielkości 100-cyfrowymi albo większe komputer mam nadzieję że nie będzie miał problemu. Kurcze muszę sobie poprzypominać wielomiany na co dzień się tego do programowania nie stosuje także dobrze że się da ale dziś mam korepetycje na gg więc jakiś tam matematyk mi to wyjaśni krok po kroku co ja muszę zrobić nie będę wam już zawracał głowy
Góra
Mężczyzna
PostNapisane: 23 wrz 2013, o 08:11 
Użytkownik
Avatar użytkownika

Posty: 7129
No to może dokończę, choć Yorgin już ci to napisał już dwa razy .

Powyższe ciągi mają wzory ogólne
a _{n} =x+(n-1) \cdot y+ \frac{(n-1) \cdot n}{2} \cdot 8
b _{n} =t+ \frac{(n-1) \cdot n}{2} \cdot 8
(lub takie jak podano ci w poprzednim poście, którego niestety wcześniej nie przeczytałem do końca )
Po podstawieniu za x,y,t odpowiednio 1,1,0 masz
a _{n} =4 \cdot n ^{2}-3 \cdot n
b _{n} =4 \cdot n ^{2}-4 \cdot n

Ineresuje cię aby a _{p}=b _{q}
co daje równanie 4 \cdot p ^{2}-3 \cdot p=4 \cdot q ^{2}-4 \cdot q
(dla innych x, y t będzie ono miało postać
x+(p-1) \cdot y+4 \cdot p ^{2}-4 \cdot p=t+4 \cdot q ^{2}-4 \cdot q )


Równanie 4 \cdot p ^{2}-3 \cdot p=4 \cdot q ^{2}-4 \cdot q ma dwie niewiadome więc jedną potraktuj jak parametr. Dla niewiadomej q masz równanie kwadratowe
q ^{2}-q+(0.75 \cdot p-p ^{2})=0
które zwyczajnie rozwiązujesz, lub raczej piszesz program który sprawdza dla jakich naturalnych p otrzymane q jest naturalne.
Góra
Mężczyzna
PostNapisane: 23 wrz 2013, o 23:52 
Użytkownik

Posty: 34
Lokalizacja: Informatyka
I to jest odpowiedź, trzeba było tak od razu. Nie przypomina mi się, żeby mi ktoś coś takiego pisał. Albo ja nie umiem korzystać z tego forum... Mniejsza o to, ale i tak jutro mam korepetycje online z matematyki i się wszystko wyjaśni. Dzięki kerajs
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 7 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 jak sprawdzić punkty wspólne dwóch ciągów - zadanie 2  Rebus27  10
 Zliczyć ile jest ciągów o wyrazach z [n]  kapsl0k  2
 Liczba ciągów liter BB lub RR w ABRAKADABRA  SyncHot  1
 Punkty kratowe  kasieńka3  1
 policzyc ilosc ciagow  kriegor  4
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl