Ejemplo n.º 1
0
        /// <summary>
        /// Perform one iteration of searching for a root with Newton-Raphson method
        /// </summary>
        /// <param name="f"></param>
        /// <param name="df"></param>
        /// <param name="value"></param>
        /// <param name="precision"></param>
        /// <returns></returns>
        private static ComplexNumber NewtonIter(FastExpression f, FastExpression df, ComplexNumber value, int precision)
        {
            ComplexNumber prev          = value;
            int           minCheckIters = (int)Math.Sqrt(precision);

            for (int i = 0; i < precision; i++)
            {
                if (i == precision - 1)
                {
                    prev = value.Copy();
                }
                try // TODO: remove try catch in for
                {
                    value -= (f.Substitute(value) / df.Substitute(value)) as ComplexNumber;
                }
                catch (MathSException)
                {
                    throw new MathSException("Two or more variables in SolveNt is forbidden");
                }
                if (i > minCheckIters && prev == value)
                {
                    return(value);
                }
            }
            if (Number.Abs(prev - value) > MathS.Settings.PrecisionErrorCommon)
            {
                return(RealNumber.NaN());
            }
            else
            {
                return(value);
            }
        }
Ejemplo n.º 2
0
        public void TestWithUndefined4()
        {
            var a = RealNumber.NegativeInfinity();
            var b = RealNumber.NaN();

            Assert.IsTrue(a * b == RealNumber.NaN());
        }
Ejemplo n.º 3
0
        public void TestWithUndefined5()
        {
            var a = new RealNumber(4);
            var b = new RealNumber(0.0m);

            Assert.IsTrue(a / b == RealNumber.NaN(), (a / b).ToString());
        }
Ejemplo n.º 4
0
 public void TestWithUndefined13()
 {
     Assert.IsTrue(RealNumber.PositiveInfinity() / RealNumber.NegativeInfinity() == RealNumber.NaN());
 }
Ejemplo n.º 5
0
        public void TestWithUndefined8()
        {
            var x = new RationalNumber(Number.Create(-1), Number.Create(2));

            Assert.IsTrue(x / 0 == RealNumber.NaN(), (x / 0).ToString());
        }