Матрица 4×4 задаётся кортежем из 4 кортежей по 4 целых числа в каждом. Написать функцию det4(r0, r1, r2, r3), вычисляющую точный определитель матрицы (r0, r1, r2, r3). Пользоваться itertools нельзя. Числа содержат не более 66666 десятичных знаков.

print(det4((5, -4, 4, -7), (1, -2, 6, 0), (3, -8, -6, -4), (-1, 2, -9, 3)))

Поскольку определитель 3×3 считается просто, я вручную сгенерировал список всех перестановок (0,1,2,3), не забывая про знак, и посчитал сумму в цикле. Рекурсивная функция, порождающая список перестановок, заняла три строки, основная функция — четыре.

702

При домашнем тестировании (но не в тексте решения!) может вылезти ограничение Python3.11+ на максимальный размер строкового представления числа.

Результат можно проверить так (хотя в нашем случае результат должен быть строго целым):

   1 >>> import numpy
   2 >>> R = (5, -4, 4, -7), (1, -2, 6, 0), (3, -8, -6, -4), (-1, 2, -9, 3)
   3 >>> numpy.linalg.det(R)
   4 701.9999999999998


CategoryHomework

LecturesCMC/PythonIntro2023/Homework_Det4x4 (последним исправлял пользователь FrBrGeorge 2023-10-04 16:12:28)