[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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 ]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は12月 21, 2024にtexi2html 5.0を用いて生成されました。