Відразу хочу вибачитися, якщо будуть якісь неточності в термінах, тому що я не математик.
Перейду до справи.
1. Завдання в загальному вигляді.
Є кілька матриць, причому не перевищує. Кількість матриць теж не перевершує.
Рядки цих матриць - елементи векторного простору. Відповідно, кожна матриця породжує деякий підпростір (якщо все m рядків матриці лінійно незалежні, звичайно).
Завдання максимум: знайти перетин (базис) векторних просторів, породжуваних матрицями.
Завдання мінімум: знайти розмірність цього перетину. Ще точніше, перевірити дорівнює чи вона нулю.
2. Окремий випадок
Є три матриці, причому на самому ділі вони все виходять через елементарні перетворення матриць і три рядки виявляються нульовими. До речі тут додаткове питання. Чи вірно, що якщо хоча б одна матриця буде виявиться, а не, то припинення трьох підпросторів гарантовано буде ненульовим (за умови що залишилися дві матриці не виродилися)?
Отже, є ці три матриці. Завдання такі ж як в п.1.
Суть полягає в тому, що треба знайти якесь елегантне і зрозуміле рішення.
Як робив я.
Знаходив ядро для кожної матриці і перевіряв ці ядра на лінійну залежність. Якщо її немає, то підпростору не перетинаються (початок координат не береться до уваги), якщо вона є, то існує перетин. Для того щоб знайти перетин, потрібно скласти матрицю з векторів, що є ядрами вихідних матриці. Коли є перетин, така матриця вироджується і якщо знайти ядро вже для неї, то вийде як-раз перетин вихідних.
Проблема в тому, що при пошуку ядра у вихідній задачі мається на увазі перехід до іншої фізичної сутності. Плюс виникає питання вибору деякої вільної константи, де теж є свій підводний камінь.
Тому моє питання полягає більше в теоретичній можливості обмежитися маніпуляціями з вихідними матрицями, не переходячи до вирішення систем рівнянь, в яких число невідомих більше числа самих рівнянь.
Все як каже ewert
Взагалі сам питання програмування методу Гаусса особливо не варто, тому що все ж існують різні прикладні програмні пакети, типу того ж Матлаб, де є функції приведення матриць до ступінчастого вигляду.
Питання про швидкість теж не важливий. Матриці дійсно невеликі.
Вся проблема саме в знаходженні перетину векторних просторів.
Я дозволю собі трохи написати про те, чому я не хочу зв'язуватися з ядром (крім фізичного сенсу)
Припустимо є три матриці. І одна з них являє собою щось на зразок. При маленьких і виходить що простір являє собою площину, майже збігається з (якщо в матриці компоненти). Ядро значить будемо вектором, майже збігається з віссю, але все ж мають ненульові компоненти по іншим двом осях. І ось тоді якщо я невдало виберу вільну змінну. Припустимо компонента, тоді я ризикую просто вилетіти в величезні ступеня для компоненти.
В даному прикладі, звичайно, все це очевидно і легко обходиться, але коли компоненти матриць розраховуються по здоровенним формулами, складно передбачити таку поведінку. А тому мені потрібно в результаті написати програму, яка буде перебирати параметри начебто і і для кожного їх поєднання знаходити ядро, то це дійсно приносить незручності.
Як я вже сказав, знайти просто розмірність перетину підпросторів (перевірити дорівнює чи вона нулю) вже буде досить хорошим результатом для подальшої роботи.