Exemplo n.º 1
0
        public static MyPolynom <T> operator /(MyPolynom <T> obj1, MyPolynom <T> obj2)
        {
            var result = new MyPolynom <T>();
            var number = new MyPolynom <T>(obj1);

            var isEmpty = obj1._monomsTree.Count == 0 || obj2._monomsTree.Count == 0;

            if (isEmpty)
            {
                throw new Exception("Empty Polynoms");
            }
            while (number >= obj2)
            {
                var numberMaxDegree = number._monomsTree.Keys.Max();
                var obj2MaxDegree   = obj2._monomsTree.Keys.Max();

                var degree = numberMaxDegree - obj2MaxDegree;
                var coeff  = number._monomsTree[numberMaxDegree].Division(obj2._monomsTree[obj2MaxDegree]);
                result.Add(degree, coeff);
                var pair = new KeyValuePair <int, T>(degree, coeff);

                var tmp = obj2 * pair;
                number = number - tmp;
                number._monomsTree.Remove(numberMaxDegree);
            }
            return(result);
        }
Exemplo n.º 2
0
 public MyPolynom(MyPolynom <T> obj1)
 {
     _monomsTree = new SortedDictionary <int, T>();
     foreach (var monom in obj1._monomsTree)
     {
         _monomsTree[monom.Key] = (T)monom.Value.Clone();
     }
 }
Exemplo n.º 3
0
        public static MyPolynom <T> operator -(MyPolynom <T> obj1, KeyValuePair <int, T> degreeValuePair)
        {
            var result = new MyPolynom <T>(obj1)
            {
                { degreeValuePair.Key, degreeValuePair.Value.Negative() }
            };

            return(result);
        }
Exemplo n.º 4
0
        public static MyPolynom <T> operator -(MyPolynom <T> obj1, MyPolynom <T> obj2)
        {
            var result = new MyPolynom <T>(obj1);

            foreach (var monom in obj2._monomsTree)
            {
                result.Add(monom.Key, monom.Value.Negative());
            }

            return(result);
        }
Exemplo n.º 5
0
        public static MyPolynom <T> operator *(MyPolynom <T> obj1, KeyValuePair <int, T> degreeValuePair)
        {
            var result = new MyPolynom <T>();

            foreach (var pair in obj1._monomsTree)
            {
                var degree = pair.Key + degreeValuePair.Key;
                var coeff  = pair.Value.Multiplication(degreeValuePair.Value);
                result.Add(degree, coeff);
            }
            return(result);
        }
Exemplo n.º 6
0
        public static MyPolynom <T> operator *(MyPolynom <T> obj1, MyPolynom <T> obj2)
        {
            var result = new MyPolynom <T>();

            foreach (var firstMonom in obj1._monomsTree)
            {
                foreach (var secondMonom in obj2._monomsTree)
                {
                    var coeff  = firstMonom.Value.Multiplication(secondMonom.Value);
                    var degree = firstMonom.Key + secondMonom.Key;
                    result.Add(degree, coeff);
                }
            }
            return(result);
        }
Exemplo n.º 7
0
        public MyPolynom <T> GetSuperpos(MyPolynom <T> obj1)
        {
            var result = new MyPolynom <T>();

            foreach (var pair in _monomsTree)
            {
                var newB = new MyPolynom <T>(obj1);
                for (var j = 1; j < pair.Key; j++)
                {
                    newB = newB * obj1;
                }

                var dopPair = new KeyValuePair <int, T>(0, pair.Value);
                result = result + newB * dopPair;
            }
            return(result);
        }
Exemplo n.º 8
0
        public static MyPolynom <T> operator /(MyPolynom <T> obj1, KeyValuePair <int, T> degreeValuePair)
        {
            var result = new MyPolynom <T>();

            foreach (var pair in obj1._monomsTree)
            {
                var degree = pair.Key - degreeValuePair.Key;
                try
                {
                    var coeff = pair.Value.Division(degreeValuePair.Value);
                    result.Add(degree, coeff);
                }
                catch (Exception)
                {
                    throw;
                }
            }
            return(result);
        }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            var firstMatrixArr  = new double[3, 3];
            var secondMatrixArr = new double[3, 3];

            for (var i = 0; i < 3; ++i)
            {
                for (var k = 0; k < 3; ++k)
                {
                    firstMatrixArr[i, k]  = i + 2 * k;
                    secondMatrixArr[i, k] = i + 10 - k + firstMatrixArr[i, k];
                }
            }
            firstMatrixArr[2, 2]  = 100;
            secondMatrixArr[2, 1] = -50;

            var firstMatrix  = new MyMatrix(3, firstMatrixArr);
            var secondMatrix = new MyMatrix(3, secondMatrixArr);

            Console.WriteLine($"first  Matrix = {firstMatrix}");
            Console.WriteLine($"second Matrix = {secondMatrix}");


            var copyFirstMatrix = firstMatrix.Clone();

            Console.Write("Copy forech martrix");
            foreach (var token in (IEnumerable)copyFirstMatrix)
            {
                Console.Write($"{token}  ");
            }
            Console.WriteLine();

            var firstMatdet  = firstMatrix.GetDeterminant();
            var secondMatDet = secondMatrix.GetDeterminant();

            Console.WriteLine($"first det = {firstMatdet};\tsecond det = {secondMatDet}\n");


            var firsTransposedMatrix    = firstMatrix.Transposed();
            var secondTransportedMatrix = secondMatrix.Transposed();

            Console.WriteLine($"first  Transposed Matrix = {firsTransposedMatrix}");
            Console.WriteLine($"second Transposed Matrix = {secondTransportedMatrix}\n");

            var firstInverseMat = firstMatrix.GetInverseMatrix();

            Console.WriteLine($"First inverse = {firstInverseMat}\n");

            var sumMatrix = firstMatrix + secondMatrix;

            Console.WriteLine($"firs + second = {sumMatrix}\n");

            var multMatrix = firstMatrix * secondMatrix;

            Console.WriteLine($"firs * second = {multMatrix}\n");

            var delMatrix = firstMatrix / secondMatrix;

            Console.WriteLine($"firs / second = {delMatrix}\n");



            var firstPolynom  = new MyPolynom <MyMatrix>();
            var secondPolynom = new MyPolynom <MyMatrix>();

            firstPolynom.Add(1, firstMatrix);
            secondPolynom.Add(3, secondMatrix);
            firstPolynom.Add(1, firstMatrix);
            secondPolynom.Add(3, secondMatrix);

            firstPolynom.Add(2, firstMatrix + secondMatrix);
            secondPolynom.Add(1, secondMatrix * firstMatrix);
            Console.WriteLine($"\nPolynoms\n\nfirst  = {firstPolynom}\n");
            Console.WriteLine($"second = {secondPolynom}\n");

            var sumPolynom = firstPolynom + secondPolynom;

            Console.WriteLine($"pol sum = {sumPolynom}\n");

            var subPolynom1 = firstPolynom - secondPolynom;
            var subPolynom2 = firstPolynom - firstPolynom;

            Console.WriteLine($"pol substruction first - second = {subPolynom1}");
            Console.WriteLine($"pol substruction first - first = {subPolynom2}\n");

            var multPol = firstPolynom * secondPolynom;

            Console.WriteLine($"pol multiplication = {multPol}\n");

            var div = secondPolynom / firstPolynom;

            Console.WriteLine($"pol division = {div}\n");

            var superpos = firstPolynom.GetSuperpos(secondPolynom);

            Console.WriteLine($"superPos first(second) = {superpos}\n");

            var point = firstPolynom.InPoint(firstMatrix);

            Console.WriteLine($"first Polunom in point{firstMatrix} = {point}\n");


            Console.ReadKey();
            //{{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
        }