以编程方式求解函数方程

时间:2011-01-29 06:14:25

标签: python function math

假设:

F(F(n))= n

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

F(0)= 1

其中n是非负整数。 F(129)=?

我们如何以编程方式解决这类函数方程?我选择的编程语言是Python。

2 个答案:

答案 0 :(得分:5)

功能方程,用它们最一般的术语来说,真的很难。几乎每个国际数学竞赛都有其中之一,通常看起来像你写的一样无辜,这绝非巧合。解决它们的方法各不相同,从简单归纳到无限维Banach空间分析,解决它们的通用编程方法是不太可能的。

在这种特殊情况下,这是一个直截了当的方法:

假设对于任何两个整数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

所以有你的解决方案 - 但是不存在用于解决任何变化的机械算法。

答案 1 :(得分:2)

根据@ivancho和@aaronasterling的说法,我已经能够编写这个应该可以解决问题的程序了:

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

>>> f(4)
-3

评论这不是你想要的