2次関数のグラフ
2次関数のグラフは高校数学において最もよく使うものでしょう。たとえば,三角関数の最大・最小問題も,結局は2次関数の問題であったりします。sinx=t とおいて y=t²-2t+2 (-1≦t≦1)としたりするでしょう。
2次関数の最大・最小問題はもちろん,2次不等式もグラフを利用して考えるのが有効です。
そこで,状況に応じたグラフを手早く描けるようにしましょう。
plot() でグラフを描く
2次関数のグラフを描くだけなら,たとえば,
plot(x^2-2x+2)
で簡単に描けます。
ここで,係数を変数にしておくといろいろと好都合です。
a=1;
b=-2;
c=2;
plot(a*x^2+b*x+c);
なお,上の図では,道具箱の drawaxis() , axisscale() を用いて,軸と目盛を描いています。
定義域を指定する
plot() では,start と stop のオプションによって定義域を制限してグラフを描くことができます。
これも変数(たとえば d1,d2)にしておきましょう。
d1=-1;
d2=2;
plot(a*x^2+b*x+c,start->d1,stop->d2);
教科書などによくあるように,全体の中で「この部分」という示し方をするのであれば,全体を破線または点線で描いておき,定義域に対応する部分を実線で太く描けばよいでしょう。
線種は dashtype で指定します。破線は 2 ,点線は 3 です。
太さは size です。
plot(a*x^2+b*x+c,dashtype->3);
plot(a*x^2+b*x+c,start->d1,stop->d2,size->2);
インタラクティブに定義域を決める
定義域をx軸上で明示するために,その範囲に作図ツールで線分を取りましょう。その両端の点をstart と stop オプションで指定すれば,インタラクティブに定義域を変えることができるようになります。
このとき,x軸は作図ツールではとっていないので,点は自由点でどこにでも移動できます。それをx軸上だけにするために,スクリプトでy座標を0にします。
次の図では,インスペクタを用いて線分の色を赤にしています。
A.y=0;
B.y=0;
d1=A.x;
d2=B.x;
定義域の幅を一定にする
定義域を t≦x≦t+1 のように,一定の幅にすることがあります。上の線分で,点Aを動かして,点BはAの位置から決めるようにします。動かす点がわかりやすいように,インスペクタで点Bは小さくしておくとよいでしょう。
スクリプトは,B.y=0; の代わりに
B.xy=[A.x+1,0];
とします。
係数を可変にする
f(x)=x²+ax+1 のように,係数を文字にします。
aの値はスライダをつくってもよいですし,f(x)=x-2ax+1 のような場合は頂点のx座標が a なので x軸上に取ってもよいでしょう。そのあたりは臨機応変に。
このようなグラフでは,頂点の動き(軌跡)が問題になることがよくあります。
頂点の座標は (a,f(a)) ですので,これを媒介変数表示と見なして,plot() でその軌跡を描くことができます。
ただし,plot() で,媒介変数表示として描くには,変数を t にする必要があるので( t または x または #),係数 a を t に書き換えます。関数も f(x):= で定義をします。
t=A.x;
A.y=0;
f(x):=x^2-2*t*x+1;
plot(f(x));
plot([t,f(t)],start->-10,dashtype->3);