ドキュメンテーション

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

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

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

関数の定義

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

f(x)=3x2+6x1x2+x3.

関数を作成するには、次のコマンドを入力してください。

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

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

fplot(f)

漸近線を求める

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

limit(f, inf)
ans = 
3

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

f の垂直方向の漸近線を求めるには、分母を 0 に設定した次のコマンドを入力して、方程式を解きます。

roots = solve(denom)
roots =
 - 13^(1/2)/2 - 1/2
   13^(1/2)/2 - 1/2

メモ:

MATLAB® は、方程式に対し常に同じ順番で根を返すとは限りません。

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

x=1+132,

さらに

x=1132.

最大値と最小値を求める

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

f1 = diff(f)
f1 = 
(6*x + 6)/(x^2 + x - 3) - ((2*x + 1)*(3*x^2 + 6*x - 1))/(x^2 + x - 3)^2

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

f1 = simplify(f1)
f1 =
 -(3*x^2 + 16*x + 17)/(x^2 + x - 3)^2

より読みやすい形式で f1 を表示するには、次のコマンドを入力します。

pretty(f1)

次の値が返されます。

     
       2 
    3 x  + 16 x + 17 
  - ---------------- 
       2         2 
     (x  + x - 3)

次に、微分係数を 0 として、極点を求めます。

crit_pts = solve(f1)
crit_pts =
 - 13^(1/2)/3 - 8/3
   13^(1/2)/3 - 8/3

グラフから、f が次の点で局所的最小値をもつことが明らかです。

x1=8133,

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

x2=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 =
  -5.2635 + 0.0000i
  -1.3682 - 0.8511i
  -1.3682 + 0.8511i

この例では、最初の要素だけが実数であるため、これが唯一の変曲点となります。根の順序は変わります。

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

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

変曲点のシンボリック式を表示するには、次のように入力します。

pretty(simplify(inflec_pt))
   2/3   1/3                  1/3    2/3   1/3                  1/3
  2    13    (13 - 3 sqrt(13))      2    13    (3 sqrt(13) + 13)      8
- ------------------------------- - ------------------------------- - -
                 6                                 6                  3

変曲点をプロットします。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