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); }
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); }
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); }
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); }
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); }
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}}; }