2011-01-29 3 views
10

Дано:решения функциональных уравнений программно

Р (Р (п)) = п

Р (Р (п + 2) + 2) = п

Р (0) = 1

где n - неотрицательное целое число. F (129) =?

Как мы можем программно решить такие функциональные уравнения? Моим языком программирования является Python.

+0

Что являются условиями на F? Когда n = 0, F (n) = 1. На каких условиях F вычисляет F (F (n)) и F (F (n + 2) +2)? – inspectorG4dget

+0

@ inspectorG4dget F непрерывно на R. – Sharathiitr

+0

Можете ли вы дать более точное описание того, какие ограничения могут потенциально возникнуть при решении таких проблем? Легко описать последовательности, которые не определены везде, если вы допускаете произвольные математические выражения. – templatetypedef

ответ

5

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

В данном конкретном случае, вот прямолинейно подход:

Пусть для любых двух целых чисел т, п имеем F (M) = F (п) = к. Но тогда m = F (F (m)) = F (k) = F (F (n)) = n: поэтому m = n и F никогда не принимает одинаковое значение на двух разных входах. Но мы знаем, что F (F (n)) = n = F (F (n + 2) +2) - поэтому F (n) и F (n + 2) +2 должны быть одинакового числа, , F (n + 2) == F (n) - 2 == F (n-2) - 4 = .... Теперь мы знаем F (0) = 1, поэтому F (1) = F (F (0)) = 0. Но тогда F (129) = F (127) - 2 = F (125) - 4 = ... = F (1) - 128 = -128

Итак, есть ваше решение - но механического алгоритма для решения каких-либо вариаций просто не существует.

+0

Вы также можете получить первый шаг из-за того, что 'F (F (n)) = n' является определяющим уравнением 'F' как его собственным обратным. Следствием этого является тот факт, что это биекция. – aaronasterling

+0

Символическая регрессия может решить эти проблемы во многих случаях – Inverse

1

Основываясь на том, что @ivancho и @aaronasterling сказали, я был в состоянии написать эту программу, которая должна сделать трюк:

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

>>> f(4) 
-3 

комментарий, если это не то, что вы после

Смежные вопросы