Проблема при умножении транспонированной матрицы на другую - 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];
                    }
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы