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

Slides:



Advertisements
Similar presentations
1 エクセル (3) の目次 ②参照演算子と演算子参照演算子と演算子 ③参照セルの表示法参照セルの表示法 ④セルの参照方法セルの参照方法 ⑤エラーについてエラーについて ⑥シグマ( Σ )関数シグマ( Σ )関数 ⑦条件付書式条件付書式 ⑧問題 (1)問題 (1) ⑨問題 (2)問題 (2) ⑩問題.
Advertisements

計測工学 10 データの補間 スプライン補間 1. . 復習 階差 近似多項式の次数 の決定法 等間隔階差 – 関数 y=f(x) で、 x の値 が等間隔の場合 等間隔: x 0, x 0 +h, x 0 +2h ・・・ y の値: y 0, y 1, y 2 ・・・ これらの階差は – 第1階差:
プログラミング論 第八回数字の計算,整数の入出力. 本日の内容 前回の課題(続き) 前回の課題(続き) 数字の計算をする 数字の計算をする – 加減乗除を行う – インクリメント演算子とデクリメン ト演算子.
平成 27 年 10 月 21 日. 【応用課題 2-1 】 次のビット列は、ある 10 進数を 8 ビット固定小数点表示で表した時の ものです。ただし、小数点の位置は 3 ビット目と 4 ビット目の間としてお り、負数は2の補数で表しています。このとき、元の 10 進数を求めてく ださい。
1 線形代数学. 2 履修にあたって 電子情報システム学科 必修 2005 年度1セメスタ開講 担当 草苅良至 (電子情報システム学科) 教官室: G I 511 内線: 2095 質問等は上記のいずれかに行なうこと。 注意計算用のノートを準備すること。
放射線の計算や測定における統計誤 差 「平均の誤差」とその応用( 1H) 2 項分布、ポアソン分布、ガウス分布 ( 1H ) 最小二乗法( 1H )
0章 数学基礎.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報処理 第12回.
コンソールの利用 零点・極と時間応答の関係 安定性 過渡応答の特性
第8章 ベクトル・行列の基礎 Rによるベクトル・行列の表現と計算法.
MATLAB測位プログラミングの 基礎とGT (3)
情報科学科2年生応用線形代数 のためのMATLAB 入門
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
Ⅰ.電卓キーの基本的機能 00 0 1 2 3 6 ⑤ 4 9 8 7 M- MR MC + × % M+ - = ÷ C √ +/- GT
4.3 連立1次方程式   Ax = b   (23) と書くことができる。
ファーストイヤー・セミナーⅡ 第8回 データの入力.
行列の計算 行列とは 行列の型 行列の演算 (C) Katsuhiro Yamada.
数値計算及び実習 第3回 プログラミングの基礎(1).
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
統計解析 第9回 第9章 正規分布、第11章 理論分布.
Extremal Combinatorics 14.1 ~ 14.2
Mathematica入門 数学を数式処理システムで 上智大学理工学部 大槻東巳 TA: 吉本行気,清水元気 2012年6月.
シミュレーション物理7 乱数.
線形代数学 4.行列式 吉村 裕一.
(ラプラス変換の復習) 教科書には相当する章はない
3次元での回転表示について.
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報工学Ⅱ (第9回) 月曜4限 担当:北川 晃.
プログラミング演習(2組) 第8回
情報とコンピュータ 静岡大学工学部 安藤和敏
情報とコンピュータ 静岡大学工学部 安藤和敏
第6章 特徴空間の変換 6.1 特徴選択と特徴空間の変換 6.2 特徴量の正規化 平成15年5月23日(金) 発表者 藤井 丈明
6. ラプラス変換.
「R入門」  5.7 行列に対する諸機能  10月23日 (木) 発表者 大城亜里沙.
線 形 代 数 (linear algebra) linear ・・・ line(直線)の形容詞形 直線的な、線形の、一次の
3次元での回転表示について.
知能システム論I(13) 行列の演算と応用(Matrix) 2008.7.8.
東北大学 大学院情報科学研究科 応用情報科学専攻 田中 和之(Kazuyuki Tanaka)
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
数値計算モジュール NumPy.
平面波 ・・・ 平面状に一様な電磁界が一群となって伝搬する波
疑似乱数, モンテカルロ法によるシミュレーション
Cプログラミング演習資料.
わかりやすいパターン認識 第7章:部分空間法  7.1 部分空間法の基本  7.2 CLAFIC法                  6月13日(金)                  大城 亜里沙.
統計ソフトウエアRの基礎.
表計算ソフトウェアの活用① [基本的な関数]
基礎プログラミング演習 第6回.
行列式 方程式の解 Cramerの公式 余因数展開.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
ウェブデザイン演習 第6回.
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
確率論・数値解析及び演習 (第7章) 補足資料
精密工学科プログラミング基礎 第7回資料 (11/27実施)
行列 一次変換,とくに直交変換.
1.Scheme の式とプログラム.
パターン認識特論 カーネル主成分分析 和田俊和.
第2章 printf(“変数と入力”); scanf(“%d”,&num);
情報工学Ⅱ (第8回) 月曜4限 担当:北川 晃.
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
エクセル(3)の目次 参照演算子と演算子 参照セルの表示法 セルの参照方法 エラーについて シグマ(Σ)関数 条件付書式 問題(1)
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
高校数学の知識から、 人工知能・機械学習・データ解析へ つなげる、 必要最低限の教科書
プログラミング入門2 第5回 配列 変数宣言、初期化について
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
Presentation transcript:

コンピュータプログラミングIII ベクトルと行列の演算 担当:村松 muramatsu@st.seikei.ac.jp

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

覚える

練習しながら

覚える

慣れる

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

MATLABをたちあげて

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

考える

思い出す

やってみる

すぐに

答えを

みない!

出来たら次へ!

ベクトルと行列を作る ベクトルを作る(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

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

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

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

ベクトルと行列を作る 行列を書く(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] ベクトルを作って,それを合わせて 行列を作る ※ベクトルの成分数は等しくないといけない

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

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

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

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

有用な行列を作る 対角行列 ベクトル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) 行列のサイズに注意!

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

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

有用な行列を作る 正規乱数を成分とする行列(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に設定しているため,右の図と 同一の行列が作成されるはず

復習

3×3の 0行列は?

zeros(3)

3×3の 1行列は?

ones(3)

3×3の 単位行列は?

eye(3)

対角要素が Xの行列は?

diag(X)

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

rand(3)

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

randn(3)

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

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

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

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

行列の演算

行列の演算 行列の加算と減算 加算:+ 減算:- スカラーを加えたり引いたりすると, 行列同士の加算,減算 行列の各成分に対し加えたり 加算:+ 減算:- 行列同士の加算,減算 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

行列の演算 行列の乗算とスカラー倍 行列の掛け算は「*」を使う 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

行列の演算 行列の成分ごとの演算(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の計算はエラーになる!

行列の演算 行列の成分ごとの演算(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

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

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

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

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

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

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

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

行列の演算 行列の成分ごとの関係演算 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をとる

行列の演算 行列の成分ごとの関係演算(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)

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

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

確認

行列の 足し算は?

+

行列の 引き算は?

-

行列の 乗算は?

*

行列の 成分毎の 乗算は?

.*

行列Aの 共役転置は?

A’

行列Aの 転置は?

A.’

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

\

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

/

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

./

行列成分毎の べき乗は?

.^

内積は?

dot()

あとは

自分で

復習

行列の成分に施す関数

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

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

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

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

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

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