繁体   English   中英

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

[英]C# Matrix calculations and SVD using own generic type (with Math.NET Numerics)

我为间隔算术编写了自己的结构,为简单起见,我们只说这是一个由下限和上限定义的值。 你们中有些人可能熟悉Range类型,这非常相似。

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

现在,我要使用我的类型进行计算。 由于我正在处理线性方程组 ,需要SVD之类的东西并且不想重新发明轮子,因此我打算使用现有的Math库,例如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

简而言之:他们说只允许使用double,single和complex。 因此,即使我的通用类型实现了所有列出的接口,也无法使用,对吗?

所以:我不能在我的类型中使用Math.Net数值吗? 您知道其他支持我的类型/泛型的数学库吗? 我真的必须编写自己的实现吗?

提前致谢!

我不能直接发表评论(由于信誉不佳),所以我必须发表一个“答案”,我很抱歉!

我不认为您拥有的是“通用类型”,而是特定的,自定义的(不是内置的)类型。

现在假设您实际上可以使用Matrix抽象类(顺便说一句,您应该自己尝试一下)来表示一个间隔矩阵。 我仍然不遗余力,因为据我所知,计算间隔矩阵的SVD与任何特定矩阵的SVD没有直接关系,是吗? 对于间隔特征值/特征向量计算同样如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM