m3
This commit is contained in:
97
tests/AlgebraMiscTest.cs
Normal file
97
tests/AlgebraMiscTest.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Skeleton.Algebra.Extensions;
|
||||
using Skeleton.Analysis.AnalyticFunctions.Polynomials.Implements;
|
||||
|
||||
namespace SkeletonTest.tests;
|
||||
|
||||
public static class AlgebraMiscTest
|
||||
{
|
||||
|
||||
private static readonly Complex ii = new Complex(0, 1);
|
||||
[Test]
|
||||
public static void SolverTest()
|
||||
{
|
||||
var fff = new C2Polynomial(ii, ii, 1);
|
||||
var qrs = fff.Roots.ToArray();
|
||||
Assert.IsTrue(qrs.LSum().IsEqualApprox(-ii));
|
||||
Assert.IsTrue(qrs.LProd().IsEqualApprox(ii));
|
||||
|
||||
GeneralExt.SetTol(1E-7f);
|
||||
qrs = new C3Polynomial(ii, ii, 1, 1).Roots.ToArray();
|
||||
Assert.IsTrue(qrs.LSum().IsEqualApprox(-1));
|
||||
Assert.IsTrue(qrs.LProd().IsEqualApprox(-ii));
|
||||
Assert.IsTrue(qrs.ApproxContains(-1));
|
||||
Assert.IsTrue(qrs.ApproxContains((1 - ii) / Complex.Sqrt(2)));
|
||||
Assert.IsTrue(qrs.ApproxContains(-(1 - ii) / Complex.Sqrt(2)));
|
||||
|
||||
qrs = new C4Polynomial(ii, ii, 1, -ii, 1).Roots.ToArray();
|
||||
Assert.IsTrue(qrs.LSum().IsEqualApprox(ii));
|
||||
Assert.IsTrue(qrs.LProd().IsEqualApprox(ii));
|
||||
GeneralExt.ResetTol();
|
||||
}
|
||||
[Test]
|
||||
public static void KernelTest()
|
||||
{
|
||||
C22 mc22 = new C22(
|
||||
1 + ii, 2,
|
||||
0, 0
|
||||
);
|
||||
C2Space c2ks = mc22.Ker;
|
||||
Assert.IsTrue(c2ks.Rank == 1);
|
||||
Console.WriteLine((mc22 * c2ks[0]).Representation);
|
||||
Assert.IsTrue((mc22 * c2ks[0]).IsEqualApprox(C2.Zero));
|
||||
R22 mr22 = new R22(
|
||||
1, 3,
|
||||
0, 0
|
||||
);
|
||||
R2Space r2ks = mr22.Ker;
|
||||
Assert.IsTrue(r2ks.Rank == 1);
|
||||
Console.WriteLine((mr22 * r2ks[0]).Representation);
|
||||
Assert.IsTrue((mr22 * r2ks[0]).IsEqualApprox(R2.Zero));
|
||||
|
||||
C33 mc33 = new C33(
|
||||
3 + ii, 0, 1 - ii,
|
||||
0, 0, 0,
|
||||
0, 0, 0
|
||||
);
|
||||
C3Space c3ks = mc33.Ker;
|
||||
Assert.IsTrue(c3ks.Rank == 2);
|
||||
|
||||
Assert.IsTrue((mc33 * ((3.2 + 1.7 * ii) * c3ks[0] + (1.1 - 0.8 * ii) * c3ks[1])).IsEqualApprox(C3.Zero));
|
||||
Assert.IsTrue((mc33 * ((1.2 + 3.7 * ii) * c3ks[0] + (3.1 + 1.2 * ii) * c3ks[1])).IsEqualApprox(C3.Zero));
|
||||
R33 mr33 = new R33(
|
||||
3, 5, 1,
|
||||
3, 0, 1,
|
||||
0, 5, 0
|
||||
);
|
||||
R3Space r3ks = mr33.Ker;
|
||||
Assert.IsTrue(r3ks.Rank == 1);
|
||||
Assert.IsTrue((mr33 * r3ks[0]).IsEqualApprox(R3.Zero));
|
||||
C44 mc44 = new C44(
|
||||
1 + ii, 2 - ii, 0, 0,
|
||||
1 + ii, 0, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 0, 0, 0
|
||||
);
|
||||
C4Space c4ks = mc44.Ker;
|
||||
Assert.IsTrue(c4ks.Rank == 2);
|
||||
Assert.IsTrue((mc44 * (1.2 * c4ks[0] + 3.1 * c4ks[1])).IsEqualApprox(C4.Zero));
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public static void TransposeTest()
|
||||
{
|
||||
C22 a = new C22(
|
||||
1, 2,
|
||||
3, 4
|
||||
);
|
||||
C22 at = new C22(
|
||||
1, 3,
|
||||
2, 4
|
||||
);
|
||||
Assert.IsTrue(a.Transpose().IsEqualApprox(at));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user