| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newvect, vector, vect:: 長さ len のベクトルを生成する.
:: elements を要素とするベクトルを生成する.
ベクトル
自然数
リスト
要素の並び
vect は要素の並びからベクトルを生成する.
vector は newvect の別名である.
newvect は長さ len のベクトルを生成する. 第 2 引数がない場合,
各成分は 0 に初期化される. 第 2 引数がある場合,
インデックスの小さい成分から, リストの
各要素により初期化される. 各要素は, 先頭から順に
使われ, 足りない分は 0 が埋められる.
size() によって得られる.
[0] A=newvect(5);
[ 0 0 0 0 0 ]
[1] A=newvect(5,[1,2,3,4,[5,6]]);
[ 1 2 3 4 [5,6] ]
[2] A[0];
1
[3] A[4];
[5,6]
[4] size(A);
[5]
[5] length(A);
5
[6] vect(1,2,3,4,[5,6]);
[ 1 2 3 4 [5,6] ]
[7] def afo(V) { V[0] = x; }
[8] afo(A)$
[9] A;
[ x 2 3 4 [5,6] ]
newmat, matrix, size, ltov, vtol.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ltov:: リストをベクトルに変換する.
ベクトル
リスト
newvect(length(list), list) に等しい.
[3] A=[1,2,3]; [4] ltov(A); [ 1 2 3 ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
vtol:: ベクトルをリストに変換する.
リスト
ベクトル
[vect[0],...,vect[n-1]] なるリストに変換する.
newvect() で行う.
[3] A=newvect(3,[1,2,3]); [ 1 2 3 ] [4] vtol(A); [1,2,3]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newbytearray:: 長さ len の byte array を生成する.
byte array
自然数
リストまたは文字列
newvect と同様にして byte array を生成する.
similar to that of newvect.
[182] A=newbytearray(3); |00 00 00| [183] A=newbytearray(3,[1,2,3]); |01 02 03| [184] A=newbytearray(3,"abc"); |61 62 63| [185] A[0]; 97 [186] A[1]=123; 123 [187] A; |61 7b 63|
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newmat, matrix:: row 行 col 列の行列を生成する.
行列
自然数
任意
matrix は newmat の別名である.
size() で得られる.
M が行列のとき, M[I] により第 I 行をベクトルとして
取り出すことができる. このベクトルは, もとの行列と成分を共有しており,
いずれかの成分を書き換えれば, 他の対応する成分も書き換わることになる.
[0] A = newmat(3,3,[[1,1,1],[x,y],[x^2]]); [ 1 1 1 ] [ x y 0 ] [ x^2 0 0 ] [1] det(A); -y*x^2 [2] size(A); [3,3] [3] A[1]; [ x y 0 ] [4] A[1][3]; getarray : Out of range return to toplevel
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
mat, matr, matc:: 行ベクトルの並びから行列を生成する.
:: 列ベクトルの並びから行列を生成する.
行列
配列またはリスト
mat は matr の別名である.
[0] matr([1,2,3],[4,5,6],[7,8]); [ 1 2 3 ] [ 4 5 6 ] [ 7 8 0 ] [1] matc([1,2,3],[4,5,6],[7,8]); [ 1 4 7 ] [ 2 5 8 ] [ 3 6 0 ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
size:: [vect の長さ] または [mat の行数,mat の列数].
リスト
ベクトル
行列
length() で求めることもできる.
length()を, 有理式に現れる単項式の数は nmono() を用いる.
[0] A = newvect(4); [ 0 0 0 0 ] [1] size(A); [4] [2] length(A); 4 [3] B = newmat(2,3,[[1,2,3],[4,5,6]]); [ 1 2 3 ] [ 4 5 6 ] [4] size(B); [2,3]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
det, nd_det, invmat:: mat の行列式を求める.
:: mat の逆行列を求める.
det: 式, invmat: リスト
行列
素数
det および nd_det は行列 mat の行列式を求める.
invmat は行列 mat の逆行列を求める. 逆行列は [分子, 分母]
の形で返され, 分子が行列, 分子/分母 が逆行列となる.
nd_det は有理数または有限体上の多項式行列の行列式
計算専用である. アルゴリズムはやはり分数なしのガウス消去法だが,
データ構造および乗除算の工夫により, 一般に det より高速に
計算できる.
[91] A=newmat(5,5)$ [92] V=[x,y,z,u,v]; [x,y,z,u,v] [93] for(I=0;I<5;I++)for(J=0,B=A[I],W=V[I];J<5;J++)B[J]=W^J; [94] A; [ 1 x x^2 x^3 x^4 ] [ 1 y y^2 y^3 y^4 ] [ 1 z z^2 z^3 z^4 ] [ 1 u u^2 u^3 u^4 ] [ 1 v v^2 v^3 v^4 ] [95] fctr(det(A)); [[1,1],[u-v,1],[-z+v,1],[-z+u,1],[-y+u,1],[y-v,1],[-y+z,1],[-x+u,1], [-x+z,1],[-x+v,1],[-x+y,1]] [96] A = newmat(3,3)$ [97] for(I=0;I<3;I++)for(J=0,B=A[I],W=V[I];J<3;J++)B[J]=W^J; [98] A; [ 1 x x^2 ] [ 1 y y^2 ] [ 1 z z^2 ] [99] invmat(A); [[ -z*y^2+z^2*y z*x^2-z^2*x -y*x^2+y^2*x ] [ y^2-z^2 -x^2+z^2 x^2-y^2 ] [ -y+z x-z -x+y ],(-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y] [100] A*B[0]; [ (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y 0 0 ] [ 0 (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y 0 ] [ 0 0 (-y+z)*x^2+(y^2-z^2)*x-z*y^2+z^2*y ] [101] map(red,A*B[0]/B[1]); [ 1 0 0 ] [ 0 1 0 ] [ 0 0 1 ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
qsort:: 一次元配列 array をソートする.
array (入力と同じ; 要素のみ入れ替わる)
一次元配列
比較用関数
func(A,B)=1 の場合に A<B として, 順序が下の
ものから順に並べ換えられる.
[0] qsort(newvect(10,[1,4,6,7,3,2,9,6,0,-1]));
[ -1 0 1 2 3 4 6 6 7 9 ]
[1] def rev(A,B) { return A>B?-1:(A<B?1:0); }
[2] qsort(newvect(10,[1,4,6,7,3,2,9,6,0,-1]),rev);
[ 9 7 6 6 4 3 2 1 0 -1 ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
rowx, rowm, rowa, colx, colm, cola:: 第 i 行と第 j 行を交換する.
:: 第 i 行を c 倍する.
:: 第 i 行に第 i 行の c 倍を加える.
:: 第 i 行と第 j 行を交換する.
:: 第 i 行を c 倍する.
:: 第 i 行に第 i 行の c 倍を加える.
行列
整数
係数
[0] A=newmat(3,3,[[1,2,3],[4,5,6],[7,8,9]]); [ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ] [1] rowx(A,1,2)$ [2] A; [ 1 2 3 ] [ 7 8 9 ] [ 4 5 6 ] [3] rowm(A,2,x); [ 1 2 3 ] [ 7 8 9 ] [ 4*x 5*x 6*x ] [4] rowa(A,0,1,z); [ 7*z+1 8*z+2 9*z+3 ] [ 7 8 9 ] [ 4*x 5*x 6*x ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は11月 2, 2025にtexi2html 5.0を用いて生成されました。