情報基礎実習I (第10回) 木曜4・5限 担当:北川 晃.

Similar presentations


Presentation on theme: "情報基礎実習I (第10回) 木曜4・5限 担当:北川 晃."— Presentation transcript:

1 情報基礎実習I (第10回) 木曜4・5限 担当:北川 晃

2 行列とは 数字や記号を矩形に並べたもの. 同じ大きさの行列は和や差が計算できる. 定数培 1 0 0 0 1 0 0 0 1 1 2
𝑎 𝑏 𝑐 𝑥 𝑦 𝑧 列ベクトル 正方行列 正方行列 同じ大きさの行列は和や差が計算できる. 定数培 2𝐴= 2×2 2×5 2×1 2×3 = 𝐴= 𝐵= 𝐴+𝐵= = 𝐴−𝐵= 2−3 5−1 1−2 3−4 = −1 4 −1 −1

3 行列の和・差,定数培 次の行列の計算をせよ. 2 3 1 3 + 3 2 −1 −2 = 5 5 0 1 (1)
−1 −2 = (1) −2 3 −3 −1 2 −3 5 = −4 6 − −3 6 −9 15 = −9 (2) −1 3 −3 2 − −1 + −3 6 −1 −4 −1 3 5 −4 1 = −4 9 −4 −2 − (3)

4 行列の積 前の行列の行と後ろの行列の列をかけ合わせる(横→縦).
−1 −2 = 2×3+3× −1 2×2+3× −2 1×3+3× −1 1×2+3× −2 = 3 −2 0 −4 3 2 −1 − = 3×2+2×1 3×3+2×3 −1×2−2×1 −1×3−2×3 = −4 −9 ※一般に行列𝐴,𝐵について,𝐴𝐵≠𝐵𝐴(可換でない). − − −1 = 2− − −3+8 1−2+4 1− −2 =

5 行列の積 次の行列の積を計算せよ. −1 2 −3 5 5 7 −2 3 = −9 −1 −25 −6 (1)
−1 2 − −2 3 = −9 −1 −25 −6 (1) 5 7 − −1 2 −3 5 = −26 45 −7 11 (2) −1 3 −3 2 − −1 −3 6 −1 −4 −1 3 5 −4 1 = − −3 − (3)

6 行列の大きさ 正方行列𝐴,𝐵について,行列式を次のように計算する. サラスの公式 𝐴= −1 2 −3 5
𝐴= −1 2 −3 5 det 𝐴 = 𝐴 = −1 2 −3 5 =−1×5+2× −3 =−11 𝐵= −1 3 −3 2 − −1 サラスの公式 det 𝐵 = 𝐵 = −1 3 −3 2 − −1 =−1× −1 × −1 +2×3×2 + −3 ×2×4− −3 × −1 ×2 − −1 ×2×4−2×3× −1 =−5

7 逆行列とは や のような構造の行列を単位行列𝐸という. 正方行列𝐴に対して,𝐴𝐵=𝐵𝐴=𝐸となるような行列𝐵を
のような構造の行列を単位行列𝐸という. 正方行列𝐴に対して,𝐴𝐵=𝐵𝐴=𝐸となるような行列𝐵を 𝐴の逆行列と呼び, 𝐴 −1 と書く. 2 3 − 1 3 − は の逆行列である. ※2×2の正方行列 𝑎 𝑏 𝑐 𝑑 の逆行列は,       = 1 𝑎𝑑−𝑏𝑐 𝑑 −𝑏 −𝑐 𝑎 で求められる.

8 逆行列の計算 掃き出し法 逆行列を求めたい行列と単位行列を並べて書く. 各行について,基本変形を行いながら,
最初の行列が単位行列になるようにする. 定数培 行同士の和,差 ∼ ∼ −1 2 ∼ − ∼ − 2 3 − ∼ − 1 3 − ②×2 ②-① ②÷3 ①-② ①÷2 行列式がゼロのときは逆行列は存在しない.

9 逆行列の計算 次の行列の逆行列を計算せよ. 2 5 1 3 (1) 1 −1 −1 −1 2 2 2 1 2 (2)
∼ ∼ −1 2 ∼ −10 −1 2 ∼ −5 −1 2 ②×2 ①-② ①-②×5 ①÷2 1 −1 −1 − (2) 1 −1 −1 − ∼ − ∼ ①×2+② ①+② ∼ −4 −2 1 ∼ −1 −4 −2 1 ∼ −1 −10 −6 2 ∼ −1 −5 −3 1 ③-①×2 ②-③ ③-② ③÷2

10 連立一次方程式 逆行列を計算することにより,連立一次方程式が解ける. 2𝑥+5𝑦=2 𝑥+3𝑦=−1 2 5 1 3 𝑥 𝑦 = 2 −1
𝑥 𝑦 = 2 −1 𝑥 𝑦 = −1 2 −1 = 3 −5 − −1 = 11 −4 左から逆行列をかける 𝑥−𝑦−𝑧=1 −𝑥+2𝑦−2𝑧=1 2𝑥+𝑦+2𝑧=1 1 −1 −1 −1 2 − 𝑥 𝑦 𝑧 = 𝑥 𝑦 𝑧 = 1 −1 −1 −1 2 − − = −1 −5 − = 3 9 −7

11 CSV形式のファイルからのデータ読み込み
data.csv 1, 10, 100 2, 20, 200 3, 30, 300 4, 40, 400 5, 50, 500 a(1,0)=1, a(1,1)=10, a(1,2)=100 a(2,0)=2, a(2,1)=20, a(2,2)=200 a(3,0)=3, a(3,1)=30, a(3,2)=300 a(4,0)=4, a(4,1)=40, a(4,2)=400 a(5,0)=5, a(5,1)=50, a(5,2)=500

12 データ1行を文字列のsへ,分割して配列のitems()へ
CSV形式からのデータ読み込み:プログラム例 Dim ReadText As New IO.StreamReader( _ "D:\...\data.csv", System.Text.Encoding.Default) Dim s, items(10) As String Dim a(10, 10) As Single For i As Integer = 1 To 5 s = ReadText.ReadLine() items = Split(s, ",") For j As Integer = 0 To 2 a(i, j) = CSng(items(j)) Next j Console.WriteLine("a({0},0)={1,4}, a({0},1)={2,4}, _ a({0},2)={3,4}", i, a(i, 0), a(i, 1), a(i, 2)) Next i ReadText.Close() データ1行を文字列のsへ,分割して配列のitems()へ データを格納する配列 sをコンマの位置で区切る 文字列から 単精度実数型へ

13 データの型の変更 Cint(x): xを整数型へ変換 CStr(x): xを文字列へ変換 CSng(x): xを単精度実数型へ変換
CDbl(x): xを倍精度実数型へ変換 CBool(x): xを論理型へ変換

14 逆行列の数値計算 “data.csv”より行列データを読み込み,掃き出し法によって 逆行列を計算するプログラムを作れ. data.csv
1, -1, -1 -1, 2, 2 2, 1, 2 (プリントのプログラムを参照) 逆行列は,いろいろな場面で計算する必要がある. 汎用のプログラムとして使うことはできないか?

15 Subプロシージャとは 主プログラムの一部を外部の副プログラムに移す 繰り返し同じ記述をする場合などに有効
Functionプロシージャとは異なり, 主プログラムに値は返さない 主プログラムと変数のやりとりをすることもできる プログラムで 共有する変数は,Mainよりも外で 宣言する Mainプログラムも, Subプロシージャの一つ Sub Main() プロシージャ名(変数) End Sub Sub プロシージャ名(変数) 文ブロック 値は返さないので, “Return *”はいらない

16 行列のかけ算 Sub Main() … For i As Integer = 1 To n
For j As Integer = 1 To n m3(i, j) = 0 For k As Integer = 1 To n m3(i, j) = m3(i, j) + m1(i, k) * m2(k, j) Next k Next j Next i End Sub

17 行列のかけ算(サブルーチン) この部分をコピーすれば, Sub Main() 他のプログラムでサブルーチン … として使える
multi_mtrx(m1,m2,m3,n) End Sub Sub multi_mtrx(m1,m2,m3,n) For i As Integer = 1 To n For j As Integer = 1 To n m3(i, j) = 0 For k As Integer = 1 To n m3(i, j) = m3(i, j) + m1(i, k) * m2(k, j) Next k Next j Next i

18 逆行列計算のサブルーチン “data.csv”より行列データを読み込み,掃き出し法によって 逆行列を計算するサブルーチンプログラムを作れ.
1, -1, -1 -1, 2, 2 2, 1, 2 −1 = − − −1 行列の積のサブルーチンと組み合わせてみよ.


Download ppt "情報基礎実習I (第10回) 木曜4・5限 担当:北川 晃."

Similar presentations


Ads by Google