\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)

2次関数(quadratic function)

1 2次関数とグラフ(graph)

関数 function ラテン語「なし遂げること」の意から
 公務員・役人を軽蔑して functionary と呼ぶらしい。
直線 line ラテン語「亜麻で作った綱」の意から 麻がリンネル
座標平面 coordinate plane ラテン語「平らな地面」の意から 秩序付けられた平面
象限 quadrant 四分円 4というのはギリシャ語ではテトラ,ラテン語はクアッド
定義域 domain 値域 range
 ドメインはメールのおかげで日本語になりつつある
 レンジは並びというのが元々の意味らしいが,電子レンジのレンジ,ローンレンジャーも
最大値 maximum ラテン語「最大の」の意から最小値 minimum ラテン語「最小の」の意から
 省略して Maxim(格言)もっと省略して Maxi(大型)さらに省略して Max
 省略して Minim(微量)もっと省略して Mini(ミニ)さらに省略して Min
放物線 parabola
 para(等しい,平行)という言葉がなぜ出るのかは数Cか
軸 axis 頂点 vertex 頂上から vertical(垂直)
下に凸 downwards convex 上に凸 upwards convex
 ちなみに凹は concave
平行移動 parallel translation
平方完成 不明だ
3元方程式 with three unknowns

今のところ,困ったら関数を作ることしかできません。
vertex(a,b,c) は2次関数の係数を入れて,頂点の座標を出すもの。
stan(a,p,q,x) は標準形
gene(a,b,c,x,y) は一般形
quadmax(a,b,c,s,t) は2次関数の係数と定義域を入れて,最大値を出すもの
quadmin(a,b,c,s,t) は2次関数の係数と定義域を入れて,最小値を出すもの

1. 次の関数のグラフをかき,定義域における最大最小値を求めよ。
\[y=x^2-2x+2(0\le x\le 3) \]
2. グラフが3点(-1,0),(2,3),(3,-4)を通る2次関数を求めよ。
まず,Gegebraで。

図 1:
Diagram

図 2:
Diagram
(%i1) vertex(a,b,c):=[-b/2/a,-(b^2-4*a*c)/a/4]$
(%i2) stan(a,p,q,x):=a*(x-p)^2+q$
(%i3) gene(a,b,c,x,y):=a*x^2+b*x+c-y$
(%i4) quadmax(a,b,c,s,t):=block(
f(x):=a*x^2+b*x+c,
p:-b/2/a,
if (s<p and p<t) then m1:f(p) else m1:-1*inf,
return(max(f(s),f(t),m1))
)$
(%i5) quadmin(a,b,c,s,t):=block(
f(x):=a*x^2+b*x+c,
p:-b/2/a,
if (s<p and p<t) then m1:f(p) else m1:inf,
return(min(f(s),f(t),m1))
)$
(%i6) wxplot2d(x^2-2*x+2,[x,0,3])$
\[(\%t6)\]  (Graphics)
(%i8) quadmax(1,-2,2,0,3);quadmin(1,-2,2,0,3);
\[(\%o7)5\] \[(\%o8)1\]
(%i9) solve([gene(a,b,c,-1,0),gene(a,b,c,2,3),gene(a,b,c,3,-4)],[a,b,c]);
\[(\%o9)[[a=-2,b=3,c=5]]\]

個人的には次の補間公式が好きですけど。

(%i10) quadf(x_1,y_1,x_2,y_2,x_3,y_3):=expand((y_1*(x-x_2)*(x-x_3)/(x_1-x_2)/(x_1-x_3)+
y_2*(x-x_1)*(x-x_3)/(x_2-x_1)/(x_2-x_3)+y_3*(x-x_2)*(x-x_1)/(x_3-x_2)/(x_3-x_1)));
\[(\%o10)\operatorname{quadf}\left( {{x}_{1}},{{y}_{1}},{{x}_{2}},{{y}_{2}},{{x}_{3}},{{y}_{3}}\right) :=\operatorname{expand}\left( \frac{\frac{{{y}_{1}}\left( x-{{x}_{2}}\right) \left( x-{{x}_{3}}\right) }{{{x}_{1}}-{{x}_{2}}}}{{{x}_{1}}-{{x}_{3}}}+\frac{\frac{{{y}_{2}}\left( x-{{x}_{1}}\right) \left( x-{{x}_{3}}\right) }{{{x}_{2}}-{{x}_{1}}}}{{{x}_{2}}-{{x}_{3}}}+\frac{\frac{{{y}_{3}}\left( x-{{x}_{2}}\right) \left( x-{{x}_{1}}\right) }{{{x}_{3}}-{{x}_{2}}}}{{{x}_{3}}-{{x}_{1}}}\right) \]
(%i11) quadf(-1,0,2,3,3,-4);
\[(\%o11)-2{{x}^{2}}+3x+5\]

2 2次不等式

接する contact ラテン語「共に触れる」の意から 接点 contact point
D(f):f(2次式)の判別式

(%i12) kill(all)$

\[1. 2次関数  y=-x^2+4x+k  のグラフと  x 軸の共有点の個数は定数 k の値によってどのように変わるか
    \]
2.次の2次不等式を解け。
\[(1) x^2+3x-4\ge 0 (2) x^2+2x-1\le 0 (3) x^2+6x+9>0 (4) x^2-2\sqrt{3}x+3\le 0
   \]
\[ 3.2次関数 y=x^2-2mx-m+2 のグラフと x 軸の正の部分が
   異なる2点で交わるように,定数 m の値の範囲を求めよ。
\]

図 3:
Diagram
(%i1) D(f):=block(
a:coeff(f,x,2),
b:coeff(f,x,1),
c:coeff(f,x,0),
return(b^2-4*a*c)
)$
(%i2) f:-x^2+4*x+k;
\[\tag{f}\label{f}-{{x}^{2}}+4x+k\]
(%i3) l:rhs(solve([D(f)],k)[1]);
\[\tag{l}\label{l}-4\]
--> ;
(%i4) load(draw)$
(%i5) draw(
       delay = 100,
       file_name = "zzz",
       terminal = 'animated_gif,
       gr2d(yrange = [-10,5],label([sconcat("k=",l-1),0,0.3]),
       explicit(subst(l-1,k,f),x,-5,5),
            xaxis = true),
       gr2d(yrange = [-10,5],label([sconcat("k=",l),0,0.3]),
       explicit(subst(l,k,f),x,-5,5),
            xaxis = true),
       gr2d(yrange = [-10,5],label([sconcat("k=",l+1),0,0.3]),
       explicit(subst(l+1,k,f),x,-5,5),
            xaxis = true)
)$

wxmファイルを保存しているディレクトリに,zzz.gifファイルができてます。
2次不等式は,数学班のMr.Sが関数を作ってくれた。

(%i6) ineq2(a,b,c,d):=block(
   g:b^2-4*a*c,
   if a<0 then return("you must change the sign of a to positive")
   else if g=0 and d=">" then return(sconcat("x#",ev(x,solve(a*x^2+b*x+c=0,x))))
   else if g=0 and d="<" then return("nothing")
   else if g=0 and d=">=" then return("all")
   else if g=0 and d="<=" then return(sconcat("x=",ev(x,solve(a*x^2+b*x+c=0,x)))),
   e:ev(x,solve(a*x^2+b*x+c=0,x)[1]),
   f:ev(x,solve(a*x^2+b*x+c=0,x)[2]),
   if g>0 and d=">" then return(sconcat("x<",min(e,f),",",max(e,f),"<x"))
   else if g>0 and d="<" then return(sconcat(min(e,f),"<x<",max(e,f)))
   else if g>0 and d=">=" then return(sconcat("x<=",min(e,f),",",max(e,f),"<=x"))
   else if g>0 and d="<=" then return(sconcat(min(e,f),"<=x<=",max(e,f)))
   else if g<0 and d=">" then return("all")
   else if g<0 and d="<" then return("nothing")
   else if g<0 and d=">=" then return("all")
   else if g<0 and d="<=" then return("nothing")
)$
(%i7) ineq2(1,3,-4,">=");
\[(\%o7)x\ensuremath{\ensuremath{<}}=-4,1\ensuremath{\ensuremath{<}}=x\]
(%i8) ineq2(1,2,-1,"<=");
\[(\%o8)(-\sqrt{2})-1\ensuremath{\ensuremath{<}}=x\ensuremath{\ensuremath{<}}=\sqrt{2}-1\]
(%i9) ineq2(1,6,9,">");
\[(\%o9)x\ensuremath{\neq}-3\]
(%i10) ineq2(1,-2*sqrt(3),3,"<=");
\[(\%o10)x=\sqrt{3}\]

1次不等式のところで説明したように,不等式を解くにはfourier_elim なる関数がある。
これは,与えられた式が因数分解されないとうまくないようだ。

(%i11) load(fourier_elim)$
(%i12) fourier_elim([x^2+3*x-4>=0],[x]);
\[(\%o12)[x=-4]\mathit{ or }[x=1]\mathit{ or }[1<x]\mathit{ or }[x<-4]\]
(%i13) fourier_elim([x^2+2*x-1<=0],[x]);
\[(\%o13)[{{x}^{2}}+2x-1=0]\mathit{ or }[-{{x}^{2}}-2x+1>0]\]
(%i14) fourier_elim([x^2+6*x+9>0],[x]);
\[(\%o14)[x<-3]\mathit{ or }[-3<x]\]
(%i15) fourier_elim([x^2-2*sqrt(3)*x+3<=0],[x]);
\[(\%o15)[{{x}^{2}}-2\sqrt{3}x+3=0]\mathit{ or }[-{{x}^{2}}+2\sqrt{3}x-3>0]\]

異なる2つの正の解をもつ条件を求める関数(ついでに負の場合も)。
2乗の係数を正として,文字係数はmとして。

(%i16) vertex(a,b,c):=[-b/2/a,-(b^2-4*a*c)/a/4]$
(%i17) po2(a,b,c):=block(
    fourier_elim([vertex(a,b,c)[1]>0,vertex(a,b,c)[2]<0,c>0],[m])
)$
(%i18) po2(1,-2*m,-m+2);
\[(\%o18)[1<m,m<2]\]
(%i19) ne2(a,b,c):=block(
    fourier_elim([vertex(a,b,c)[1]<0,vertex(a,b,c)[2]<0,c>0],[m])
)$

Created with wxMaxima. inserted by FC2 system