- 行単位の編集機能、ヒストリー、タブによる補間
- 名前の大文字、小文字は区別する。
- clear 変数名 あるいは clear
who とすると使用されている変数名を表示する
whos とすると使用されている変数名を表示する
- 変数名 とすると、``変数名= 変数の値'' と表示される。
[変数名] とすると、``ans = 変数の値'' と表示される。
(ans=変数名 と同値ということ?)
- 関数呼び出し or 変数 = 関数呼び出し
前者の場合 ans という変数に結果が入る。
- 行末に ; をつけると結果は表示されない。
- Octave は互換システム
- 横ベクトル は [1 2 3] で、縦ベクトル
は [1; 2; 3]
で表す。
- 行列
は
[1 2 3; 4 5 6; 7 8 9]
と表わす。
- ones(m,n) で m 行 n 列の、すべての成分が 1 である行列
- zeros(m,n) で m 行 n 列の、すべての成分が 0 である行列
- eye(n,n) で n 次の単位行列1
- hilb(n), invhilb(n) はそれぞれ 次の Hilbert 行列,
次の Hilbert 行列の逆行列
- hadamard(n) は n 次のHadamard 行列 (Octave にはない)。
- rand(m,n) で一様乱数行列、 randn(m,n) で正規乱数行列
- sylvester_matrix(n)
- vander(n)
- toeplitz(v,n)
- 2:5 は [2 3 4 5], 0:0.2:1 は [0.0 0.2 0.4 0.6 0.8 1.0]
- ベクトルの成分は、ベクトルの変数名(インデックス)
- +, -, *, / は普通の意味の四則 (数、ベクトル、式)
- A' は行列またはベクトル A のエルミート共役を表す。
単なる転置は A.' で表す。
- 縦ベクトル , の内積は
x' * y
となる。
- 九九の表を作る (1:9)'*(1:9)
- det(正方行列) は行列式
- trace()
- rank(a, tol)
- kron(行列,行列) は Kronecker 積
- 特性多項式
poly(行列)
- 多項式の積
conv(係数ベクトル, 係数ベクトル)
- inv(行列) は逆行列 (でも滅多なことでは使わないこと!)
- 行列については
B / A は
,
A \ B は
を表す。
連立次方程式
の解
は A \ b で
計算できる。
- LU 分解するには lu()
[L,U]=lu(A)
y=L\b
x=U\y
あるいはピボットつき LU 分解は
[L,U,P]=lu(A);
でできる ( となる2 , , が求められる)。
LU 分解に引き続き を解くには
[L,U,P]=lu(A);
y=L\(P*b);
x=U\y
- Cholesky 分解をするには chol()
u=chol(A)
l=u'
とすると A=l u が成り立つ。
- hess(), shur(), svd()
- eig(正方行列) は固有値,
[v,lambda]=eig(正方行列) は固有ベクトル、固有値
A=[1 2 3;4 5 6;8 5 2];
[v,lambda]=eig(A);
inv(v) * A * v
- 行列変数(行始まり:行終り,列始まり:列終り) で部分行列
- 行列の名前(:,j) とすると第 j 列ベクトル、
行列の名前(i,:) とすると第 i 行ベクトル、
- 行列を1次元ベクトル化するには
v=A(:)
- 1次元ベクトルを 2 次元化するには
A=zeros(m,n);
A(:)=v;
のようにする。Octave には reshape() という関数があり、
A=reshape(v,m,n);
のように使える。
- diag(ベクトル) は対角行列 (対角成分の作るベクトルを指定), 例
えば diag([1 2 3]) は
を表す。diag([1 2], 1) は
を表わす。
- triu(行列) は上三角部分
- tril(行列) は下三角部分
- [A B] とか [A, B] は並べて作る (それぞれ横、縦)。
- cond() は条件数,
rcond() は LINPACK の条件数 (正確には条件数の粗い評価).
(Octave には rcond() はない。)
- norm(v,p), norm(v,inf)
- norm(x) は norm(x,2) に等しい。
- norm(x,'fro') は Frobenius ノルム。
- lookfor は Octave にはない。
- roots(係数を表すベクトル) で多項式の根
- sum(ベクトル) で成分の和、prod(ベクトル) で成分の積、
mean(ベクトル) で成分の平均値、median(ベクトル) で中央値、
max(ベクトル) で成分の最大値、min(ベクトル) で成分の最小値、
var(ベクトル) で分散 (ただし要素数 ÷ (n-1) で計算するやつ)、
cov(ベクトル) で分散 (ただし要素数 ÷ (n-1) で計算するやつ)、
std(ベクトル) で標準偏差 (分散の正の平方根)、
length(ベクトル) でベクトルとしての次元 (列としての長さ)、
- いわゆる特殊関数も揃っている。
- plot(ベクトル), closeplot
- 制御構文は
while 条件式
文1
文2
...
文n
end
|
if 条件式
文1
..
文n
else
文'1
...
文'n
end
|
if 条件式1
文
elseif 条件式2
文
end
|
- for 変数=初期値:終了値 または for 変数=初期値:増分:終了値
- break はループを抜け出す
- 「かつ」は &, 「または」 は |, 「等しくない」は
~= または != で表わす。
つまり否定は ~ または ! ということだろうな。
- キーボード入力
変数名 = input('何か入力して下さい')
★Octave for FreeBSD は日本語が入力できない。
- pause または pause(秒数)
- 演算子の前に . をつけると成分ごとという意味?
c=[1 2 3] に対して c*c は型がおかしいから計算できない。
c .* c とすると [1 4 9]
- 変数名=値
ベクトルの場合は
[変数名1,変数名2]=値,
[変数名1 変数名2]=値
- 1変数関数のグラフを描くには、ベクトルを2本用意する
% y=x^2 のグラフ
x=0:0.1:10;
y=x.^2;
plot(x,y)
% y=sin(x) のグラフ
x=0:0.1:10;
y=sin(x);
plot(x,y)
- gset term postscript; gset output "foo.ps"; replot
- contour(z,等高線のレベル数,x,y)
n=10; x=(-1:1/n:1)'; y=(-1:1/n:1); z=x*y; contour(z,10,x,y)
- mesh(x,y,z) は3次元グラフ
- i, I, j, J は虚数単位、pi は円周率、
e は自然対数の底 (Napier の数)、
inf は無限大、eps は計算機イプシロン
- は 3+5i で表せる。5 と i の間に空白を置いては
いけない。
- real(), imag(), conj(), arg(),
angle() などが使える。
- eval(式) は式の評価
t='1/(i+j-1)'
for i=1:n
for j=1:n
a(i,j)=eval(t);
end
end
- 画面出力の精度は
format long |
|
format short |
|
format long e |
長い桁数、指数形式 |
format short e |
短い桁数、指数形式 |
format free |
自由形式 |
format none |
自由形式 |
- quad('関数名',初期値,終端値)
quad8() は Octave にはない。
- save -ascii ファイル名 変数名1 変数名2,
save -binary ファイル名 変数名1 変数名2,
save -mat-binary ファイル名 変数名1 変数名2