📄 matrix.cs
字号:
namespace Opus6
{
using System;
using System.Reflection;
[Version("$Id: Matrix.cs,v 1.6 2001/10/28 19:50:09 brpreiss Exp $"), Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng.")]
public abstract class Matrix
{
protected Matrix()
{
}
public static Matrix operator +(Matrix m1, Matrix m2)
{
return m1.Plus(m2);
}
public static Matrix operator *(Matrix m1, Matrix m2)
{
return m1.Times(m2);
}
public abstract Matrix Plus(Matrix matrix);
internal static void TestMatrix(Matrix mat)
{
Opus6.Console.WriteLine("Matrix Test ({0})", mat.GetType().FullName);
int num1 = 0;
for (int num2 = 0; num2 < mat.Rows; num2++)
{
for (int num3 = 0; num3 < mat.Columns; num3++)
{
mat[num2, num3] = num1++;
}
}
for (int num4 = 0; num4 < mat.Rows; num4++)
{
for (int num5 = 0; num5 < mat.Columns; num5++)
{
Opus6.Console.Write("{0} ", mat[num4, num5]);
}
Opus6.Console.WriteLine();
}
mat += mat;
for (int num6 = 0; num6 < mat.Rows; num6++)
{
for (int num7 = 0; num7 < mat.Columns; num7++)
{
Opus6.Console.Write("{0} ", mat[num6, num7]);
}
Opus6.Console.WriteLine();
}
}
internal static void TestTimes(Matrix mat1, Matrix mat2)
{
Opus6.Console.WriteLine("Multiply Test ({0})", mat1.GetType().FullName);
mat1[0, 0] = 1;
mat1[0, 1] = 2;
mat1[0, 2] = 3;
mat2[0, 0] = 1;
mat2[1, 0] = 2;
mat2[2, 0] = 3;
for (int num1 = 0; num1 < mat1.Rows; num1++)
{
for (int num2 = 0; num2 < mat1.Columns; num2++)
{
Opus6.Console.Write("{0} ", mat1[num1, num2]);
}
Opus6.Console.WriteLine();
}
for (int num3 = 0; num3 < mat2.Rows; num3++)
{
for (int num4 = 0; num4 < mat2.Columns; num4++)
{
Opus6.Console.Write("{0} ", mat2[num3, num4]);
}
Opus6.Console.WriteLine();
}
mat1 = mat2 * mat1;
for (int num5 = 0; num5 < mat1.Rows; num5++)
{
for (int num6 = 0; num6 < mat1.Columns; num6++)
{
Opus6.Console.Write("{0} ", mat1[num5, num6]);
}
Opus6.Console.WriteLine();
}
}
internal static void TestTranspose(Matrix mat)
{
Opus6.Console.WriteLine("Transpose Test ({0})", mat.GetType().FullName);
mat[0, 0] = 31;
mat[0, 2] = 41;
mat[0, 3] = 59;
mat[1, 1] = 26;
mat[2, 3] = 53;
mat[2, 4] = 58;
mat[4, 2] = 97;
mat[5, 1] = 93;
mat[5, 5] = 23;
for (int num1 = 0; num1 < mat.Rows; num1++)
{
for (int num2 = 0; num2 < mat.Columns; num2++)
{
Opus6.Console.Write("{0} ", mat[num1, num2]);
}
Opus6.Console.WriteLine();
}
mat[2, 4] = 0;
mat[5, 3] = 0;
mat = mat.Transpose;
for (int num3 = 0; num3 < mat.Rows; num3++)
{
for (int num4 = 0; num4 < mat.Columns; num4++)
{
Opus6.Console.Write("{0} ", mat[num3, num4]);
}
Opus6.Console.WriteLine();
}
}
public abstract Matrix Times(Matrix matrix);
public abstract int Columns { get; }
public abstract double this[int i, int j] { get; set; }
public abstract int Rows { get; }
public abstract Matrix Transpose { get; }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -