адъюгат вероятно не тот, который вы на самом деле хотите.
Если вы хотите нормальное сопряженное (сопряженное транспонирование), то x'
выдаст его вам за x
. (Несопряженная транспонирование - x.'
, или transpose(x)
. conj(x)
дает комплексное сопряжение, а также работает с матрицами и векторами.)
Если вам на самом деле нужен адъюгат (он же классический сопряженный) , я не верю, что в Octave он встроен. Есть несколько способов рассчитать это. Если вы можете предполагать обратимость, то это просто det(x)*inv(x)
. Если нет, это немного сложнее. В целом, адъюгат является транспонированной матрицей кофактора. Матрица кофактора заменяет каждый элемент в исходной матрице своим кофактором (плюс или минус его минор, который является определителем исходной матрицы без этой строки и столбца. Правило плюс или минус одинаково для расширения определителя - если сумма строки и столбца четные, они положительные, если отрицательные, то нечетные).
Самый простой кодовый код, вероятно, заключается в использовании SVD (который является встроенным) - адъюгат является антигомоморфизмом с adj (xy) = adj (y) adj (x). SVD для x - это набор матриц u, s, v, где u * s * v '= x, s диагональ, u и v оба унитарны. adj (x) = adj (u * s * v ') = adj (v') adj (s) adj (u). Для обратимых матриц адъюгат - это просто определитель, умноженный на обратную. Для унитарных матриц это просто сопряженная транспонирование. adj (x) = det (v ') v adj (s) det (u) u' = det (v '* u) v adj (s) u'. Адъюгат диагональной матрицы s относительно легко вычислить - каждая запись вне диагонали равна нулю, и каждая запись в диагонали является произведением других.