質問<3198>2006/5/23
from=ばんちょう
「関数のグラフ(微分)」


次の関数のグラフをかけ。
①y=log(1+e^x)
②y=x^2/3+(x-1)^2/3     (指数が2/3)

グラフの問題なのでまず導関数を求めてみたのですが、
導関数=0になるXが存在せず、グラフが描けません。
この対数関数と指数関数のグラフを描くためには、
どのような計算をしていったらよいのか教えてください。

★希望★完全解答★

お便り2006/6/14
from=亀田馬志


ワタシは数学の事はサッパリ分からないんで何とも言えないのですが(笑)、グラフを描く
事だけは可能です。
僕はテキトーなんで(笑)、数学的な解法は他のお方にお任せするとして(笑)、取りあえず
コンピュータ上でグラフを描いてみる方法だけお教え致しましょう(と言うのも未解決問
題が多過ぎるので、取りあえず減らした方がイイと思うからです)。
以下はフリー数式処理ソフトMAXIMA(ウィンドウズ版)でのグラフ描画方法です。
まずはMAXIMAをダウンロードしてください。

MAXIMAをダウンロードしたら、デスクトップ上にMAXIMAのアイコンが
出来る筈です。それをダブルクリックして下さい。
そうすると次の画面が現れる筈です。

Maxima 5.9.3 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1)

これが起動成功と言う印です。また(%i1)は入力待ち、と言った意味です(iは恐らく
input"入力"と言う意味)。

さて、MAXIMA出の描画コマンドは次のようなモノです。

plot2d(描画したい関数,[変数x,下限,上限]);

このように;(セミコロン)まで入力します。以上です。
ではちょっとやってみましょう。

>①y=log(1+e^x)のグラフをかけ。

入力待ち記号(%i1)の後に次のように入力します。

(%i1) plot2d(log(1+exp(x)),[x,-10,10]);

今回は取りあえず-10≦x≦10の範囲で描画してみましょう。この指定が[x,-10,10]の部分です。
以上のように;(セミコロン)まで入力し終わったらリターンキーを押します。そうすると、
MAXIMAがグラフを描画してくれる筈です。
同様に、

②y=x^2/3+(x-1)^2/3のグラフをかけ。(指数が2/3)

も、

(%i2) plot2d(x^(2/3)+(x-1)^(2/3),[x,-10,10]);

で描画してくれる筈です。

なお、下記に、MAXIMAでの描画グラフをお届けします。
確かに微分では描画できないような感じのグラフになっていますね。

問1


問2



お便り2006/9/8
from=maro


質問<3198>の問題ですが
①y=log(1+e^x)の答えとされているグラフがy=e^xに見えて仕方がありません
導関数=0になるので何とも説明ができないのですが
どのように考えれば、こんなグラフになるのでしょうか?
②y=x^2/3+(x-1)^2/3の答えとされているグラフをみると
xの値によって異なる計算式に変化するということでしょうか?
ばんちょうさんの質問と同じですが、どのような計算(考え方)を
していったらいいのか教えてください


お便り2006/9/11
from=平 昭


 まず、グラフを描くときに何を考えたらよいか、を考えてみましょう。
①微分して増減を調べる。
  これは当然ですね。ただし、導関数が0になる点があるとは限りません。
  ずっと増え続ける関数や減り続ける関数もたくさんあります。
  y=xを考えればすぐわかるでしょう。
  2階微分を考えれば、上に凸のグラフか下に凸かもわかります。

②原点の近くでどんな値をとるか。
  これは、f(0)やf(1)など、関数にあわせて分かりやすい値を考えましょう。

③xが無限大や、マイナス無限大になったらf(x)の値はどうなるか
  無限大になる場合、
  マイナス無限大になる場合、
  ある極限値に収束する場合
  (y=e^xでx→-∞の時など)、どれにもならない場合
  (f(x)=sin(x)とか)などがあります。
  ほかに、一定の値には近づかないけれど、一定の関数には近づく、というのも
  あります。f(x)=x+1/xは、x→∞のときf(x)→xですね。

 さて、これを踏まえて問題を解きましょう。

y=log(1+e^x)=f(x)とすると

dy/dx=e^x/(1+e^x)で、yは常に増加です。
 2階微分して符号を調べるか、そうしなくても、
a>b→e^a/(1+e^a)>e^b/(1+e^b)を考えれば、グラフは下に凸だと分かります。
 上の式をみると、常に0<dy/dx<1で、x→∞のときdy/dx→1、
x→-∞のときdy/dx→0も分かりますね。
 また、x→∞の時、y→log(e^x)=x
       x→-∞の時、y→log(1)=0
(こういう場合、x軸をx→-∞の時のf(x)の漸近線、
直線y=xをx→∞の時のf(x)の漸近線と言います。)
 さらに、log(1+e^x)>0と、log(1+e^x)>log(e^x)=xを考えると、求めるグラフは
x軸より上側で、かつy=xのグラフより上側にあります。 
もう一つf(0)=log2です。
 このくらい考えると、亀田さんがコンピューターで描いてくださったようなグラフが
かけます。

 次に
y=x^(2/3)+(x-1)^(2/3)=f(x)について。

 このグラフを描く前にまず
y=x^(2/3)=g(x)
のグラフを考えましょう。
微分すると
dg(x)/dx=(2/3)・x^(-1/3)=(2/3)・1/x^(1/3)
で、これはx=0で不連続です。
そしてx→+0ならdg/dx→∞、x→-0ならdg/dx→-∞ですね。

 それでもgそのものは連続関数で、x<0でdg/dx<0、
x>0でdg/dx>0ですから、gはx=0で極小値をとります。
値はg(0)=0ですね。
グラフを描けば、原点で尖った形になります。

 2階の導関数を考えると、gは上に凸であることがわかります。
さらに、x^(2/3)=(xの3乗根)の2乗=(-xの3乗根)の2乗
ですから、g(x)=g(-x)で、
gのグラフはy軸について対称になります。
そしてx→∞のときも→-∞のときも、g→∞です。
 グラフは全体としてⅤ字型に近く、Ⅴの下の尖った点が原点。左右の線は、
原点から遠ざかるほど傾きがゆるやかになってゆく曲線になります。
これだけ準備すると、
f(x)=g(x)+g(x-1)のグラフも描けそうです。
 つまりは、gのグラフと、それを右に1だけずらしたグラフを描いて足し合わせれば
いいわけです。

ここで、x-1/2=αとおくと
 f(x)
=f(α+1/2)
=g(x)+g(x-1)
=g(α+1/2)+g(α-1/2)
ここでg(x)=g(-x)を思い出せば
 g(α+1/2)+g(α-1/2)
=g(-α-1/2)+g(-α+1/2)
=f(-α+1/2)で、fがx=1/2について対称なことが分かります。

(計算が面倒なようですが、左右対称のグラフと、それを右にずらしたグラフを足すの
ですから、また左右対称になるのは当たり前。ただし、対称の軸は、グラフをずらした
長さの半分だけ右にずれます。上の式は、それを計算で示しただけです。)

 さて、x→+0でdg/dx→∞、x→-0でdg/dx→-∞でしたから、
dg(x-1)/dxについては
 x→+1でならdg(x-1)/dx→∞、x→-1ならdg(x-1)/dx→-∞
となりますね。
 ということは、df/dx=dg(x)/dx+dg(x-1)/dxの値も
x→+0で→∞、x→-0で∞
x→+1で→∞、x→-1で→-∞
となり、
fのグラフは、0と1で下向きに尖った形をしていて、
f(0)とf(1)は極小値になります。
値は、f(0)=f(1)=1と簡単に分かりますね。

 さらに、df/dxを計算してみると、
x=1/2でdf/dx=0(対称性を思い出せば当たり前です)
1/2<x<1でdf/dx<0、x>1でdf/dx<0
となります。
そしてx→∞でf→∞は明らか。
x<1/2のことは、対称性から考えればよいわけです。
一つ注意したいのは、f(1/2)が極大値になること。
値は2・(1/2)^(2/3)
つまり、1/2の 2/3乗の 2倍です。

 これで、亀田さんが出して下さったようなグラフになりますね。


お便り2006/9/12
from=亀田馬志


>>平 昭さん

丁寧な解説ありがとうございます。
即レスしたかったんですが、現在プログラミング言語、Lisp(Maximaを組んでる言語)
の勉強をしている為、時間が取れません。
僕自身にも勉強になる解説なので、ありがとうございます。

>>maroさん

>y=log(1+e^x)の答えとされているグラフがy=e^xに見えて仕方がありません

数学的な説明は平 昭さんの解説を参考になさってください。
ただ、「見える/見えない」と言う話になると多分に直感的な話になってきます。
だったら、「感覚的に納得するには」どうすればいいのか?
これもやっぱり実際に描画しちゃうに越した事が無いでしょうね。
MAXIMAでは二つの関数を同平面に描画する事が可能です。
それで実際見比べてみればy=log(1+e^x)のグラフとy=e^xのグラフが「どの程度違う
のか」ハッキリ認識する事が可能でしょう。
MAXIMAでの2つのグラフの同時描画は
次のようなコマンドによって行われます。

plot2d([関数1,関数2],[変数x,下限,上限],[変数y,下限,上限])

です。これは最初に提示したコマンドの応用ですんで、そんなに難しくはないでしょう。
具体的にはプロンプト(%i1)の後に次のように入力します。

(%i1)plot2d([log(1+exp(x)),exp(x)],[x,-10,10],[y,0,12]);

今回は描画範囲を-10≦x≦10、0≦y≦12の範囲としました(特に数字に根拠はありません。
自由に設定していただいて結構です)。
そしてリターンキーを押して下さい。以下にMAXIMAで描いたグラフを
掲げておきます。

「指数関数的に増加する」と言ったイメージが掴めたでしょうか?log(1+exp(x))は
exp(x)程増加率は大きくないんです。つまり、xによる微分操作を敢えてDと表記すると、
xが大きくなっていけば、

D{exp(x)}>>>D{log(1+exp(x))}

の関係が成立してる、って事です。
(微分係数を計算してみて、例えばExcelなんかで両者に同じ正の整数でも適当に代入して
調べてみればわかると思います。傾き=増加率が全然ケタ違いだ、って事を知る事になるで
しょう。)

x D{exp(x)} D{log(1+exp(x))} D{exp(x)}/D{log(1+exp(x)}
0 1 0.5 2
1 2.718281828 0.731058579 3.718281828
2 7.389056099 0.880797078 8.389056099
3 20.08553692 0.952574127 21.08553692
4 54.59815003 0.98201379 55.59815003
5 148.4131591 0.993307149 149.4131591
6 403.4287935 0.997527377 404.4287935
7 1096.633158 0.999088949 1097.633158
8 2980.957987 0.99966465 2981.957987
9 8103.083928 0.999876605 8104.083928
10 22026.46579 0.999954602 22027.46579
xが大きくなればlog(1+exp(x))の傾きはほぼ1に近づきますが(と言うことは、 直線に限りなく近づいている、と言う事です)、exp(x)の微分係数はお構いなしに 増えまくってますね(笑)。これを「実感」して下さい。その為のコンピュータです。 昔はこう言う描画がすぐ行えなくて、その為に「関数の概要を知る方法」として微分法が 発達したのが少なくとも一つの側面なんですが、現在の学生にはコンピュータがあります。 是非ともこう言う便利ツールを弾力的に活用して、昔の人達/学生達より遥かに多角的な 観点で、数学を克服して行って欲しいです。