最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

漸近線、臨界点および変曲点を求める

この例は、ある簡単な関数を解析して、漸近線、最大値、最小値、変曲点を見つける方法を説明します。

関数の定義

この例で使用する関数は、次のものです。

f(x)=3x2+6x-1x2+x-3.

まず、関数を作成します。

syms x
num = 3*x^2 + 6*x -1;
denom = x^2 + x - 3;
f = num/denom
f = 

3x2+6x-1x2+x-3

fplot を使用して関数をプロットします。関数 fplot により、水平方向の漸近線と垂直方向の漸近線が自動的に表示されます。

fplot(f)

漸近線を求める

f の水平方向の漸近線を数学的に求めるには、x が正の無限大に接近する場合の f の極限を取ります。

limit(f,Inf)
ans = 3

x が負の無限大に接近する場合の極限もまた 3 になります。この結果は、y=3 のラインが、f の水平方向の漸近線であることを意味しています。

f の垂直方向の漸近線を求めるには、分母を 0 に等しくなるように設定して、それを解きます。

roots = solve(denom)
roots = 

(-132-12132-12)

roots により垂直の漸近線が以下のラインであることがわかります。

x=-1-132

さらに

x=-1+132

最大値と最小値を求める

f には x=2x=0 の点の間に局所的最大値があることが、グラフからわかります。また、x=6x=2 の間にも局所的最小値があります。最大値と最小値の x 座標を見つけるには、まず f の導関数を取得します。

f1 = diff(f)
f1 = 

6x+6x2+x-3-2x+13x2+6x-1x2+x-32

この式を単純化するために、次のように入力します。

f1 = simplify(f1)
f1 = 

-3x2+16x+17x2+x-32

次に、導関数を 0 に等しくなるように設定して、その臨界点を求めます。

crit_pts = solve(f1)
crit_pts = 

(-133-83133-83)

f のグラフに示すように、この関数には次の点で局所的最小値があります。

x1=-8-133

また、次の点で局所的最大値をもつことも明らかです。

x1=-8+133

f の最小値と最大値をプロットします。

fplot(f)
hold on
plot(double(crit_pts), double(subs(f,crit_pts)),'ro')
title('Maximum and Minimum of f')
text(-4.8,5.5,'Local minimum')
text(-2,4,'Local maximum')
hold off

変曲点を求める

f の変曲点を求めるには、2 次導関数を 0 に等しくなるように設定して、この条件を解きます。

f2 = diff(f1);
inflec_pt = solve(f2,'MaxDegree',3);
double(inflec_pt)
ans = 3×1 complex

  -5.2635 + 0.0000i
  -1.3682 - 0.8511i
  -1.3682 + 0.8511i

この例では、最初の要素だけが実数であるため、これが唯一の変曲点となります。MATLAB® は、常に同じ順番で方程式の根を返すとは限りません。

inter_pt にインデックスを付けて実数根を選択するのではなく、虚数部の値がゼロである根を判別することにより実数根を識別します。

idx = imag(double(inflec_pt)) == 0;
inflec_pt = inflec_pt(idx)
inflec_pt = 

-13916954-2197181/3-16954-2197181/3-83

変曲点をプロットします。fplot の中の追加引数 [-9 6] は、プロットにおける x の値の範囲を拡張するため、図に示すように、変曲点をより明確に確認できます。

fplot(f,[-9 6])
hold on
plot(double(inflec_pt), double(subs(f,inflec_pt)),'ro')
title('Inflection Point of f')
text(-7,1,'Inflection point')
hold off