2011-01-29 21 views
10

Dane:rozwiązania równań funkcjonalne programowo

F (F (n)) = N

F (F (n + 2) + 2) = N

C (0) = 1

gdzie n jest nieujemną liczbą całkowitą. F (129) =?

W jaki sposób programowo można rozwiązywać takie równania funkcjonalne? Moim językiem programowania jest Python.

+0

Co są warunki na F? Gdy n = 0, F (n) = 1. Na jakich warunkach F oblicza F (F (n)) i F (F (n + 2) +2)? – inspectorG4dget

+0

@ inspectorG4dget F jest ciągły na R. – Sharathiitr

+0

Czy możesz podać dokładniejszy opis tego, jakie rodzaje ograniczeń mogą potencjalnie pojawić się przy rozwiązywaniu tego rodzaju problemów? Łatwo opisać sekwencje, które nie są zdefiniowane wszędzie, jeśli dopuszczasz dowolne wyrażenia matematyczne. – templatetypedef

Odpowiedz

5

Równania funkcyjne w ich najbardziej ogólnych kategoriach są naprawdę bardzo trudne. To nie przypadek, że prawie każdy międzynarodowy konkurs matematyki zawiera jedno z nich, zazwyczaj wyglądające tak niewinnie, jak to, które napisałeś. Metody ich rozwiązywania różnią się od zwykłej indukcji do nieskończenie wielowymiarowej analizy przestrzeni Banacha i ogólne podejście do ich rozwiązywania jest bardzo mało prawdopodobne.

W tym konkretnym przypadku, oto prosta podejście:

Załóżmy dla dowolnych dwóch liczb m, n mamy F (m) = f (n) = k. Ale wtedy m = F (F (m)) = F (k) = F (F (n)) = n: dlatego m = n i F nigdy nie przyjmuje tej samej wartości na dwóch różnych wejściach. Ale wiemy, że F (F (n)) = n = F (F (n + 2) +2) - zatem F (n) i F (n + 2) +2 muszą być tą samą liczbą - to znaczy , F (n + 2) == F (n) - 2 == F (n-2) - 4 = .... Teraz znamy F (0) = 1, więc F (1) = F (F (0)) = 0. Ale wtedy F (129) = F (127) - 2 = F (125) - 4 = ... = F (1) - 128 = -128

Istnieje zatem Twoje rozwiązanie - ale mechaniczny algorytm rozwiązywania dowolnych wariantów po prostu nie istnieje.

+0

Możesz również uzyskać pierwszy krok dzięki temu, że 'F (F (n)) = n' to definiujące równanie 'F' jako własne odwrotne. Fakt, że jest to bijatyka, jest konsekwencją tego. – aaronasterling

+0

Regresja symboliczna może rozwiązać te problemy w wielu przypadkach – Inverse

1

podstawie tego, co @ivancho i @aaronasterling powiedział, udało mi się napisać ten program, który powinien zrobić lewy:

def f(n): 
    if not n: 
     return 1 
    else: 
     return f(n-2)-2 

>>> f(4) 
-3 

komentarz, jeśli nie jest to, co jesteś po