Цитата:
Сдаётся мне, что не правильно ваша программа написана. Поскольку у вас алгоритм Мюллера, то на одну и ту же константу надо делить три определителя
Безусловно, я считаю три определителя, вернее один, но в трех разных точках, метод Мюллера, он же метода парабол, а парабола определяется значениями в трех точках. Этот метод чуть ли не единственный, который позволяет находить комплексные корни, на Фортране библиотека именно его реализовала. В других своих задачах я проверял этот метод и в его правильности сомнений нет. Конечно в данном случае комплексные и корни и значение самого определителя, но это ничему не противоречит.
Цитата:
И да, было бы здорово увидеть вашу программу. А то мы о каких-то воздушных материях разговариваем. Если же программа — секрет, то попытайтесь оценить значение определителя через максимальный по модулю элемент матрицы. Его надо возвести в степень размера матрицы. Это число должно быть меньше realmax, который, если верить Гуглу, равен 1.797693134862316e+308. Вычисляете из этого числа корень степени размера матрицы и сравниваете с максимальным элементом. Если он того же порядка, то вероятно выйдет переполнение при вычислении определителя. Матрицу можно поделить на этот максимальный элемент, тогда результат точно будет не больше единицы.
Дело не в секретности, вернее не сколько в ней, сколько в большой сложности кода. Если оставить толкьо саму матрицу и код вызова ее определителя, то останется набор непонятных подфункций которые прийдется обьяснять, сути вопроса это все равно не изменит. Задача, мне кажется, без кода и так понятна: есть матрица, с комплексным аргументов, нужно найти корни ее определителя. Решается методом парабол (Мюллера). Хотя в любом методе нужно считать значение функци в каких-то точках. Относительно максимального числа Вы правы, Гугл не врет, ну вот в моей матрице максимальные элемент порядка 1000, а если проделать процедуру, описанную вами, для сравнения, то получается число порядка единицы. Хотя я и так выше написал, что проблема в большой величине определителя. При делении на максимальный элемент выдало ожидаемый результат, что корнем является начальное приближение. Я уже пробовал делить на меньшие значения матрицу и получал такой же ответ, при 250 где-то происходит переход на очень большие значения определителя.
Цитата:
Если все элементы матрицы умножить на корень степени матрицы из значения определителя той обратной матрицы, на которую вы домножаете, то должно получиться то же самое. Только со знаком под корнем надо аккуратно. Можно умножить только первый столбец матрицы на значение определителя обратной матрицы. Тоже должно получиться то же самое.
К сожалению все не так просто. Я уже писал, что вычислить напрямую ни значения определителя, ни значения обратной матрицы я не могу - я выхожу за рамки матлаба. Если б я смог вычислить значение определителя обратной матрицы, тогда вопроса бы не было потому что вопрос заключается в избавлении от умножения матриц, которым я пользуюсь, чтоб посчитать определитель. Я заменяю отношение двух определителей на определитель произведение исходной матрицы и обратной в начальном приближении.
Но все равно спасибо Вам за советы. Я буду рад выслушать еще, так как у меня тоже пока идей не появилось, а вопрос еще актуален.