Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现大有理幂法_C#_Numerics - Fatal编程技术网

C# 如何实现大有理幂法

C# 如何实现大有理幂法,c#,numerics,C#,Numerics,我正在使用BigRational的BCL Codeplex实现,但是它似乎没有一个Pow方法可以接受两个BigRational,只有一个方法可以接受一个BigRational和一个BigInteger。我想自己写一本,但我不知道从哪里开始。 编辑:一些代码: public static BigRational Pow(BigRational baseVal, BigRational exponent, int inputPrecision) { if (e

我正在使用
BigRational
的BCL Codeplex实现,但是它似乎没有一个Pow方法可以接受两个
BigRational
,只有一个方法可以接受一个
BigRational
和一个
BigInteger
。我想自己写一本,但我不知道从哪里开始。 编辑:一些代码:

        public static BigRational Pow(BigRational baseVal, BigRational exponent, int inputPrecision)
    {
        if (exponent == 0)
        {
            return BigRational.One;
        }
        if (exponent == 1)
        {
            return baseVal;
        }
        if (exponent.GetWholePart() == exponent)
        {
            return Pow(baseVal, exponent.GetWholePart());
        }
        baseVal = Round(baseVal, inputPrecision); //custom rounding method
        exponent = Round(exponent, inputPrecision); 
        BigInteger exponentWhole = exponent.GetWholePart();
        BigRational extra = exponent - exponentWhole;
        return //what?
    }

有理数在幂运算下不是封闭的,例如,2^(1/2)是无理的。问题本质上是“我不知道如何做一些不可能的事情”——假设你当然希望结果是一个大有理数。因为根据定义,没有人知道如何做不可能的事情,所以我认为你不会得到任何答案。如果您想要实现一个返回其他内容的Pow,那么请澄清这个问题。例如,您可以编写一个Pow实现,该实现返回一系列BigRational,其属性是每个后续成员都更接近reals中的结果。然后,用户可以迭代该序列,直到保证连续成员之间的差值始终小于给定的ε。这对你的目的来说够了吗?这样做的数学运算并不特别困难。不要介意传递一个参数以获得精度。