• 検索結果がありません。

第6回ベクトルと行列の計算 , いろいろ

N/A
N/A
Protected

Academic year: 2021

シェア "第6回ベクトルと行列の計算 , いろいろ"

Copied!
4
0
0

読み込み中.... (全文を見る)

全文

(1)

第6回 ベクトルと行列の計算

,

いろいろ

線形代数のパッケージ

線形代数に関係する作業を実行しやすくするパッケージがあります。with コ マンドを用いて、 with(linalg): と入力してください。

ベクトル の定義

ベクトルの成分を指定する方法、ベクトルのサイズを指定し、順に成分を指定 する、または、関数、手続きで指定する方法があります。

u:=vector(3,[0,2,3]);

vector([0,2,3]);

v:=vector(3, i->2^i/i);

ベクトルの計算

足し算、スカラー倍は通常のようにできます。内積( innerprod ) やノルム ( norm ), 外積( crossprod )の命令もあります。

evalm コマンド

行列のときに用いたのと同じ命令ですが、ベクトルに名前をつけ、その名前を 入力してもベクトルの成分などは表示されません。この場合に evalm を用 いると名前をつけられたベクトルの成分などが表示されます。

augmentコマンド

ベクトルとベクトル、ベクトルと行列をくっつけるときに用います。ベクトル は、単なる数(成分)のリストで、行ベクトルのように表示されて見えますが、

ベクトルを行列として扱うときには、列ベクトルとして扱うようになっていま

す。従って54列行列A5次のベクトルuに対して Ab := augment(A, b); と すると、55列の行列が得られることになります。

stackmatrix コマンド

この命令は、ベクトルを行ベクトルとして行列にする命令です。

col, row コマンド

行列から列および行ベクトルを抜きだしてベクトルを作る。

(2)

既に線形方程式つまり

Ax=b

の形のものからベクトルx を求めることは解説しました。

(1) Ab := augment(A, b) で拡大係数行列を作る.

(2) gausselim(Ab) (ガウスの消去法)で階段化する. この命令は同じ内容の rref(Ab) も 使えます.

(3) backsub(%) (後退代入法)で解を求めることができます.

この方法をもとに、AX =B の形の X を求めることも可能です。

ベクトルu がベクトルu1, u2, . . . , un の一次結合で表せるかどうかという問題は、

行列A= (u1, u2, . . . , un) を用いて

Ax=u

が解を持つかどうか、という問題になります。

ベクトル u1, u2, . . . , un が一次独立かどうかという問題は、

Ax= 0 (0ベクトル)

0 ベクトル以外の解を持つかどうかという問題になります。

練習

(1) ベクトルb = (1,2,3,4,5) が次のベクトルによって、生成される空間に属する かどうかを調べなさい。

(a) v1 = (5,4,3,2,1), v2 = (4,3,2,1,5), v3 = (3,2,1,5,4) (b) v1 = (2,3,4,5,6), v2 = (3,4,5,6,7)

(2) ベクトルb = (1,1,1,1,1) が次のベクトルによって、生成される空間に属する かどうかを調べなさい。

(a) v1 = (5,4,3,2,1), v2 = (1,2,3,4,5), v3 = (3,2,1,5,4)

(3)

(b) v1 = (2,3,4,5,6), v2 = (8,7,6,5,4), v3 = (1,0,1,0,1)

練習 randmatrix(5,7) という命令によって、乱数を用いて57列の行列を 生成できます。randmatrix コマンドを用いて作った57列行列Aに対して、解 空間{x | Ax = 0} の基底、およびA の列ベクトルが作る部分空間(像)の基底を 求めよ。

練習 次の各行列に対して、解空間の基底、およびその列ベクトルが作る部分空間 (像)の基底を求めよ。

(1) 513列行列 A= (aij), aij =i+j. (2) 117列行列 A= (aij), aij =i+j (3) 168列行列 A= (aij), aij =i+j

(4) 1315列行列A = (aij), aij = 1/(i+j 1) (5) 143列行列 A= (aij), aij = 1/(i+j1) (6) 275列行列 A= (aij), aij = 1/(i+j1)

必要な行列やベクトルの計算が可能であることは, わかったと思います. 行列の計 算で重要なことはn乗の計算などです. 基本原理は対角行列だったら簡単だというこ とです.

a1 0 · · · 0

0 a2 0

... . .. ...

0 0 · · · ak

n

=

an1 0 · · · 0 0 a22 0 ... . .. ...

0 0 · · · ank

対角行列AでなければS−1ASが対角行列(diagonal matrix)になるようなSを捜す のが次の考え方です. つまり

An=S(S−1AnS)S−1 =S{(S−1AS)(S−1AS)· · ·(S−1AS)}S−1 =S(S−1AS)nS−1

となり対角行列のn乗とS を求めれば良いことになります.

(4)

この考え方は

exp(

a1 0 · · · 0

0 a2 0

... . .. ...

0 0 · · · ak

) =

ea1 0 · · · 0

0 ea2 0

... . .. ...

0 0 · · · eak

に適用できて対角可能な行列Aに対して

exp(A) =Sexp(S−1AS)S−1

という方法で行列の指数関数が計算できる.

練習次の行列が対角化可能ならば、それを対角化する可逆行列 S を求め、

6 3 −7

−1 2 1

5 −3 −6

,

1 2 1

−1 4 1

2 −4 0

,

0 1 0

0 0 1

−6 −1 4

−5 6 4

−7 8 4

−2 2 3

,

−1 0 2

−1 1 1

−1 0 2

,

5 0 −6

3 −1 −3

3 0 −4

対角化できる行列A についてはその exp(A)を求めよ。

参照

関連したドキュメント

出てくる、と思っていた。ところが、恐竜は喉のところに笛みたいな、管みた

 「時価の算定に関する会計基準」(企業会計基準第30号

Sabbah, Equations diff´ ´ erentielles ` a points singuliers irr´ eguliers et ph´ enom` ene de Stokes en dimension 2, Ast´erisque, 263, Soci´et´e Math´ematique de France,

[r]

[r]

[r]

[r]

第20回 4月 知っておきたい働くときの基礎知識① 11名 第21回 5月 知っておきたい働くときの基礎知識② 11名 第22回 6月