35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify Fibonacci computation mathematically."""
|
|
|
|
# Compute Fibonacci sequence
|
|
fibs = [0, 1]
|
|
for i in range(18):
|
|
fibs.append(fibs[-1] + fibs[-2])
|
|
|
|
# Property 1: Sum of first n Fibonacci numbers = F(n+2) - 1
|
|
# For first 20 (F0 to F19): sum = F(21) - 1
|
|
# We need to compute F(20) and F(21)
|
|
f20 = fibs[-1] + fibs[-2] # F(20)
|
|
f21 = f20 + fibs[-1] # F(21)
|
|
calc_sum = f21 - 1
|
|
|
|
# Verify F(21) = 10946
|
|
# F(19)=4181, F(20)=6765, F(21)=10946
|
|
# So sum = 10946 - 1 = 10945
|
|
|
|
# Property 2: Direct sum
|
|
direct_sum = sum(fibs)
|
|
|
|
# Write verification results
|
|
with open("/root/.hermes/wizard-outputs/spark/math_verification.txt", "w") as f:
|
|
f.write(f"Sequence length: {len(fibs)}\n")
|
|
f.write(f"Sum (direct calculation): {direct_sum}\n")
|
|
f.write(f"Sum (F(n+2)-1 formula): {calc_sum}\n")
|
|
f.write(f"Formula matches direct: {direct_sum == calc_sum}\n")
|
|
f.write(f"Last number (F19): {fibs[19]}\n")
|
|
f.write(f"Last number is correct (4181): {fibs[19] == 4181}\n")
|
|
f.write(f"All consecutive pairs valid: {all(fibs[i] == fibs[i-1] + fibs[i-2] for i in range(2, len(fibs)))}\n")
|
|
|
|
print(f"Direct sum: {direct_sum}")
|
|
print(f"Formula sum: {calc_sum}")
|
|
print(f"All checks pass: {direct_sum == calc_sum and fibs[19] == 4181}") |