112 lines
3.7 KiB
C#
112 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using System.Numerics;
|
|
|
|
namespace Skeleton.Test;
|
|
|
|
/// <summary>
|
|
/// test for vector spaces
|
|
/// </summary>
|
|
[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<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)));
|
|
}
|
|
}
|
|
|