Решение функциональных уравнений программно - PullRequest
11 голосов
/ 29 января 2011

Данные:

F (F (n)) = n

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

F (0) =1

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

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

Ответы [ 2 ]

5 голосов
/ 29 января 2011

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

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

Предположим, что для любых двух целых чисел m, n F (m) = F (n) = k. Но тогда 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

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

2 голосов
/ 29 января 2011

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

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

>>> f(4)
-3

Прокомментируйте, если это не то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...