.nullspace () от просто не дает мне правильного решения - PullRequest
0 голосов
/ 22 апреля 2020

Я начал работать над этой проблемой , которая пытается найти все матрицы, которые коммутируют с заданной. Мне удалось уменьшить его, чтобы решить уравнение типа Ax = 0.

Решение этого последнего уравнения должно быть простым с использованием A.nullspace, однако я обнаружил, что для некоторых матриц решатель дает мне матрица, которая не решает уравнение. Например, если

 A = Matrix([
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0,     0,     0,     0, -0.16,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0,     0,     0, -0.24,  0.32,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0,     0, -0.24,  0.48, -0.16,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0, -0.16,  0.48, -0.24,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0,  0.32, -0.24,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,    0, -0.16,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0, -0.16, -0.32,  0.0,   0.0,   0.0,   0.0,   0.0, 0.16],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0, -0.24,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,  0.16,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0, -0.24,  0.16, -0.16,   0.0,  0.0,   0.0,   0.0,  0.16,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0, -0.16,  0.16, -0.24,   0.0,   0.0,  0.0,   0.0,  0.16,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0, -0.24,   0.0,   0.0,   0.0,  0.0,  0.16,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0, -0.32, -0.16,   0.0,   0.0,   0.0,   0.0, 0.16,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.16, -0.48,   0.0,   0.0,   0.0,   0.0,   0.0,  0.24,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.24, -0.16,   0.0,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.24,   0.0, -0.16,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.16,   0.0, -0.24,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0, -0.16, -0.24,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0, -0.48, -0.16,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.16, -0.48,   0.0,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.24, -0.16,   0.0,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.24,   0.0, -0.16,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,     0,  0.24,   0.0,   0.0,   0.0,   0.0, -0.16,   0.0, -0.24,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,     0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0, -0.16, -0.24,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0,    0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0, -0.48, -0.16,   0.0,   0.0,   0.0,   0.0,  0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,     0, 0.16,   0.0,   0.0,   0.0,   0.0, -0.16, -0.32,   0.0,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0,  0.16,  0.0,   0.0,   0.0,   0.0, -0.24,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,  0.16,   0.0,  0.0,   0.0,   0.0, -0.24,  0.16, -0.16,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,  0.16,   0.0,   0.0,  0.0,   0.0, -0.16,  0.16, -0.24,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,  0.16,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0, -0.24,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[0.16,   0.0,   0.0,   0.0,   0.0,  0.0, -0.32, -0.16,   0.0,   0.0,   0.0,   0.0,  0.16,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0,     0, -0.16,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0,     0, -0.24,  0.32,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,     0, -0.24,  0.48, -0.16,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0, -0.16,  0.48, -0.24,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0,  0.32, -0.24,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0],
[   0, -0.16,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,   0.0,  0.0,   0.0,   0.0,   0.0,   0.0,  0.0]])

, тогда A.nullspace () должен дать мне основу для векторов v, такую ​​что Av = 0. Однако вывод, который я получаю, равен

[Matrix([
 [5.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [4.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [3.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [2.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  1],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0]]), Matrix([
 [4.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [1.0],
 [3.0],
 [  0],
 [  0],
 [  0],
 [1.0],
 [  0],
 [2.0],
 [  0],
 [  0],
 [1.0],
 [  0],
 [  0],
 [1.0],
 [  0],
 [1.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  1],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0]]), Matrix([
 [1.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [4.0],
 [  0],
 [1.0],
 [  0],
 [  0],
 [  0],
 [3.0],
 [  0],
 [  0],
 [1.0],
 [  0],
 [  0],
 [2.0],
 [  0],
 [  0],
 [  0],
 [1.0],
 [  0],
 [1.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  1],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0]]), Matrix([
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [5.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [4.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [3.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [2.0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  1],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0],
 [  0]]), Matrix([
 [-4.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-3.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-2.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-1.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   1],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0]]), Matrix([
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-4.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-3.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-2.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [-1.0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   0],
 [   1]])]

. если

v = A.nullspace()

, то v [0] является одним конкретным решением. Но это не так.

Я знаю, что матрица, с которой начинается ИИ, "большая" и имеет слишком много нулей, но я надеялась, что она все еще будет работать. Кто-нибудь может сказать мне, если я что-то не так делаю?

Спасибо.

...