コード例 #1
0
        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)
                                  ));
            }
        }
コード例 #2
0
 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);
 }
コード例 #3
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)
                           ));
     }
 }