ComplexMatrixDivision Operator (ComplexMatrix, Complex) |
Namespace: Novacta.Analytics
Exception | Condition |
---|---|
ArgumentNullException | left is null. |
Let and
be the left
number of rows and columns, respectively, and consider its generic entry
The method returns a matrix
having the same dimensions of left, whose generic
entry is:
In the following example, a matrix is divided by a scalar.
using System; using System.Numerics; namespace Novacta.Analytics.CodeExamples { public class ComplexDivisionExample1 { public void Main() { // Create the left operand. var data = new Complex[6] { new Complex(1, -1), new Complex(5, -5), new Complex(2, -2), new Complex(6, -6), new Complex(3, -3), new Complex(7, -7) }; var left = ComplexMatrix.Dense(3, 2, data, StorageOrder.RowMajor); Console.WriteLine("left ="); Console.WriteLine(left); // Create the right operand. Complex right = new(2, -2); Console.WriteLine("right ="); Console.WriteLine(right); // Divide left by right. var result = left / right; Console.WriteLine(); Console.WriteLine("left / right ="); Console.WriteLine(result); // In .NET languages that do not support overloaded operators, // you can use the alternative methods named Divide. result = ComplexMatrix.Divide(left, right); Console.WriteLine(); Console.WriteLine("ComplexMatrix.Divide(left, right) returns"); Console.WriteLine(); Console.WriteLine(result); // Both operators and alternative methods are overloaded to // support read-only matrix arguments. // Compute the division using a read-only wrapper of left. ReadOnlyComplexMatrix readOnlyLeft = left.AsReadOnly(); result = readOnlyLeft / right; Console.WriteLine(); Console.WriteLine("readOnlyLeft / right ="); Console.WriteLine(result); } } } // Executing method Main() produces the following output: // // left = // ( 1, -1) ( 5, -5) // ( 2, -2) ( 6, -6) // ( 3, -3) ( 7, -7) // // // right = // (2, -2) // // left / right = // ( 0.5, -0) ( 2.5, -0) // ( 1, -0) ( 3, -0) // ( 1.5, -0) ( 3.5, -0) // // // // ComplexMatrix.Divide(left, right) returns // // ( 0.5, -0) ( 2.5, -0) // ( 1, -0) ( 3, -0) // ( 1.5, -0) ( 3.5, -0) // // // // readOnlyLeft / right = // ( 0.5, -0) ( 2.5, -0) // ( 1, -0) ( 3, -0) // ( 1.5, -0) ( 3.5, -0) //