Я спрашиваю об этом, потому что моя программа имеет две функции для умножения матриц, они умножают только матрицы 4x4 и 4x1. Заголовки:
double** mult4x1(double **m1, double **m2);
double** mult4x4(double **m1, double **m2);
Они делают m1 * m2 и возвращают его в ** double, ниже - фрагмент умножения 4x4.
double** mult4x4(double **m1, double **m2){
double** result = (double**) malloc(sizeof(double)*4);
for (int i = 0; i < 4; i++) {
result[i] = (double*) malloc(sizeof(double)*4);
}
...multiply...
return result;
}
Разница между mult4x1 и mult4x4 заключается только в индексах, используемых внутри них.
У меня эти 3 матрицы:
double m1[4][4] = {
{2, 3, 5, 6},
{9, 8, 1, 7},
{5, 4, 3, 1},
{7, 6, 1, 2}
};
double m2[4][4] = {
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}
};
double m3[4][1] = {
{2},
{3},
{3},
{1}
};
Пытаясь умножить эти матрицы, возникает ошибка.
double** test = mult4x4(m1, m2);
double** test2 = mult4x1(identity4x4(), m3);
//identity4x4() creates a 4x4 identity matrix - double** identity4x4();
Урожайность:
Ошибка: невозможно преобразовать
double (*)[4]' to
double * 'для аргумента1' to
double * mult4x4 (double *, double *)'Ошибка: невозможно преобразовать
double (*)[1]' to
double * 'для аргумента2' to
double * mult4x1 (double *, double *)'
Не двойной [] [] должен быть равен ** double? Массив массивов двойных. Любые разъяснения, неправильные представления и ошибки приветствуются.