Presentation is loading. Please wait.

Presentation is loading. Please wait.

コンピュータプログラミングIII ベクトルと行列の演算

Similar presentations


Presentation on theme: "コンピュータプログラミングIII ベクトルと行列の演算"— Presentation transcript:

1 コンピュータプログラミングIII ベクトルと行列の演算
担当:村松

2 学習内容 MATLABプログラムを作成する際の 基礎となることを

3 覚える

4 練習しながら

5 覚える

6 慣れる

7 学習内容 ベクトルと行列を作る 有用な行列を作る 行列の演算 行列の成分に施す関数

8 MATLABをたちあげて

9 ベクトルと行列を作る ベクトルを作る(1) このベクトルを作るためにはどうすれば良い?

10 考える

11 思い出す

12 やってみる

13 すぐに

14 答えを

15 みない!

16 出来たら次へ!

17 ベクトルと行列を作る ベクトルを作る(2) 方法1 X=[1 2 3 4 5] 5個の成分をスペースで区切って1行5列の行列を作る
5個の成分をコンマ「,」で区切って1行5列の行列を作る 方法3 X=[1;2;3;4;5] 5個の成分をセミコロン「;」で区切り5行1列の行列を作り, X=X’ と行列の転置をとる演算子「.’」もしくは「’」を用いて 1行5列の行列にする. (あとで説明するが「’」は厳密には共役転置) 方法4 X=1:5

18 ベクトルと行列を作る 等差数列をなす成分をもつベクトル(1)
ベクトル の 成分が交差dの等差数列: は最初の値(X1),公差(d),最後の値(Xn)を用いて X=X1:d:Xn の形で書ける

19 ベクトルと行列を作る 等差数列をなす成分をもつベクトル(2)
例) X=1:1:5 (公差1は省略でき,X=1:5ともかける) X=1:0.25:2 X=5:-1:2

20 ベクトルと行列を作る 等差数列をなす成分をもつベクトル(練習問題)
練習1 練習2 練習3

21 ベクトルと行列を作る 行列を書く(1) 方法1 A=[1 2 3;4 5 6;7 8 9] 直接行列を書き上げる.行は「;」で区切る
  4 5 6   7 8 9] 二次元の形で改行を使って書く 方法3 X=1:3;Y=4:6;Z=7:9; A=[X;Y;Z] ベクトルを作って,それを合わせて 行列を作る ※ベクトルの成分数は等しくないといけない

22 有用な行列を作る 零行列 作ってみる

23 有用な行列を作る 零行列 成分がすべて0の正方行列を作る組み込み関数 zeros(要素数) を用いる A=zeros(3)
正方行列ではない零行列を作るには, 行と列の数を指定し  zeros(行数,列数) のように書く A=zeros(2,3)

24 有用な行列を作る 1行列 成分がすべて1の正方行列を作る組み込み関数 ones(要素数) を用いる A=ones(3)
正方行列ではない零行列を作るには, 行と列の数を指定し  ones(行数,列数) のように書く A=ones(2,3)

25 有用な行列を作る 単位行列 単位行列を作る組み込み関数 eye(要素数) を用いる A=eye(3)
有用な行列を作る         単位行列 単位行列を作る組み込み関数  eye(要素数) を用いる A=eye(3) ふつう,単位行列といえば正方行列であるが, 行と列を指定すると,単位行列を部分として 含む行列を作成でき,  eye(行数,列数) のように書く A=eye(2,4) A=eye(4,2)

26 有用な行列を作る 対角行列 ベクトルXの各成分を対角成分とする 対角行列を作るには組み込み関数 diag(X) を用いる
有用な行列を作る         対角行列 ベクトルXの各成分を対角成分とする 対角行列を作るには組み込み関数  diag(X) を用いる X=1:4, A=diag(X) 主対角線より上や下にベクトル成分を 配置した行列を作るには対角線より 上下を正負の整数で指定  diag(X,移動数) のように書く X=1:3, A=diag(X,1) X=1:3, A=diag(X,2) X=1:3, A=diag(X,-1) 行列のサイズに注意!

27 有用な行列を作る 一様乱数を成分とする行列
有用な行列を作る         一様乱数を成分とする行列 各成分が一様分布に独立に従う乱数で ある正方行列作るには組み込み関数  rand(サイズ) を用いる A=rand(3) 正方でない一様乱数行列を作るには  rand(行数,列数) のように書く A=rand(2,3) スカラーの一様乱数を発生するには A=rand

28 有用な行列を作る 正規乱数を成分とする行列(1)
有用な行列を作る         正規乱数を成分とする行列(1) 各成分が平均0,分散1の正規分布に 従う独立な乱数である正方行列作る には組み込み関数  randn(サイズ) を用いる A=randn(3) 正方でない正規乱数行列を作るには  randn(行数,列数) のように行数と列数を指定し A=randn(2,3) スカラーの一様乱数を発生するには A=randn

29 有用な行列を作る 正規乱数を成分とする行列(2)
有用な行列を作る         正規乱数を成分とする行列(2) ある値xが平均0,分散1の正規分布に従うとき vx+aは平均a,分散v2の正規分布に従う これを利用すると, 平均はAvr=-1,分散がVar=2の正規分布からの乱数から なる2行3列の行列は randn(‘seed’,100); %種を設定 Avr=-1; Var=2; A=sqrt(Var).*randn(2,3)+Avr で求まる. 種を100に設定しているため,右の図と 同一の行列が作成されるはず

30 復習

31 3×3の 0行列は?

32 zeros(3)

33 3×3の 1行列は?

34 ones(3)

35 3×3の 単位行列は?

36 eye(3)

37 対角要素が Xの行列は?

38 diag(X)

39 一様乱数を 成分とする 3×3行列は?

40 rand(3)

41 正規乱数を 成分とする 3×3行列は?

42 randn(3)

43 有用な行列を作る 乱数の種(1) 一様乱数randや正規乱数randnを発生する場合に, 乱数の種を設定してから作る場合がある.
実行して作成される行列をみてみよう A=rand(2) B=rand(2)

44 有用な行列を作る 乱数の種(2) 実行して作成される行列をみてみよう rand(‘seed’,2012); A=rand(2)
rand(‘seed’,2012); B=rand(2) rand(‘seed’,数字) randn(‘seed’,数字) 乱数の種を設定できる 乱数の種を設定してから乱数を作成すると 同じ乱数列を作成することができる. 乱数の種を調べたい場合は rand(‘seed’) %一様乱数の場合 randn(‘seed’) %正規乱数の場合 とすれば確認できる

45 有用な行列を作る 等間隔な成分をもつベクトル
成分が等差数列を成すベクトルX=[X1・・・Xn]を作りたい場合 linspace(最初の値,最後の値,成分数) を用いる X=linspace(0,1,5) 3番目の引数を省略すると, 成分数=100とみなされる. X=linspace(0,1)

46 有用な行列を作る 成分の対数が等間隔になるベクトル
ベクトルX=[X1・・・Xn]の,各成分の常用対数が等差数列 となるベクトルを作りたい場合 logspace(log10最初の値,log10最後の値,成分数) を用いる X=logspace(1,4,4) 3番目の引数を省略すると, 成分数=50とみなされる. X=logspace(0,10)

47 行列の演算

48 行列の演算 行列の加算と減算 加算:+ 減算:- スカラーを加えたり引いたりすると, 行列同士の加算,減算 行列の各成分に対し加えたり
加算:+ 減算:- 行列同士の加算,減算 A=[1 2 3;4 5 6] B=[6 5 4;3 2 1] C=A+B,D=A-B スカラーを加えたり引いたりすると, 行列の各成分に対し加えたり 引いたりした結果が得られる A=[1 2 3;4 5 6]; B=[6 5 4;3 2 1]; C=A+6,D=A-6

49 行列の演算 行列の乗算とスカラー倍 行列の掛け算は「*」を使う A=[1 2 3;4 5 6], B=[6,5;4,3;2,1],
C=A*B スカラーを行列に掛けるときも 「*」を使う A=[1 2 3;4 5 6], B=-2*A

50 行列の演算 行列の成分ごとの演算(1) 2つの行列の成分同士を掛けたい場合, 演算記号「.*」を使う
A=[1 2 3;4 5 6], B=[4 5 6;1,2,3], C=A.*B     注意)AもBも2行3列の行列のため    C=A*Bの計算はエラーになる!

51 行列の演算 行列の成分ごとの演算(2) 2つの行列の成分同士の掛け算はふつうの線形台数ではあまり 見かけない.
しかし,この種の演算はシミュレーションなどの場面で役立つ! スカラー倍の演算は「.*」を用いた方が安全. A=[1 2 3;4 5 6],B=-2.*A 【確認】 A=[1 2;3 4],B=[2 3;4 5]; C=A*B D=A.*B

52 行列の演算 行列の転置(1) 行列の転置には「’」か, または「.’」を用いる 「’」: 共役転置 「.’」: 転置
「’」: 共役転置 「.’」: 転置 A=[1+i, 2, 3+4i;4,5-2i,6] B=A’,C=A.’

53 行列の演算 行列の転置(2) また,転置を使うと, 行ベクトル⇒列ベクトル 列ベクトル⇒行ベクトル の変換が簡単
X=[1 2 3], Y=X’,Z=Y’

54 行列の演算 行列の割り算(1) 演算記号「\」「/」を使う 一次方程式 をとく場合は これをMatlabでは A\B で解ける
X=A\B ※「\」は「 」と同じ意味. A\B=A B(BをAで(左から)割る) つまり”A\”はAの逆行列を左からかけることを意味している

55 行列の演算 行列の割り算(2) 演算記号「\」「/」を使う 一次方程式 をとく場合は これをMatlabでは B/A で解ける
X=B/A B/A BをAで(右から)割る) つまり”/A”はAの逆行列を右からかけることを意味している

56 行列の演算 行列の成分ごとの除算 演算記号「.\」「./」を使う A=[1 2 3;4 5 6], B=[4 5 6;1 2 3],
C=A.\B, D=A./B

57 行列の演算 行列のべき乗(1) 正方行列を何回か掛けるには 演算記号「^」を使う A=[1 2 3;4 5 6;7 8 9], B=A^3
これは C=A*A*A と同じ

58 行列の演算 行列の成分ごとのべき乗(1) 演算記号「.^」を使う A=[1 2 3;4 5 6;7 8 9], B=A.^3 これは
C=A.*A.*A と同じ

59 行列の演算 行列の成分ごとの関係演算 2つの数値に関する関係式は,次のような値をとる
X==Y:XとYが等しいとき1を,そうでないとき0をとる X~=Y:XとYが等しくないとき1を,そうでないとき0をとる X<Y:XがYより小さいとき1を,そうでないとき0をとる X<=Y:XがY以下のとき1を,そうでないときき0をとる X>Y:XがYより大きいとき1を,そうでないとき0をとる X>=Y:XがY以上のとき1を,そうでないとき0をとる

60 行列の演算 行列の成分ごとの関係演算(2) A=[0 1 0 2],B=[0 0 3 -2] Cequal=(A==B)
Cnotequal=(A~=B) Cless=(A<B) Clessequal=(A<=B) Cgreat=(A>B) Cgreatequal=(A>=B)

61 行列の演算 内積 ベクトル                        の内積演算 を求めるには,組み込み関数dotを使う X=1:3, Y=3:-1:1, Z=dot(X,Y)

62 行列の演算 内積 行列のときは列ベクトルごとの内積を計算する A=[1:3; 2:2:6; 3:3:9]
B=[3:-1:1;3:-1:1;3:-1:1] Z=dot(X,Y)

63 確認

64 行列の 足し算は?

65 +

66 行列の 引き算は?

67 -

68 行列の 乗算は?

69 *

70 行列の 成分毎の 乗算は?

71 .*

72 行列Aの 共役転置は?

73 A’

74 行列Aの 転置は?

75 A.’

76 行列の 除算(左から)は?

77 \

78 行列の 除算(右から)は?

79 /

80 行列成分毎の 除算(右から)は?

81 ./

82 行列成分毎の べき乗は?

83 .^

84 内積は?

85 dot()

86 あとは

87 自分で

88 復習

89 行列の成分に施す関数

90 行列の成分に施す関数 行列の成分毎に計算 abs():絶対値 angle():位相角 sqrt():平方根 real():実部
imag():虚部 exp():指数関数 log():対数関数 log10():常用対数関数 三角関数:sin(),cos(),tan(),asin(),acos(),atan(),atan2(,)など

91 行列の成分に施す関数 A=[0:pi./3:pi; pi:pi./3:2.*pi; 2.*pi:pi./3:3.*pi]
B=sin(A),C=cos(A)

92 行列の成分に施す関数 A=logspace(1,4,4) B=log10(A) A=[1:3;4:6;7:9] B=sqrt(A)

93 確認 ベクトルと行列を作れるようになった? 有用な行列を作ることができる? 行列の演算ができる? 行列の成分に関数をつかえる?

94 演習問題 問題1 問題2   問題3 問題4

95 演習問題 問題5 問題6          問題7


Download ppt "コンピュータプログラミングIII ベクトルと行列の演算"

Similar presentations


Ads by Google