わかりました、TI-NSpire で外積関数を作成しようとしています。これは次元 n の n-1 ベクトルを取り、次のような行列の行列式を取ります。
[[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 個の未定義のローカル変数のリストを動的に作成することです。 .
私の質問は、可能であれば、2 番目のオプションをどのように実行しますか?
コードの編集:(注:これは現在、私が言及した変数のリストを使用しています。残念ながら、これの問題は「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