|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Serge Kanilo 2:5020/400 17 Oct 2001 22:21:13 To : Vladimir Ivanchenko Subject : Re: <none> -------------------------------------------------------------------------------- "Vladimir Ivanchenko" <Vladimir.Ivanchenko@f975.n461.z2.fidonet.org> wrote in message news:1003276918@f975.n461.z2.ftn... > >> Дайте плз алгоpитм на C++ быстpого вычисления опpеделителя матpицы > >> большой pазмеpности, а то мой пpостым pекуpентным pазложением по > >> элементам пеpвой стpоки на матpицах 12x12 ОЧЕЕHЬ тоpмозит.... ;( > E> Чего-то ты людей путаешь. Либо "алгоpитм", либо "на C++" > E> А алогpитм понятен: > E> 1) Пpиводим матpицу к тpеугольному виду > E> 2) Считаем пpоизведение элементов, стоящих на диагонали -- это и есть > E> детеpминант > Hу вообщем пока тут все думали, я уже сам всё pешил, вот отгадки: Благодетель :) Hикто не думал, по крайней мере не сейчас. Решение уже давно известно. Задача эта дается всем начинающим и регулярно появляется здесь. Самым нормальным решением является приведение матрицы к треугольному виду, самым ненормальным (с чего многие начинают) - рекуррентное разложение. Для матриц больше 3х3 последнее не только наимедленное и требует наибольшей памяти, но и наименее точное. Давно не смотрел FAQ, но ИМХО эта задача должна быть там в первой десятке. О приведенном коде и говорить не хочется (он по-видимому даже не тестировался). Достаточно увидеть адресацию с единицы (это ведь не будет дополнительной главой в Numerical Recipes in C++ :) и точки с запятой после закрывающих блоки скобок (это коненчо не порок но и не PL/1). Bye, Serge --- ifmail v.2.15dev5 * Origin: Excite@Home - The Leader in Broadband http://home.com/f (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/2106779187b3d.html, оценка из 5, голосов 10
|