public void CorrectlyDivideByFuzzyNumber() { var values = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(4.0)}, new[] {new RealNumber(0.0), new RealNumber(1.0), new RealNumber(0.0)}, }; var matrix = new Matrix(values); var denominator = new RealNumber(-2.0); var expected = new[] { new[] {new RealNumber(-0.5), new RealNumber(-1.0), new RealNumber(-1.5)}, new[] {new RealNumber(-0.5), new RealNumber(-1.0), new RealNumber(-1.5)}, new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(-2.0)}, new[] {new RealNumber(0.0), new RealNumber(-0.5), new RealNumber(0.0)}, }; var result = matrix.Div(denominator); for (int i = 0; i < matrix.Rows; i++) for (int j = 0; j < matrix.Columns; j++) Assert.That(result[i, j].GetMod().X, Is.EqualTo(expected[i][j].GetMod().X)); }
public void CorrectlyMultiplyByAnotherVector() { var valuesX = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0) }; IVector vectorX = new Vector(valuesX); var valuesY = new[] { new RealNumber(4.0), new RealNumber(-2.0), new RealNumber(0.0) }; IVector vectorY = new Vector(valuesY); var result = vectorX.Mul(vectorY); Assert.That(result.GetMod().X, Is.EqualTo(new RealNumber(0.0).GetMod().X)); }
public void CorrectlyAccessElements() { var values = new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0)}; var vector = new Vector(values); Assert.That(vector.Length, Is.EqualTo(3)); for (int i = 0; i < vector.Length; i++) { Assert.That(vector[i].GetMod().X, Is.EqualTo(values[i].GetMod().X)); } }
public void CorrectlyMultiplyByFuzzyNumber() { var values = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0) }; IVector vector = new Vector(values); var multiplier = new RealNumber(3.0); vector = vector.Mul(multiplier); Assert.That(vector.Length, Is.EqualTo(3)); Assert.That(vector[0].GetMod().X, Is.EqualTo(new RealNumber(3.0).GetMod().X)); Assert.That(vector[1].GetMod().X, Is.EqualTo(new RealNumber(6.0).GetMod().X)); Assert.That(vector[2].GetMod().X, Is.EqualTo(new RealNumber(-3.0).GetMod().X)); }
public void CorrectlyConstructsRowsAndColumns1() { var values = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(4.0), new RealNumber(5.0), new RealNumber(6.0)}, new[] {new RealNumber(7.0), new RealNumber(8.0), new RealNumber(9.0)}, new[] {new RealNumber(1.0), new RealNumber(1.0), new RealNumber(1.0)}, }; var matrix = new Matrix(values); Assert.That(matrix.Rows, Is.EqualTo(4)); Assert.That(matrix.Columns, Is.EqualTo(3)); }
public void CorrectlyAccessElements() { var values = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(4.0), new RealNumber(5.0), new RealNumber(6.0)}, new[] {new RealNumber(7.0), new RealNumber(8.0), new RealNumber(9.0)}, new[] {new RealNumber(1.0), new RealNumber(1.0), new RealNumber(1.0)}, }; var matrix = new Matrix(values); for(int i=0; i<matrix.Rows; i++) for(int j=0; j<matrix.Columns; j++) Assert.That(matrix[i,j].GetMod().X, Is.EqualTo(values[i][j].GetMod().X)); }
public void CorrectlyMemberviseMulWithAnotherVector() { var valuesX = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0) }; IVector vectorX = new Vector(valuesX); var valuesY = new[] { new RealNumber(4.0), new RealNumber(-2.0), new RealNumber(0.0) }; IVector vectorY = new Vector(valuesY); var result = vectorX.MemberviseMul(vectorY); var expected = new[] { new RealNumber(4.0), new RealNumber(-4.0), new RealNumber(0.0), }; Assert.That(result.Length, Is.EqualTo(valuesX.Length)); for (int i = 0; i < valuesX.Length; i++) Assert.That(result[i].GetMod().X, Is.EqualTo(expected[i].GetMod().X)); }
public void CorrectlyCalculateOuterProduct() { var valuesX = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0) }; IVector vectorX = new Vector(valuesX); var valuesY = new[] { new RealNumber(1.0), new RealNumber(2.0)}; IVector vectorY = new Vector(valuesY); var expected = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0)}, new[] {new RealNumber(2.0), new RealNumber(4.0)}, new[] {new RealNumber(3.0), new RealNumber(6.0)}, }; var result = vectorX.OuterMul(vectorY); for (int i = 0; i < valuesX.Length; i++) for (int j = 0; j < valuesY.Length; j++) Assert.That(result[i, j].GetMod().X, Is.EqualTo(expected[i][j].GetMod().X)); }
public void CorrectlyMulMatrixes() { var valuesX = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(-1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, }; var matrixX = new Matrix(valuesX); var valuesY = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0)}, }; var matrixY = new Matrix(valuesY); var results = new[] { new[] {new RealNumber(6.0), new RealNumber(12.0)}, new[] {new RealNumber(4.0), new RealNumber(8.0)}, new[] {new RealNumber(6.0), new RealNumber(12.0)}, new[] {new RealNumber(6.0), new RealNumber(12.0)}, }; var result = matrixX.Mul(matrixY); for (int i = 0; i < matrixX.Rows; i++) for (int j = 0; j < matrixY.Columns; j++) Assert.That(result[i, j].GetMod().X, Is.EqualTo(results[i][j].GetMod().X)); }
public void ProvideCommutativeSum() { var valuesX = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(-4.0), new RealNumber(-5.0), new RealNumber(-6.0)}, new[] {new RealNumber(7.0), new RealNumber(-8.0), new RealNumber(9.0)}, new[] {new RealNumber(-1.0), new RealNumber(1.0), new RealNumber(-1.0)}, }; var matrixX = new Matrix(valuesX); var valuesY = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(4.0), new RealNumber(5.0), new RealNumber(6.0)}, new[] {new RealNumber(7.0), new RealNumber(8.0), new RealNumber(9.0)}, new[] {new RealNumber(1.0), new RealNumber(1.0), new RealNumber(1.0)}, }; var matrixY = new Matrix(valuesY); var results = new[] { new[] {new RealNumber(2.0), new RealNumber(4.0), new RealNumber(6.0)}, new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(0.0)}, new[] {new RealNumber(14.0), new RealNumber(0.0), new RealNumber(18.0)}, new[] {new RealNumber(0.0), new RealNumber(2.0), new RealNumber(0.0)}, }; var resultXY = matrixX.Sum(matrixY); var resultYX = matrixY.Sum(matrixX); for (int i = 0; i < matrixX.Rows; i++) for (int j = 0; j < matrixX.Columns; j++) Assert.That(resultXY[i, j].GetMod().X, Is.EqualTo(resultYX[i, j].GetMod().X)); }
public void CorrectlyMultiplyByVector() { var values = new[] { new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(1.0), new RealNumber(2.0), new RealNumber(3.0)}, new[] {new RealNumber(0.0), new RealNumber(0.0), new RealNumber(4.0)}, new[] {new RealNumber(0.0), new RealNumber(1.0), new RealNumber(0.0)}, }; var matrix = new Matrix(values); var vector = new Vector(new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(1.0) }); var expected = new[] { new RealNumber(8.0), new RealNumber(8.0), new RealNumber(4.0), new RealNumber(2.0) }; var result = matrix.Mul(vector); Assert.That(result.Length, Is.EqualTo(matrix.Rows)); for (int i = 0; i < result.Length; i++) Assert.That(result[i].GetMod().X, Is.EqualTo(expected[i].GetMod().X)); }
public void CorrectlyMultiplyByFuzzyNumber() { var values = new[] { new[] {new RealNumber(2.0), new RealNumber(2.0), new RealNumber(4.0)}, new[] {new RealNumber(4.0), new RealNumber(6.0), new RealNumber(6.0)}, new[] {new RealNumber(8.0), new RealNumber(8.0), new RealNumber(10.0)}, new[] {new RealNumber(10.0), new RealNumber(12.0), new RealNumber(12.0)}, }; var matrix = new Matrix(values); var multiplier = new RealNumber(-0.5); var results = new[] { new[] {new RealNumber(-1.0), new RealNumber(-1.0), new RealNumber(-2.0)}, new[] {new RealNumber(-2.0), new RealNumber(-3.0), new RealNumber(-3.0)}, new[] {new RealNumber(-4.0), new RealNumber(-4.0), new RealNumber(-5.0)}, new[] {new RealNumber(-5.0), new RealNumber(-6.0), new RealNumber(-6.0)}, }; var result = matrix.Mul(multiplier); for (int i = 0; i < matrix.Rows; i++) for (int j = 0; j < matrix.Columns; j++) Assert.That(result[i, j].GetMod().X, Is.EqualTo(results[i][j].GetMod().X)); }
public void CorrectlyNegateVector() { var valuesX = new[] { new RealNumber(1.0), new RealNumber(0.0), new RealNumber(-1.0) }; IVector vectorX = new Vector(valuesX); var result = vectorX.Negate(); var expected = new[] { new RealNumber(-1.0), new RealNumber(0.0), new RealNumber(1.0), }; Assert.That(result.Length, Is.EqualTo(valuesX.Length)); for (int i = 0; i < valuesX.Length; i++) Assert.That(result[i].GetMod().X, Is.EqualTo(expected[i].GetMod().X)); }
public void ProvideCommutativeMultiplication() { var valuesX = new[] { new RealNumber(1.0), new RealNumber(2.0), new RealNumber(-1.0) }; IVector vectorX = new Vector(valuesX); var valuesY = new[] { new RealNumber(4.0), new RealNumber(-2.0), new RealNumber(0.0) }; IVector vectorY = new Vector(valuesY); var resultXY = vectorX.Mul(vectorY); var resultYX = vectorY.Mul(vectorX); Assert.That(resultXY.GetMod().X, Is.EqualTo(resultYX.GetMod().X)); }