Я знаю, как найти их в 1×1, 2×2 и 3×3, но я хочу создать программу, которая позволит мне вводить размеры моей матрицы, а затем вводить числа, входящие в матрицу. После ввода чисел, я хочу, чтобы он дал определитель (если смог получить один) и обратную матрицу, но я не знаю, как обойти часть размеров. Какой хороший способ начать с этого? Какие заголовки я должен использовать? Я работаю в Linux, поэтому у меня нет некоторых заголовков, как в Windows, если это помогает. 🙂
Начните с выбора книги по линейной алгебре. Тот, который Гилберт Странг. Это читается как хорошая книга рассказов. Пройдите декомпозицию LU и далее в собственные значения и собственные векторы. Где-то по пути вы бы нашли ответ на оба ваших вопроса.
Простой способ сделать это — использовать такую библиотеку, как собственный.
Если вы действительно хотите сделать это самостоятельно, вы должны
Очевидно, что 2. и 3. зависят от вашего выбора 1., и найти хорошее представление нетривиально и зависит от вашего приложения, например, насколько большой будет ваша матрица или она будет разреженной или плотной.
Если вы не заботитесь об эффективности или просто предполагаете, что ваша матрица мала, то вы можете представить свою матрицу в виде одномерного вектора. Например, у вас есть матрица 4х4, вы можете выделить вектор длиной 16.
Если я правильно понял ваш вопрос, вы фактически спрашивали о том, как сделать это динамически (во время выполнения). Используя массивы, это выглядит примерно так:
double* yourMatrix
yourMatrix = new double[columnCount * rowCount];
Это динамически распределяет пространство для columnCount * rowCount
double
s, и теперь вы можете получить доступ к этой памяти, как статический массив. Когда вы закончите, вы должны delete[] yourMatrix
предотвратить утечки памяти.
Если вы знаете, как рассчитать определитель / обратный коэффициент на бумаге, вы сможете перейти отсюда.