ВУЗ:
Составители:
Рубрика:
87
// размеры матриц должны совпадать
if (rows1 != rows2 || cols1 != cols2)
throw new Exception ("Матрицы таких размеров
складывать нельзя");
Matrix newM = new Matrix(rows1, cols1);
for (int i = 0; i < rows1; i++)
for (int j = 0; j < cols1; j++)
newM[j, i] = m1[i, j] + m2[i,j];
return newM;
}
// метод, перегружающий операцию траспонирование матрицы
static public Matrix operator !(Matrix m)
{
int rows = m.Rows, cols = m.Cols;
Matrix newM = new Matrix(cols, rows);
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
newM[j, i] = m[i, j];
return newM;
}
// операция перемножения двух матриц
static public Matrix operator *(Matrix m1, Matrix m2)
{
int rows1 = m1.Rows, cols1 = m1.Cols,
rows2 = m2.Rows, cols2=m2.Cols;
if (cols1 == rows2)
{
// создание матрицы-результата
Matrix newM = new Matrix(rows1, cols2);
// заполнение матрицы-результата
for (int i = 0; i < rows1; i++)
for (int j = 0; j < cols2; j++)
for (int k = 0; k < cols1; k++)
newM[i, j] += m1[i, k] * m2[k, j];
return newM;
}
else
{
// количество столбцов первой матрицы должно
// быть равно количеству строк второй матрицы
throw new Exception ("Матрицы таких размеров
перемножать нельзя");
}
}
// операция перемножения матрицы на число
static public Matrix operator *(Matrix m, double d)
{
// создание матрицы-результата
int rows = m.Rows, cols = m.Cols;
Matrix newM = new Matrix(rows, cols);
// размеры матриц должны совпадать
if (rows1 != rows2 || cols1 != cols2)
throw new Exception ("Матрицы таких размеров
складывать нельзя");
Matrix newM = new Matrix(rows1, cols1);
for (int i = 0; i < rows1; i++)
for (int j = 0; j < cols1; j++)
newM[j, i] = m1[i, j] + m2[i,j];
return newM;
}
// метод, перегружающий операцию траспонирование матрицы
static public Matrix operator !(Matrix m)
{
int rows = m.Rows, cols = m.Cols;
Matrix newM = new Matrix(cols, rows);
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
newM[j, i] = m[i, j];
return newM;
}
// операция перемножения двух матриц
static public Matrix operator *(Matrix m1, Matrix m2)
{
int rows1 = m1.Rows, cols1 = m1.Cols,
rows2 = m2.Rows, cols2=m2.Cols;
if (cols1 == rows2)
{
// создание матрицы-результата
Matrix newM = new Matrix(rows1, cols2);
// заполнение матрицы-результата
for (int i = 0; i < rows1; i++)
for (int j = 0; j < cols2; j++)
for (int k = 0; k < cols1; k++)
newM[i, j] += m1[i, k] * m2[k, j];
return newM;
}
else
{
// количество столбцов первой матрицы должно
// быть равно количеству строк второй матрицы
throw new Exception ("Матрицы таких размеров
перемножать нельзя");
}
}
// операция перемножения матрицы на число
static public Matrix operator *(Matrix m, double d)
{
// создание матрицы-результата
int rows = m.Rows, cols = m.Cols;
Matrix newM = new Matrix(rows, cols);
87
Страницы
- « первая
- ‹ предыдущая
- …
- 85
- 86
- 87
- 88
- 89
- …
- следующая ›
- последняя »
