市民工学科 令和5年度 数値計算実習(第3回その1)
令和4年 10月12日(木) 4限目 15:10〜16:40
1. \(\mbox{plot}\) を用いて図形を描いてみよう
コマンド「\(\ \mbox{plot}\ \)」を使えば,\(2\ \)次元平面上に,単なるグラフだけでなく,図形を描くこともできます.
1.1 \(\mbox{plot}\) を使って指定座標を直線でつなぐ
さっそくですが,次の例題を実行してみて下さい.
三角形を描く -->a=[0;0];
-->b=[2;0];
-->c=[1;1];
-->XY=[a,b,c,a]
XY =
0. 2. 1. 0.
0. 0. 1. 0.
-->plot(XY(1,:),XY(2,:))
図\(\ 3−1\ \)のように三角形がグラフとして描画されます.
図\(\ 3−1\ \) 三角形をグラフとして描画
上記の例題では,まず初めに,三角形の頂点となる点\(\ a,b,c\ \)の各座標を,縦ベクトル(セミコロン「\(\ ;\ \)」を使う)のかたちで,変数\(\ a,b,c\ \)に代入します.
変数\(\ a\ \)の中には三角形の底辺の左側の頂点\(\ a\ \)の座標\((0, 0)\),変数\(\ b\ \)の中には底辺の右側の頂点\(\ b\ \)の座標\((2, 0)\),変数\(\ c\ \)の中には三角形の上側の頂点\(\ c\ \)の座標\((1, 1)\)が,縦ベクトルのかたちで収納されています.
これらの座標を直線でつなぐには,以下の\(\ (1)\ (2)\ (3)\ \)を順番に実行します.
\((1)\ \)頂点の各座標を表す縦ベクトルが順番に横に並んだ行列をつくる.この例題では,変数「\(\ XY\ \)」を用意して,頂点\(\ a,b,c\ \)そして\(\ a\ \)をつなぐため,\(XY\ =\ [ a, b, c, a ]\ \)とする.
\((2)\ \)行列\(\ XY\ \)の第\(\ 1\ \)"行"目と第\(\ 2\ \)"行"目に着目して,各々の行を横ベクトルとして抽出する.この例題では,第\(\ 1\ \)行目を「\(\ XY(1, :)\ \)」(つまり,\([ 0, 2, 1, 0 ]\ \)),第\(\ 2\ \)行目を「\(\ XY(2, :)\ \)」(つまり,\([ 0, 0, 1, 0 ]\ \))として抽出する.
\((3)\ \)\(\ (2)\ \)で抽出した横ベクトル\(\ XY(1, :)\ \)と\(\ XY(2, :)\ \)をコマンド「\(\ \mbox{plot}\ \)」の引数として与える.すなわち,\(\mbox{plot}( XY(1, :), XY(2, :) )\ \)を実行する.
なお,\((2)\ \)のように,行列やベクトルの一部を抽出したい場合には,
・ある行とある列の成分を同時に抽出したいときには,変数名(行,列)
・ある行(または,ある列)の成分を個別に抽出したいときには,変数名(行,:)(または,変数名(:,列))
と記述します.試しに,
XY(1,:) |
というコマンドを実行すれば,\(XY\ \)の第\(\ 1\ \)行目だけが抽出されて出力されるのを確認できます.
もう一度言うと,「\(\ \mbox{plot}\ \)」では,最初の引数に「\(\ x\ \)軸の値を示す横ベクトル」,続く引数に「\(\ y\ \)軸の値を示す横ベクトル」を容れることになります.
それでは,次の練習問題を解いてみて下さい.
※ その結果をメールsuchikeisan2023@gmail.com へ送信して下さい.
・メールの題名は,「練習問題\(\ 3−1\ \):自分の氏名」(例:練習問題\(\ 3−1\ \):計算太郎)
・メールの本文には,\(Scilab\) からコピーしたコマンドを貼り付ける.図形は貼り付けない.
[練習問題\(\ 3−1\ \)]
\(4\ \)つの頂点\(\ a,b,c,d\ \)の座標を各々,\((1, 0)(2, 1)(1, 2)(0, 1)\ \)とする.まず,これらの座標を縦ベクトルのかたちで変数\(\ a,b,c,d\ \)に代入せよ. さらに,これらが\((a, b, c, d, a)\)の順に横に並んだ行列を変数\(\ XY\ \)に代入せよ.そして,これらの頂点\(\ a,b,c,d,a\ \)を直線でつないだ図形を描画せよ.