3 ms·
Here is the proof that ΣΔF = F. First we define our "sequences", which are just functions from N to R; N includes 0. Next we define operators, which I will say
by drostie 15y ago
Here is the proof that ΣΔF = F. First we define our "sequences", which are just functions from N to R; N includes 0. Next we define operators, which I will say always take precedence over function arguments. We define two operators in particular:
Δg(i) = g(0) if i = 0, else g(i) − g(i − 1)
Σg(i) = Σ{n: 0 → i} g(n)
Note that Δg(0) = g(0) by these definitions, and note that Σg(0) = g(0) as well. Call these the "zeroth element relations." (Also note that I am saying Σg(0) where perhaps [Σg](0) would be more clear.)
I will observe a very simple lemma which embeds Σg in a recursive form:
Σg(n + 1) = Σg(n) + g(n + 1) for any g, any n in N.
On to the proof. ΣΔF(0) = F(0) by composing those two zeroth element relations. Also, if ΣΔF(n) = F(n) for any n, then I claim that ΣΔF(n + 1) = F(n + 1). Proof:
ΣΔF(n + 1) = ΣΔF(n) + ΔF(n + 1), by the lemma.
ΣΔF(n + 1) = F(n) + ΔF(n + 1), because "if ΣΔF(n) = F(n)".
ΣΔF(n + 1) = F(n) + F(n + 1) − F(n), by definition of Δ.
ΣΔF(n + 1) = F(n + 1)
Since it holds for n=0, and whenever it holds for n, it holds for n + 1, by induction this holds for all n in N and therefore, by induction:
ΣΔF = F
The reverse argument is also pretty simple. It's also obviously true for n = 0 due to the zeroth element relations. For n > 0 we don't even need induction:
ΔΣF(n) = ΣF(n) − ΣF(n − 1), by definition of Δ
ΔΣF(n) = ΣF(n − 1) + F(n) − ΣF(n − 1), by lemma
ΔΣF(n) = F(n)
ΔΣF = F.
If you still don't believe me, here it all is in Python:
>>> sigma = lambda seq: lambda i: sum(seq(u) for u in range(0, i + 1))
>>> delta = lambda seq: lambda i: seq(0) if i == 0 else seq(i) - seq(i - 1)
>>> expand = lambda seq: [seq(i) for i in range(0, 7)]
>>> constant = lambda N: lambda i: N
>>> expand(constant(3))
[3, 3, 3, 3, 3, 3, 3]
>>> expand(sigma(constant(3)))
[3, 6, 9, 12, 15, 18, 21]
>>> expand(delta(constant(3)))
[3, 0, 0, 0, 0, 0, 0]
>>> expand(sigma(delta(constant(3))))
[3, 3, 3, 3, 3, 3, 3]
>>> expand(delta(sigma(constant(3))))
[3, 3, 3, 3, 3, 3, 3]
Enjoy. :-)
- JadeNB 15y agoYou're right; sorry. I was stuck (as my comments indicate) on thinking of the classical setting of calculus, where functions can differ by a constant; but, since your functions are implicitly extended by 0, they cannot so differ! That is, unlike the constant function 0 : Z -> R, the 'constant' function 1 : N -> R isn't really constant once we regard it as a function Z -> R. P.S. I am a mathematician; Python convinces me of nothing but special cases. :-)