変数の値の変化のしかたをコントロールする
問題
tが0から10まで動く際に、次のような変化をする変数pを作りたい場合、どうすればよいでしょうか。
①10から0まで変化する(変化率dp/dtは一定)。
②10から0まで変化する(変化率dp/dtは逓増)。
③t=0のときp=0で、そこからt=3までpは増加する(dp/dtは一定)。t=3のときはp=7で、そこからt=10までpは減少する(dp/dtは一定)。t=10のときp=4である。
④[t]が偶数のときp=0で、[t]が奇数のときp=1である。
pをtの関数として定義する方法
①p=-t+10としてpを定義する。
②保留
③pの定義を、If[0<=t<=3,(7/3)*t,3<t<=10,(-3/7)t+58/7]とする。
④pの定義を、If[Mod[floor(t),2]==0,0,1]とする。
Spline[ ]やPolyLine[ ]を活用する
④はともかく、①〜③で、もっと直感的にpの変化のしかたをコントロールする方法としては、以下のような方法があります。
①
(1)自由な3点A,Bを用意する。
(2)Aの座標を(0,10), Bの座標を(10,0)にする。
(3)リストオブジェクトlist1を、{A,B}で定義する。
(4)折れ線オブジェクトaを、PolyLine[list1]として定義する。
(5)直線オブジェクトbを、x=tとして定義する。
(6)点Pを、Intersect[a,b]として定義する。
(7)p=y(P)とすれば、pは指定通りの変化のしかたをする。
②
(1)自由な3点A,B,Cを用意する。
(2)Aの座標を(0,10)、Bの座標を(2,2)、Cの座標を(10,0)にする。
(3)リストオブジェクトlist1を、{A,B,C}で定義する。
(4)媒介変数曲線aを、Spline[list1,3]として定義する。
(5)直線オブジェクトbを、x=tとして定義する。
(6)点Pを、Intersect[a,b]として定義する。
(7)p=y(P)とすれば、pは指定通りの変化のしかたをする。
③
(1)自由な3点A,B,Cを用意する。
(2)Aの座標を(0,0)、Bの座標を(3,7)、Cの座標を(10,4)にする。
(3)リストオブジェクトlist1を、{A,B,C}で定義する。
(4)折れ線オブジェクトaを、PolyLine[list1]として定義する。
(5)直線オブジェクトbを、x=tとして定義する。
(6)点Pを、Intersect[a,b]として定義する。
(7)p=y(P)とすれば、pは指定通りの変化のしかたをする。