public void TridiagonalMatrixFibinacciDeterminant() { // The n X n tri-diagonal matrix with 1s on the diagonal, // 1s on the super-diagonal, and -1s on the sub-diagonal // has determinant equal to the (n+1)th Fibonacci number. foreach (int n in TestUtilities.GenerateIntegerValues(2, 128, 4)) { TridiagonalMatrix T = new TridiagonalMatrix(n); for (int i = 0; i < n; i++) { T[i, i] = 1.0; } for (int i = 1; i < n; i++) { T[i - 1, i] = 1.0; T[i, i - 1] = -1.0; } Assert.IsTrue(TestUtilities.IsNearlyEqual( T.Determinant(), AdvancedIntegerMath.FibonacciNumber(n + 1) )); } }
public void FibonacciSpecialCases() { Assert.IsTrue(AdvancedIntegerMath.FibonacciNumber(0) == 0.0); Assert.IsTrue(AdvancedIntegerMath.FibonacciNumber(1) == 1.0); Assert.IsTrue(AdvancedIntegerMath.FibonacciNumber(2) == 1.0); Assert.IsTrue(AdvancedIntegerMath.FibonacciNumber(3) == 2.0); }
public void FibonacciRecurrence() { foreach (int n in TestUtilities.GenerateIntegerValues(2, 1000, 8)) { Assert.IsTrue(TestUtilities.IsNearlyEqual( AdvancedIntegerMath.FibonacciNumber(n), AdvancedIntegerMath.FibonacciNumber(n - 1) + AdvancedIntegerMath.FibonacciNumber(n - 2) )); } }