C#矩阵计算和使用自己的通用类型的SVD(使用Math.NET Numerics)

时间:2017-02-13 09:12:04

标签: c# generics svd mathnet

我已经编写了自己的区间运算结构,为了简单起见,我们只是说这是一个由下限和上限定义的值。你们中的一些人可能知道类型范围非常相似。

我重载了整个算术运算符,如+, - ,*,/,<,>,....所以我想我应该有类似泛型类型的东西(或者应该能够实现其余的以使其成为一个)。

现在我想用我的类型工作/计算。由于我正在处理线性方程系统,需要像 SVD 这样的东西,并且不想重新发明轮子,我打算使用像 Math.NET Numerics 。但这就是他们的矩阵类所说的:

/// <summary>
    /// Defines the base class for <c>Matrix</c> classes.
    /// </summary>
    /// <typeparam name="T">Supported data types are <c>double</c>, <c>single</c>, <see cref="Complex"/>, and <see cref="Complex32"/>.</typeparam>
    [Serializable]
    public abstract partial class Matrix<T> :
        IFormattable, IEquatable<Matrix<T>>
#if !PORTABLE
        , ICloneable
#endif
        where T : struct, IEquatable<T>, IFormattable

简而言之:他们说只允许双重,单一和复杂。所以我的泛型类型不会工作,即使它实现了所有列出的接口,对吧?

所以:我是对的,我不能在我的类型中使用Math.Net数字?你知道其他数学库会支持我的类型/通用吗?我真的必须编写自己的实现吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我不能直接评论(由于声誉很小),所以我必须发表一个&#34;回答&#34;,我的道歉!

我不认为你所拥有的是&#34;泛型类型&#34;,它是一种特定的,自定义的(非内置的)类型。

现在假设您实际上可以使用Matrix抽象类(顺便说一下,您应该自己尝试使用它)来表示区间矩阵。你仍然会留下所有艰苦的工作,因为计算区间矩阵的SVD并不是我所知道的与任何特定矩阵的SVD直接相关,或者是它?同样,对于区间特征值/特征向量计算。