Хорошо, я пытаюсь создать функцию кросс-произведения в TI-NSpire, которая приняла n-1 векторов размерности n и взяла определитель матрицы следующим образом:TI-NSpire динамически создает переменные для векторного кросс-продукта
[[u_x,u_y,u_z,u_w],
[a_1,a_2,a_3,a_4],
[b_1,b_2,b_3,b_4],
[c_1,c_2,c_3,c_4]]
Верхний ряд - это единичные векторы, направленные в направлении осей. К сожалению, проблема заключается в том, что, если я не дам неопределенным переменным калькулятора, поиск детерминанта этой матрицы приведет к ошибке, так как либо u_x, u_y ... и т. Д. Являются векторами, а матрица не является надлежащей матрицей, или векторы значения, а определитель приводит к одному значению, а не вектору. Однако я могу оставить неопределенные единичные векторы и выполнить определитель, а затем определить переменные после выполнения детерминанта.
То, что у меня осталось, ограничивает себя максимальным размером вектора (не необоснованным, но я бы предпочел не использовать это) или динамически создавать список n неопределенных локальных переменных, которые я могу установить на единичные векторы после вычисление завершено.
Мой вопрос: как выполнить второй вариант, если это вообще возможно?
Редактировать для кода: (Примечание: в настоящее время используется список переменных, о котором я упоминал. К сожалению, проблема с этим связана с ошибками «5 → {a, b, c, d} [1,2]» .)
Define LibPub cross_p(mat)=
Func
:Local i_,n_,unit_v,unit_list
:Local dim_v,num_v,len_v,new_v
:Local det_v
:[a,b,c,d,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]→unit_list
:dim(mat)→dim_v
:dim_v[1]→num_v
:dim_v[2]→len_v
:newMat(len_v,len_v)→unit_v
:For n_,1,len_v
: 1→unit_v[n_,n_]
:EndFor
:If num_v=len_v-1 Then
: newMat(len_v,len_v)→new_v
: subMat(unit_list,1,1,1,len_v)→new_v[1]
: For i_,1,num_v
: mat[i_]→new_v[i_+1]
: EndFor
: det(new_v)→det_v
: For i_,1,len_v
: unit_v[i_]→unit_list[1,i_]
: EndFor
: Return det_v
:EndIf
:EndFunc
Можете ли вы показать полный пример? Стандартный кросс-продукт определяется только для векторов размерности 3 - существует ли альтернативное название для концепции, которую вы пытаетесь реализовать? – soegaard
Если у вас есть четыре единичных вектора формы: i = {1,0,0,0} j = {0,1,0,0} k = {0,0,1,0} l = {0,0,0,1} И три вектора вида: а = {a1, a2, a3, a4} Ь = ... с = ... Тогда вектор, перпендикулярный все три найден, беря detminant этой матрицы: [[I, J, K, L], [а1, а2, а3, а4], [b1, b2, b3, b4], [c1 , c2, c3, c4]] – CopaceticMan
Поместить все мой код в OP – CopaceticMan