Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.139.72.78] |
|
Сообщ.
#1
,
|
|
|
А как численно решаются однородные СЛАУ, когда есть одно ненулевое решение?
|
Сообщ.
#2
,
|
|
|
Я правильно понимаю, что хочется к имеющемуся x1: A*x1 = 0 найти все остальные x2,...,xk : L=Span<x1,...,xk> и A*L=0, A*(L⟂\{0})≠0 ?
|
Сообщ.
#3
,
|
|
|
Наколько помню, чтобы найти все решения надо найти так называемое нулевое пространство (или оно как-то по-другому, но похоже, называется). Это набор линейно независимых (обычно ищутся даже ортогональные) векторов, при умножении матрицы на которые получается нулевой вектор. Соответствующий алгоритм существует. Пространство натянутое на эти вектора и составляет все решения однородной системы. Если требуемых векторов нет, тогда однородная система имеет единственное, тривиальное решение.
Для существования нетривиальных решений необходимо, чтобы ранг матрицы был меньше числа столбцов (числа переменных). Если не ошибаюсь, нулевое пространство можно найти, например, методом ортогонализации. Добавлено В библиотеке питона sympy класс матрицы имеет метод nullspace, вычисляющий список этих векторов |
Сообщ.
#4
,
|
|
|
Цитата amk @ Весьма сомнительное утверждение. Ибо:Если не ошибаюсь, нулевое пространство можно найти, например, методом ортогонализации. 1.Если матрица A такова: 0 0 0 0 0 ... 0 * * * * ... 0 * * * * ... ... * - нечто 2.Нетривиальное=ненулевое решение известно и равно x1 = (1,0,0,...) 3.Остальные найти - сведение проблемы к n-1-мерному случаю, а там ничегошеньки не известно. Обломс. |
Сообщ.
#5
,
|
|
|
Цитата Славян @ Я правильно понимаю, что хочется к имеющемуся x1: A*x1 = 0 найти все остальные x2,...,xk : L=Span<x1,...,xk> и A*L=0, A*(L⟂\{0})≠0 ? Нет. Имеется ввиду однородная СЛАУ, ранг матрицы которой меньше на единицу порядка самой матрицы. Т.е. помимо нулевого решения есть одно линейно независимое ненулевое, которое можно доумножать на любой коэффициент и получать бесконечное количество решений. |
Сообщ.
#6
,
|
|
|
Цитата Славян @ Ты прав. Но только утверждение это не сомнительное - неверное. Методом ортогонализации можно найти не само нулевое пространство, а ортогональное к нему. Хотя возможно проще не заниматься сразу ортогонализацией, а сперва привести матрицу к каноническому лестничному виду. Весьма сомнительное утверждение. Ибо: |
Сообщ.
#7
,
|
|
|
Цитата Суровый @ Тьфу! Богатый русский язык!!! Под вашим "есть одно" я понял, что "уже найдено=задано одно", а надо было "существует, но ещё не найдено то одно". Нет. Имеется ввиду однородная СЛАУ, ранг матрицы которой меньше на единицу порядка самой матрицы. Т.е. помимо нулевого решения есть одно линейно независимое ненулевое, которое можно доумножать на любой коэффициент и получать бесконечное количество решений. |
Сообщ.
#8
,
|
|
|
Быть может можно тяжёлым методом как amk предложил:
1. Цитата amk @ A =сперва привести матрицу к каноническому лестничному виду. 1 2 3 0 2 2 0 0 0 Опосля создаёте из неё этакую: ~A: 1 0 0 ... 0 a 0 1 0 ... 0 b ... 0 0 0 ... 1 z 0 0 0 ... 0 0 Правый "мусорный" столбец даст почти искомый собственный вектор: x1=(-a,-b,...,-z,1); A*x1 = 0. Ну и, небось, надо обратно прошагать. В итоге, O(N3), дороговато. |
Сообщ.
#9
,
|
|
|
В общем уже не надо. Решил другим путем пойти, и не связываться с однородными СЛАУ.
|
Сообщ.
#10
,
|
|
|
Цитата Суровый @ Хор.В общем уже не надо. Цитата Славян @ Анализ показал, что не надо:небось, надо обратно прошагать. Если матрица A приводится к "красивому" виду B так: A = T1*....*Ts*B, где B*x = 0, то и A*x = 0. Так, при исходной A= 0 2 2 1 2 3 0 1 1 1.привели её к лесенке: 1 2 3 0 2 2 0 0 0 2.привели к красоте B=: 1 0 1 0 1 1 0 0 0 3.нашли собственный x=(-1,-1,1); B*x = 0 И ужо: A*x = 0 тоже. |