Мне нужно было нарисовать несколько FormData «на лету» и объектный способ работал хорошо
var forms = {}
Тогда в моих циклах мне нужно было создать данные формы, которые я использовал
forms["formdata"+counter]=new FormData();
forms["formdata"+counter].append(var_name, var_value);
(полный) SVD приближает вас. Это дает для матрицы 3x3 A
A = U*S*V'
, где все матрицы 3x3, S диагональна, а U и V ортогональны. К сожалению, U и V не могут быть вращениями, то есть они могут иметь определитель -1.
Один из возможных способов - вычислить определитель U и, если он равен -1, заменить его на
U~ = U * diag(-1,1,1) (ie negate the first col of U)
и заменить S на
S~ = S*diag( -1, 1, 1) (ie negate the top left elt of S)
[117 ] И затем аналогично для V (хотя сейчас, из-за транспонирования вы хотите отрицать первый ряд V)