как решить Ax=b, если x'x=1 ???

muto

не могу понять в статье, как решается уравнение:
b=A*x
b,A - известные, size(A)=6x6, size(b)=size(q)=size6x1
переменные такие:
x=[q1 q2 q3 w1 w2 w3];
Проблема: rang(A)=5, - но фишка в том, что q1*q1+q2*q2+q3*q3 = 1
как это использовать, и как решить систему (хотя бы на практике, а не в общем виде) ?
Вдохновляет, что в статье написано "This is a system of equations that is linear in the normalized quaternion elements q and auxiliary vector w".

DarkDimazzz

Если ранг матрицы меньше количества уравнений, то либо одно уравнение является следствием остальных, либо система несовместна - это определяется видом b. Т. о., как один из вариантов, выкидываешь одно уравнение (так, чтобы у полученной системы ранг был равен пяти) и обычным образом решаешь систему пяти уравнений, считая один из элементов x (пусть, для определенности, это будет q1) произвольной константой. Затем подставляешь q2 и q3 (зависящие от q1) в нормировку и получаешь квадратное уравнение для q1 - вот тебе и ответ.

agroprom

так q - это что?
я об этом:
size(b)=size(q)=size6x1

muto

q - первые три переменные в х
size(q)=3x1
size(w)=3x1
size(x)=6x1

muto

A(1:5,2:end)*x=b-A(1:5,1)*const
x=[q2 q3 w1 w2 w3];
Затем
q1=+-sqrt(1-q2*q2-q3*q3) ? я правильно понял?
но ведь abs(q2 abs(q3) может быть >> 1,
Надо решать СЛАУ с ограничениями q2,q3 >-1; q2,q3<1 ?

z731a

находишь y=(y1,y2,y3,y4,y5,y6)≠0 и z=(z1,z2,z3,z4,z5,z6) из уравнений Ay=0, Az=b.
x=cy+z, где c - решение уравнения с*с*|y'|*|y'| + 2*c*(y',z') + |z'|*|z'| = 1, где y'=(y1,y2,y3 z'=(z1,z2,z3).
если b=0, то z=0

DarkDimazzz

Не совсем так. После решения системы из 5 уравнений ты получишь не конкретные числа, а линейные функции q1 (это та константа, которая у тебя написана в правой части которые затем надо будет подставить в нормировку. Полученное уравнение даст тебе значение этой константы, которое, в свою очередь, надо будет подставить в ранее полученные выражения для q2, q3, w1, w2, w3.

muto

спасибо!
Оставить комментарий
Имя или ник:
Комментарий: