以下の記述のほとんどは最初 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([1 2], 1) とすると、
が得られる (diag(ベクトル, 数) の数が正なら上に、
負なら下にずらす)。
一方、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())
桂田 祐史