Причина, по которой вы столкнулись с этой проблемой, связана с математическим делением матрицы деталей.
Матричное деление может быть выполнено путем взятия обратной матрицы, а затем умножения матрицы. В q это можно увидеть, выполнив эти операции напрямую.
q) enlist[2 2f] lsq (1 2f;3 4f)
-1 1
q) enlist[2 2f] mmu inv (1 2f;3 4f)
-1 1
Одним из ваших значений x
для lsfit
является строка 7.5 7.5
. При значении z
1f
этот вектор преобразуется в матрицу (1 1;7.5 7.5)
в операции xexp
. Эта матрица затем используется в операции lsq
.
Проблема возникает тогда, когда (1 1;7.5 7.5)
не является обратимым. Матрица обратима тогда и только тогда, когда определитель не равен нулю. Определитель для матрицы 2 x 2
равен AD - BC
. В вашем примере A = 1
, B = 1
, C = 7.5
и D = 7.5
. Таким образом, определитель равен нулю, матрица необратима, и выходной сигнал функции равен Onf
.
Чтобы решить эту проблему, вы должны убедиться, что два элемента в каждом ряду x
не идентичны.
Надеюсь, это поможет.