Esempio n. 1
0
        private void SolveQuadratic(double a, double b)
        {
            var sqrD    = ShitMath.Sqrt(Discriminant);
            var rootVal = (-b + sqrD) / (2 * a);
            var rootStr = _shouldNotReduceFraction ? "" + (-b + sqrD + "/" + 2 * a) : "" + rootVal;

            if (Regex.Match(rootStr, @"\-.+\/\-.+").Success)
            {
                rootStr = rootStr.Replace("-", "");
            }
            Steps.Add(
                $"[Calculating first root]\tx0 = (-b + sqrt(D)) / 2a = ({-b} + {sqrD}) / {2 * a} = {rootStr}");
            Roots.Add(rootStr);

            if (Discriminant > 0)
            {
                rootVal = (-b - sqrD) / (2 * a);
                rootStr = _shouldNotReduceFraction ? "" + (-b - sqrD + "/" + 2 * a) : "" + rootVal;
                if (Regex.Match(rootStr, @"\-.+\/\-.+").Success)
                {
                    rootStr = rootStr.Replace("-", "");
                }
                Steps.Add(
                    $"[Calculating second root]\tx0 = (-b - sqrt(D)) / 2a = ({-b} - {sqrD}) / {2 * a} = {rootStr}");
                Roots.Add(rootStr);
            }
        }
Esempio n. 2
0
        private void SolveComplex(double a, double b)
        {
            var sqrD      = ShitMath.Sqrt(-Discriminant);
            var real      = -b / (2 * a);
            var imaginary = ShitMath.Abs(sqrD / (2 * a));
            var rStr      = _shouldNotReduceFraction ? -b + "/" + 2 * a : "" + real;
            var iStr      = _shouldNotReduceFraction ? sqrD + "/" + 2 * a : "" + imaginary;

            Steps.Add($"[Real part of roots]\t\tr = -b / 2a = {-b} / {2 * a} = {rStr}");
            Steps.Add($"[Imaginary part of roots]\ti = sqrt(D) / 2a = {sqrD} / {2 * a} = {iStr}");
            Steps.Add($"[Calculating first root]\tx0 = r - i = {rStr} - {iStr}i");
            Steps.Add($"[Calculating second root]\tx1 = r + i = {rStr} + {iStr}i");
            if (Regex.Match(rStr, @"\-.+\/\-.+").Success)
            {
                rStr = rStr.Replace("-", "");
            }
            if (Regex.Match(iStr, @"\-.+\/\-.+").Success)
            {
                iStr = iStr.Replace("-", "");
            }
            Roots.Add(rStr + " - " + iStr + "i");
            Roots.Add(rStr + " + " + iStr + "i");
        }