コード例 #1
0
 public ComplexMatrix(OrderedPair size)
 {
     var matrix = new ComplexVector[size.M];
     for (var i = 0; i < size.M; i++)
     {
         matrix[i] = new ComplexVector(size.N);
     }
     this.matrix = matrix;
 }
コード例 #2
0
        public ComplexMatrix(OrderedPair size)
        {
            var matrix = new ComplexVector[size.M];

            for (var i = 0; i < size.M; i++)
            {
                matrix[i] = new ComplexVector(size.N);
            }
            this.matrix = matrix;
        }
コード例 #3
0
        public ComplexMatrix ScalarProduct(Complex c)
        {
            var result = new ComplexVector[this.Size.M];

            for (var m = 0; m < this.Size.M; m++)
            {
                result[m] = this[m].ScalarProduct(c);
            }

            return(new ComplexMatrix(result));
        }
コード例 #4
0
 public ComplexMatrix(ComplexVector[] matrix)
 {
     var size = -1;
     for (var i = 0; i < matrix.Length; i++)
     {
         if (size == -1) size = matrix[i].Size;
         else if (size != matrix[i].Size)
         {
             throw new MatrixSizeException(MatrixSizeException.RANK_MESSAGE);
         }
     }
     this.matrix = matrix;
 }
コード例 #5
0
        public static ComplexMatrix operator -(ComplexMatrix m1, ComplexMatrix m2)
        {
            if (m1.Size != m2.Size)
            {
                throw new MatrixSizeException(MatrixSizeException.SUBTRACTION_MESSAGE);
            }

            var result = new ComplexVector[m1.Size.M];

            for (var m = 0; m < m1.Size.M; m++)
            {
                result[m] = m1[m] - m2[m];
            }

            return(new ComplexMatrix(result));
        }
コード例 #6
0
        public static Complex InnerProduct(ComplexVector v1, ComplexVector v2)
        {
            if (v1.Size != v2.Size)
            {
                throw new VectorSizeException(VectorSizeException.INNER_PRODUCT_MESSAGE);
            }

            var result = new Complex();

            for (var i = 0; i < v1.Size; i++)
            {
                result += v1[i] * v2[i].Conjugate;
            }

            return(result);
        }
コード例 #7
0
        public ComplexMatrix(Complex[][] matrix)
        {
            var vectors = new ComplexVector[matrix.Length];
            var size = -1;

            for (var i = 0; i < matrix.Length; i++)
            {
                vectors[i] = new ComplexVector(matrix[i]);

                if (size == -1) size = vectors[i].Size;
                else if (size != vectors[i].Size)
                {
                    throw new MatrixSizeException(MatrixSizeException.RANK_MESSAGE);
                }
            }

            this.matrix = vectors;
        }
コード例 #8
0
        public ComplexMatrix(Complex[][] matrix)
        {
            var vectors = new ComplexVector[matrix.Length];
            var size    = -1;

            for (var i = 0; i < matrix.Length; i++)
            {
                vectors[i] = new ComplexVector(matrix[i]);

                if (size == -1)
                {
                    size = vectors[i].Size;
                }
                else if (size != vectors[i].Size)
                {
                    throw new MatrixSizeException(MatrixSizeException.RANK_MESSAGE);
                }
            }

            this.matrix = vectors;
        }
コード例 #9
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void VectorScalarMultiplication()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(12, 21), new Complex(0, 0), new Complex(13, 13), new Complex(12, 8) });
            var result = v3.ScalarProduct(c9);

            Assert.AreEqual(expected, result);
        }
コード例 #10
0
        public ComplexMatrix ScalarProduct(Complex c)
        {
            var result = new ComplexVector[this.Size.M];
            for (var m = 0; m < this.Size.M; m++)
            {
                result[m] = this[m].ScalarProduct(c);
            }

            return new ComplexMatrix(result);
        }
コード例 #11
0
 public static double Distance(ComplexVector v1, ComplexVector v2)
 {
     return((v1 - v2).Norm);
 }
コード例 #12
0
 public static double Distance(ComplexVector v1, ComplexVector v2)
 {
     return (v1 - v2).Norm;
 }
コード例 #13
0
        public static Complex InnerProduct(ComplexVector v1, ComplexVector v2)
        {
            if (v1.Size != v2.Size)
                throw new VectorSizeException(VectorSizeException.INNER_PRODUCT_MESSAGE);

            var result = new Complex();

            for (var i = 0; i < v1.Size; i++)
            {
                result += v1[i] * v2[i].Conjugate;
            }

            return result;
        }
コード例 #14
0
        public static ComplexMatrix operator -(ComplexMatrix m1, ComplexMatrix m2)
        {
            if (m1.Size != m2.Size)
                throw new MatrixSizeException(MatrixSizeException.SUBTRACTION_MESSAGE);

            var result = new ComplexVector[m1.Size.M];
            for (var m = 0; m < m1.Size.M; m++)
            {
                result[m] = m1[m] - m2[m];
            }

            return new ComplexMatrix(result);
        }
コード例 #15
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void VectorSubtraction()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(-10, -6.3), new Complex(7, 10), new Complex(-1.8, -8.1), new Complex(0, 1) });
            var result = v1 - v2;

            Assert.AreEqual(expected, result);
        }
コード例 #16
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void VectorInverse()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(-6, 4), new Complex(-7, -3), new Complex(-4.2, 8.1), new Complex(0, 3) });
            var result = v1.Inverse;

            Assert.AreEqual(expected, result);
        }
コード例 #17
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void VectorConjugate()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(6, -3), new Complex(0, 0), new Complex(5, -1), new Complex(4, 0) });
            var result = v3.Conjugate;

            Assert.AreEqual(expected, result);
        }
コード例 #18
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void VectorAddition()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(22, -1.7), new Complex(7, -4), new Complex(10.2, -8.1), new Complex(0, -7) });
            var result = v1 + v2;

            Assert.AreEqual(expected, result);
        }
コード例 #19
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void MatrixRow()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(3, -1), new Complex(1, 4), new Complex(-2, 1), new Complex(1, -1) });
            var result = m1.Row(1);

            Assert.AreEqual(expected, result);
        }
コード例 #20
0
ファイル: Math.cs プロジェクト: shabegger/quantum-emulate
        public void MatrixColumn()
        {
            var expected = new ComplexVector(
                new Complex[] { new Complex(5, -4), new Complex(1, -1), new Complex(-4, 2) });
            var result = m1.Column(3);

            Assert.AreEqual(expected, result);
        }