以下の記述のほとんどは最初 Octave で実行して試したので (MATLAB では試していないものがある)、 MATLAB で動くかどうか保証しない。
[1,2,3; 4,5,6; 7,8,9]あるいは
[1,2,3 4,5,6 7,8,9]で入力できる。
x' * yで求まる。
[L,U]=lu(A); x=U\(L\b));でOK. 行交換ありの LU 分解 ( あるいは ) を用いる場合は
[L,U,P]=lu(A); x=U\(L\(P*b));で OK. あるいは置換を置換行列をかけることで実現するのは不経済なので、 次のような手段も用意されている。
[L,U,p]=lu(A,'vector'); x=U\(L\(b(p,:)));
u=chol(A) l=u'とすると A=l u が成り立つ。
A=[1 2 3;4 5 6;8 5 2]; [P,D]=eig(A); inv(P) * A * P norm(inv(P) * A * P-D)(つまり となることを確認している。)
A=zeros(m,n); A(:)=v;のように型の決まった行列に代入するか、 reshape() という関数を用いて
A=reshape(v,m,n);のようにする。
一方、diag(行列) とすると、 行列の対角線分を取り出したベクトルが得られる。 ゆえに、 diag(diag(行列)) とすると、 行列の対角線分を取り出した対角行列が得られる。
while |
while 条件式 文1 文2 ... 文n end |
for |
for i=1:n 文1 ... 文n end |
if |
if 条件式 文1 .. 文n else 文'1 ... 文'n end |
if, elseif |
if 条件式1 文 elseif 条件式2 文 end |
変数名 = input('何か入力して下さい')
% 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) |
n=200; x=-1:2/n:1; y=x; z=x'*y; contour(z) お手軽に等高線を描く contour(z,20) 20本の等高線を描く contour(x,y,z,20) x,yをちゃんと指定して、20本の等高線 |
[x,y]=meshgrid(-1:0.01:1, -1:0.01:1); z=x.*y; contour(x,y,z); |
contour(x,y,z,-1:0.1:1) 等高線のレベルを指定 contour(x,y,z,[0.5 0.5]) レベル 0 の等高線 |
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 | 短い桁数、指数形式 |
(準備中: disp(), fprintf())
桂田 祐史