Files
Skeleton.Test/tests/VectorSpaceTest.cs
2024-07-10 15:43:44 +01:00

111 lines
3.7 KiB
C#

using System.Collections.Generic;
using System.Numerics;
namespace Skeleton.Test.tests;
/// <summary>
/// test for vector spaces
/// </summary>
public static class VectorSpaceTest
{
private static readonly Complex ii = new Complex(0, 1);
[Test]
public static void Dim2Test()
{
R2Space r2a = new R2Space(new List<R2>() { 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<C2>() { 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<R3>() { 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<C3>() { 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<R4>() { 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<C4>()
{
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)));
}
}