using System.Collections.Generic; using System.Numerics; namespace Skeleton.Test; /// /// test for vector spaces /// [TestFixture] public class VectorSpaceTest : BaseTest { private static readonly Complex ii = new Complex(0, 1); [Test] public static void Dim2Test() { R2Space r2a = new R2Space(new List() { new R2(3, 2) }); Assert.IsTrue(r2a.Rank == 1); Assert.IsTrue(r2a.ContainsVector(new R2(9, 6))); Assert.IsTrue(!r2a.ContainsVector(new R2(1,0))); R2Space r2ac = r2a.OrthogonalComplementSpace; Assert.IsTrue(r2ac.ContainsVector(new R2(2, -3))); C2Space c2a = new C2Space(new List() { new C2(1 - ii, 1 + ii) }); Assert.IsTrue(c2a.Rank == 1); Assert.IsTrue(c2a.ContainsVector(new C2(2 - 2 * ii, 2 + 2 * ii))); Assert.IsTrue(!c2a.ContainsVector(new C2(1 + ii, 0))); C2Space c2ac = c2a.OrthogonalComplementSpace; Assert.IsTrue(c2ac.ContainsVector(new C2(ii, 1))); } [Test] public static void Dim3Test() { R3Space r3a = new R3Space(new List() { new R3(1, 1, 1), new R3(1, 1, 0) }); Assert.IsTrue(r3a.Rank == 2); Assert.IsTrue(r3a.ContainsVector(new R3(2,2,1))); Assert.IsTrue(r3a.ContainsVector(new R3(3,3,3))); Assert.IsTrue(r3a.OrthogonalComplementSpace.ContainsVector(new R3(-2, 2, 0))); C3Space c3a = new C3Space(new List() { new C3(1 + ii, 1 - ii, ii), new C3(1, 0, 1) }); Assert.IsTrue(c3a.Rank == 2); Assert.IsTrue(c3a.OrthogonalComplementSpace.Rank == 1); Assert.IsTrue(c3a.ContainsVector(new C3(2 + ii, 1 - ii, 1 + ii))); Assert.IsTrue(c3a.OrthogonalComplementSpace.ContainsVector(new C3(-2, 1-ii, 2))); } [Test] public static void Dim4Test() { R4Space r4a = new R4Space(new List() { new R4(1, 1, 0, 0), new R4(0, 1, 0, 1) }); Assert.IsTrue(r4a.Rank==2); Assert.IsTrue(r4a.OrthogonalComplementSpace.Rank==2); Assert.IsTrue(r4a.ContainsVector(new R4(1, 0, 0, -1))); Assert.IsTrue(r4a.OrthogonalComplementSpace.ContainsVector(new R4(0, 0, 1, 0))); Assert.IsTrue(r4a.OrthogonalComplementSpace.ContainsVector(new R4(1,-1,0,1))); C44 a = new C44( 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ii, 0, 0, 0, 1 ); C44 b = new C44( ii, 1, -1, -ii, 1, -1, 0, 0, ii, 0, 0, 0, 0, 0, 0, 0 ); C4Space c4a = new C4Space(new List() { new C4(ii, 1, -1, -ii), new C4(1, -1, 0, 0), new C4(ii, 0, 0, 0) }); Assert.IsTrue(c4a.Rank == 3); Assert.IsTrue(c4a.OrthogonalComplementSpace.Rank == 1); Assert.IsTrue(c4a.ContainsVector(new C4(1+ii,-1,0,0))); Assert.IsTrue(c4a.ContainsVector(new C4(1+ii,0,-1, -ii))); Assert.IsTrue(c4a.ContainsVector(new C4(1+2*ii,0,-1, -ii))); Assert.IsTrue(c4a.OrthogonalComplementSpace.ContainsVector(new C4(0, 0, ii, 1))); } [Test] public static void ContainsVectorTest() { C3Space c3s = new (new C3[] { new(1, 4, 2), new(2, 4, 1) }); Assert.IsFalse(c3s.ContainsVector(new (0.62469505d, -0.46852129, 0.62469505))); } [Test] public static void UnionTest() { C3Space c3s1 = new (new C3[] { new(1, 4, 2) }); C3Space c3s2 = new(new C3[] { new(2, 4, 1) }); C3Space union = c3s1.UnionWith(c3s2); Assert.That(union.Rank, Is.EqualTo(2)); Assert.IsTrue(union.ContainsVector(new(1, 4, 2))); Assert.IsTrue(union.ContainsVector(new(2, 4, 1))); Assert.IsTrue(union.ContainsVector(new (3, 8, 3))); Assert.IsFalse(union.ContainsVector(new(0.62469505d, -0.46852129, 0.62469505))); } [Test] public static void OrthogonalComplementTest() { C3Space space = new(new C3[] { new(1, -3d/4d, 1) }); C3Space otcSpace = space.OrthogonalComplementSpace; Assert.IsTrue(otcSpace.ContainsVector(new(1, 4, 2))); Assert.IsTrue(otcSpace.ContainsVector(new(2, 4, 1))); Assert.That(otcSpace.Rank, Is.EqualTo(2)); Assert.IsFalse(otcSpace.ContainsVector(new(0.62469505d, -0.46852129, 0.62469505))); } }