Проблема при умножении транспонированной матрицы на другую - C#
Формулировка задачи:
В чем может заключаться эта трабла, при умножении транспонированной матрицы на другую (4,5 на 5,4):
Уже извелся весь, не понимаю в чем проблема...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Объявление массивов
double[,] A = new double[5, 4];
double[,] B = new double[5, 4];
double[,] C = new double[5, 4];
string s;
// ввод матрицы А
for (int i=0; i<5; i++)
{
Console.WriteLine ("Введите A[{0}] строку", i);
s = Console.ReadLine();
string [] ts = s.Split(' ');
}
for (int j=0; j<5; j++)
{
Console.WriteLine ("Введите B[{0}] строку", j);
s = Console.ReadLine();
string[] ts = s.Split(' ');
}
// (A+B)^T*(B-A)
double[,] SAB = new double[5, 4]; // сумма матриц A и B
double[,] TAB = new double[4, 5]; // транспонирование
double[,] DBA = new double[5, 4]; // разность B и A
double[,] PTD = new double[4, 5]; // произведение TAB и DBA
// SAB
for (int i = 0; i < 5; i++)
for (int j = 0; j < 4; j++)
SAB[i, j] = A[i, j] + B[i, j];
// TAB
for (int i = 0; i < 4; i++)
for (int j = 0; j < 5; j++)
TAB[i, j] = SAB[j, i];
// DBA
for (int i = 0; i < 5; i++)
for (int j = 0; j < 4; j++)
DBA[i, j] = B[i, j] - A[i, j];
// PTD=TAB*DBA
for (int i = 0; i < 4; i++)
for (int j = 0; j < 5; j++)
{
PTD[i, j] = 0;
for (int k = 0; k < 5; k++)
PTD[i, j] += TAB[i, k] * DBA[k, j];
}
Console.WriteLine("C=" + PTD.ToString());
Console.ReadKey();
}
}
}Решение задачи: «Проблема при умножении транспонированной матрицы на другую»
textual
Листинг программы
for (int i = 0; i < TAB.GetLength(0);i++)
{
for (int j = 0; j < DBA.GetLength(1);j++)
{
for (int k = 0; k < TAB.GetLength(1);k++)
{
PTD[i, j] += TAB[i, k] * DBA[k, i];
}
}
}