アフィリエイト広告を利用しています

2016年04月07日

極値の有無の境目を判定します(y = expx − ax)

極値の有無の境目を判定します

 今回は一見したところとても易しそうな

y = exp(x) − ax 2   [1]

という関数を扱います。 a の値をいくつか選んでグラフを描いてみます。

 01y=expx-ax^2.gif

 a の値を大きくするほど深い谷を形成して exp(x) の増加を遅らせます。実はこの関数は a の変遷過程である所を境に「極値をもたない関数」から「極値をもつ関数」へと変化します。その様子を調べるために、[1] を微分して導関数を得ます:

y′ = exp(x) − 2ax   [2]

 この導関数のグラフも描いてみます。

 02y=expx-2ax.gif

 y′ のグラフが x 軸と交点を持てば [2] は極値をもちます。
 a = 1.2 ではまだ極値はありませんが、a = 1.5 は極値ありです。
 そこで a の値を変化させて「どこで x 軸と接するか」ということを調べます。これは VBA でプログラムを書いて計算させるわけですが、簡単にその構造を説明すると「 a の値を 0.001 刻みに変化させて、y′ の値が1つでも負の値をとった瞬間に計算を止めて、そのときの a を閾値とみなす」というものです。正確に言えば、「計算を止めた a 」と、「その直前の a 」との間に閾値があります。刻み幅を小さくすればより精度の高い値を得ることができます。実際にそのプログラムを実行すると、次のような結果を得ます。

 a = 1.360 で計算終了
  x = 0.96 y = 0.000496
  x = 0.97 y = - 0.000456

 03y=expx-1.36x^2.gif

 a = 1.360 が閾値です。この値を近似的にグラフが x 軸に接する a であると考えると、このとき y′= 0 の解 x = xm はひとつだけであり、 x = xm の前後で y′の符号は変化しません。したがって極値はもちません。ただ厳密に考えると a = 1.360 で僅かに x 軸と交差しているので y′ = 0 の解は2つあり、その解 α と β (α < β)は非常に近い値をとります。そしてその前後で y′ もまた微妙に変化して、x = α のところで上に凸(極大値)、x = β のところで下に凸(極小値)が現れます。ごく狭い範囲に極大値と極小値が出現しているのです。文章でずらずら書いても何が何だかわからなくなりそうなので、a = 1.370 としたグラフで極値付近を範囲を拡大してみます:

 04y=expx-1.37x^2拡大.gif

 ちゃんと凹凸が現れています。

x = α = 0.88 のとき極大値 1.350
x = β = 1.14 のとき極小値 1.346

となります。極大・極小といっても普通のグラフでは目に見えない程度の小さな起伏です。
 ⇒ なんとなくの数学日記(新しいブログを始めました)  

2016年03月19日

折り紙を曲げる途中のようなグラフ?

 今回は指数関数と対数関数の 3 次元バージョンを見ていきます。

折り紙を曲げる途中のようなグラフ?


 どちらも単調な関数ですから、2次元グラフが頭に入っていれば概観を予想することはできます。まずは、z = exp(x + y) という関数のグラフです:

 01z=exp(x+y).png

 折り紙を対角線に沿って折り曲げる途中のようなグラフですね。上図では完全に平坦な領域があるように見えますが、少し拡大して角度を変えて見てみると ……

 01z=exp(x+y)拡大.png

 全域で傾斜する関数であることがわかります。
 ここで新しく全微分という概念を使ってみましょう。全微分は

dz = fx(x, y)dx + fy(x, y)dy

で定義されます。 fx と fy は以前にも解説した x と y に関する偏微分記号です。偏微分は x と y どちらかを固定した状態における z の変化を表すだけでしたが、全微分は x, y 両方を変化させたときの z の増加傾向を知ることができます。 z = exp(x + y) について dz を計算してみると、

dz = exp(x + y)(dx + dy)

となります。 exp(x + y) は全領域で正ですから、x と y が共に増加する方向、すなわち dx > 0 , dy > 0 においては z は必ず増加することを示しています。

 次は xy 面内における原点からの距離 r を変数とする指数関数です:

 02z=exp(r).png

 原点から全方位に指数増加する関数ですね。
 同じように距離 r の 2 乗を変数とする対数関数です:

 03z=log(r^2).png

 (x, y) = (0, 0) で対数関数は定義できませんが、その付近で急速に谷底へ落ち込んでゆく関数です。x, y → ∞ において f(x, y) → −∞ ですから、この谷底は無限の深みを持っていることになります。何だか怖いですね。

 最後はおまけとして対数関数と三角関数を組み合わせてみます:

 04z=log(sinpix+2).png

 鞍点を中心に四方へ振動が広がるやや複雑な関数です。
 log( ) の中の + 2 は定義できない点を避けるための工夫です。
 ⇒ なんとなくの数学日記(Excel が重たくなります)  

2015年11月18日

Excel で波束が移動するグラフを描きます

≫ [Amazon書籍] 算数嫌いな子が好きになる本(小学校6年分のつまずきと教え方)

波束が移動するグラフ


 前回扱った y = xn exp(−x) に sinx を乗じてみます:

   f(x) = x sinx exp(−x)
   g(x) = x2 sinx exp(−x)
   h(x) = x3 sinx exp(−x)

 この3つのグラフを軸スケールを統一して並べてみます:

xsinxexp(-x).gif

 0 < x の範囲を表示しています。最初の山と谷が高く、或いは深くなりつつ右へ移動し、新しい山が立ち上がってくるのがわかります。 x n が sinx と exp(−x) の両方に効いているからです。 n が大きいほど sinx の振幅を増大させ、 exp(−x) の減衰効果を打ち消しています。おまけとして、

   i(x) = x11 sinx exp(−x)
   j(x) = x20 sinx exp(−x)

のグラフを描いてみます:

x^11sinxexp(-x)

 縦軸スケールは変えてあります。振動領域そのものが右に移動していますね。 n によって「波の束」の存在領域が変化してゆくのが、この関数の特徴です。
 ⇒ なんとなくの数学日記(こばとちゃんは猫が苦手です)  

2015年11月17日

f(x) = xexp(-x):Excel で関数の極大値の移動を調べます

【Excelショートカット豆知識】
 [Ctrl] + ↓ 入力済みセルと空白セルの境界まで移動
 [Ctrl] + ↑ 入力済みセルと空白セルの境界まで移動
 [Ctrl] + → 入力済みセルと空白セルの境界まで移動
 [Ctrl] + ← 入力済みセルと空白セルの境界まで移動

Excel で関数の極大値の移動を調べます


 数学Vを習い始めた頃に、

   f(x) = x exp(−x), g(x) = x2 exp(−x)

 というようなグラフを書く練習をした記憶があると思います。極値が求めやすいですし、形もシンプルで書きやすいですからね。受験を控えた高校 3 年生の人も今の時期(11月)であればもう簡単にグラフを描けると思いますが、一応確認のために微分して極値を求めてみましょう。

  f′(x) = (1−x) exp(−x) = 0 ⇒ x = 1
  極値は f(1) = 1 / exp(1) = 0.368
  f′(0) > 0, f′(∞) < 0 だから上に凸のグラフ

  g′(x) = x (x−2) exp(−x) = 0 ⇒ x = 0, 2
  極値は g(0) = 0, g(2) = 4 / exp(2) = 0.541
  g′(−∞) < 0, g′(0) > 0, g′(∞) < 0 だから 下矢印2 右矢印2 下矢印2 のグラフ

となります。Excel グラフで確認してみましょう。

xexp(-x)、x^2exp(-x).gif

 0 < x の範囲で2つのグラフはとてもよく似ていますが、g(x) のほうが極大値は大きく、また極大値をとる x の値も右にずれています。その理由はもちろん exp(−x) という単調減少関数に対して x よりも x2 のほうが値の減少を引き止める力が大きいからです。x の次数をさらに大きくして、

  h(x) = x3 exp(−x), i(x) = x5 exp(−x)

を比較してみましょう:

x^3exp(-x)、x^5exp(-x).gif

 0 < x の範囲で図示してあります。また、上下で縦軸のスケールが変わっていることに注意してください。i(x) の値が大きいので同じスケールで書くと画像が縦長になりすぎてしまいます。やはり極大値は右へ移動していきますね。最後におまけとして

  j(x) = x11 exp(−x)

のグラフを描いてみます:

x^11exp(-x).gif

 目盛の 6.E+06 という記号は 6.0×106 です。極大値は途轍もなく大きくなっています。しかしそれだけ大きな値をとっているのも関わらず、指数関数 exp(−x) の減少効果はさらに大きく、値を急速に引き下げて行きます( x = 44 で およそ 0.1 )。
   

2015年10月06日

分子と分母がせめぎ合いながら振幅の均衡を保ちます

≫ 姉妹サイトの VBA 数学マクロ講座もよろしく!

分子と分母がせめぎ合いながら振幅の均衡を保ちます


 31xd(x+1).gif

 これはよく見る形の関数ですね。高校の教科書にも出てきます。 x → -1 + 0( x = -1 に正方向から近づくと -∞ に、 x → -1 - 0( x = -1 に負方向から近づくと +∞ に発散してしまいます。 x → ±∞ で 1 に収束していきます。「こんなありきたりなグラフを載せるなんて、このブログも堕ちたな」と思われないように、もちろん形を変えていきます。分子に sinx をかけると・・・・・・

31xsinxd(x+1).gif

 グラフ全体が波打ちます。x → -1 で発散することには変わりありませんが、問題は振幅の変化です。分子 xsinx の x の部分は振幅を増加させるように関数にはたらきかけますが、分母の x + 1 の部分は逆に振幅を減少させようとします。そのせめぎ合いは見事に均衡を保っていて、グラフを見ても振幅の変化は微妙です。そこで -1 < x の範囲をもっと遠くまで描いて確認してみます。

31xsinxd(x+1)2.gif

 やはりとても微妙なのですが、振幅はほんの少しずつ増加しながら 1 へと近づいて行きます。数式を変形して確認してみると、

数式の変形

 において x → ∞ とすると y → sinx となるわけです。十分遠方では普通の sinx として振る舞うということです。これは x < -1 の場合も同様で、こちらの領域では振幅を少しずつ減少させながら 1 へと近づいていきます。しかしこれも探せばどこかに載っている関数ですので、もう少し変えてみましょう。分母の x のところを logx に変えてみます。

31xsinxd(logx+1)2.gif

 x = 1 / e で分母が 0 となるので、1 / e < x で関数を定義しています。今度は振幅の増大が顕著です。logx は x = 0 付近の勾配が急であり、少しずつ緩やかになっていきます(だから大きな数を扱う時に対数目盛を用いるのです)。つまり x と logx を比較したときに、立ち上がりは logx の効きが勝ち、あとの大部分は x が支配します。上のグラフでは、x = 1 / e からほんの少しの間だけではありますが、 logx はサインカーブを打ち消すような急勾配を形成しています。あとは x の増加とともに、どんどん振幅を増していきます。
 ⇒ なんとなくの数学日記(Excel 2013 が重たいです)  
検索
Excel VBA 数学教室
数学問題集(解答付き)
下剋上算数
ベクトル解析
サッカーマティクス
Excelで学ぶ統計解析
和算的思考力
学び直し
整数論の理論と演習
大人が手こずる算数
東大生の知恵袋
フーリエ変換
インド式秒算術
Excelで学ぶ微分積分
Excel 数学シミュレーション
オイラーの贈物


ファン
最新記事
カテゴリーアーカイブ