ランダウの記号と漸近展開の2通りの求め方(漸近展開の合成)

今回は大学初年度の数学で登場するランダウの記号と漸近展開について扱います。漸近展開を簡単に求める方法に関する備忘録です。



※漸近展開の計算のコツについては「合成関数の漸近展開を簡単に求める方法」も参考にして下さい!

 

 ランダウの記号のおさらい

ランダウの記号とは x=0x= 付近での関数の挙動を評価する記号です。オーダーの評価にあたっては以下のことに注意しましょう。

・増減量が微小な項は無視する

・係数は無視する(オーダーにのみ注目する)

以下、表記法の意味について大雑把に説明していきます。

 

ビッグオー(ラージオー)表記:f(x)=O(g(x))

これは

関数f(x)の収束のスピードがg(x)と同じくらいか、それより遅い

という意味です。より正確には、

x>x0 なら |f(x)|C|g(x)| となるような定数x0Cが存在する

ということを意味しています。ビッグオー記号は以下のように使います。

使用例

 

2x3=O(x3)  (x0)

 

52x6+x5+1000x+4=O(x6)  (x0)

 

ex=1+x+x22+O(x3)  (x0)

 

なお、この定義に基づけばx3+x2+1=O(x4)などという評価の仕方も間違いではありません。

 

スモールオー(リトルオー)表記:f(x)=o(g(x))

x=a 近傍で定義された関数f(x)g(x)に対して、limxaf(x)g(x)=0が成り立つとき、f(x)=o(g(x))   (xa)と書きます。

x0 の場合を考えることが多いので、単にf(x)=o(g(x))とだけ書かれることがあります。これは

x0 のときf(x)0に近づくスピードはg(x)よりも速い

ということを意味しています。つまりx=a 近傍において、f(x)g(x)に比べて無視できるほど小さい」ということを意味します。スモールオー記号は以下のように使います。

使用例

 

2x3=o(x)  (x0)

 

2x3=o(x2)  (x0)

 

cosx=1x22+o(x2)  (x0)

 

例えばlimx0sinxxx2=0なので、sinxx=o(x2)   (x0)と書き表せます。

 

 漸近展開のおさらい

ある関数f(x)に対して x=a の近くで定義された関数列(漸近関数列){g0(x),g1(x),g2(x),} があってf(x)=k=0nckgk(x)+Rn(x)(ただし limxagk+1(x)gk(x)=0limxaRn(x)gn(x)=0)と表すとき、f(x)漸近展開すると言います。

ここで関数列について、任意の負でない整数nについてgn+1(x)=o(gn(x))   (xa)が成り立っているとき、この関数列を漸近関数列と呼びます。ただし大抵はxの多項式で展開することになるので、実用上はあまり難しく考えなくて良いと思います。


漸近展開をマクローリン展開に応用してみます。xa の部分を x0 とすれば、漸近展開の表式は有限次の項で打ち切られたマクローリン展開に相当します。テイラー展開やマクローリン展開における剰余項をランダウの記号で表します。

漸近展開

 

ランダウの記号を用いてf(x)=k=0nf(k)(0)k!xk+o(xn)  (x0)と表すことを漸近展開という。

 

これにより例えば、log(1+x)=x12x2+o(x2)のように表すことができます(x2の項で打ち切った式)。

もちろんラージオー記号も使うことができて、これを使うとlog(1+x)=x12x2+O(x3)となりますが、マクローリン展開における剰余項は微小なので普通はスモールオー記号が用いられます。

大雑把な印象としては

ラージオー記号O(x)は同程度のオーダーの項を含むこともある

スモールオー記号o(x)は確実に小さいオーダーの項のみからなる

という捉え方でOKです。漸近展開など微小量を扱う場合は、ラージオー記号O(x)もスモールオー記号o(x)も、ともに微小項を上から押さえるために使われる記号(※注)です。

※注:ここでは考えていませんが、O(x)o(x)は増大する項を上から押さえるために使われる場合もあります。詳しくはコメント欄の投稿も参照して下さい。


それでは実際に漸近展開を求めてみましょう!

 

 漸近展開の求め方①:愚直に微分

ここではf(x)=esin2xx4の項まで漸近展開してみます。

まずは愚直に微分していく方法で漸近展開を行ってみます。

f(1)(x)=2esin2xcos2x

f(2)(x)=4esin2x(cos22xsin2x)

f(3)(x)=8esin2xcos2x(cos22x3sin2x1)

f(4)(x)=16esin2x{sin2x(3sin2x+1)+cos42x2(3sin2x+2)cos22x}

となるので、f(1)(0)=2f(2)(x)=4f(3)(x)=0f(4)(0)=48 と求められ、これよりesin2x=1+21!x+42!x2+0484!x4+o(x4) esin2x=1+2x+2x22x4+o(x4)を得ます。

この方法はごく一般的な方法ですが、計算量がやや多く、ケアレスミスをしてしまう可能性があります。

 

 漸近展開の求め方②:漸近展開を合成

今度は「漸近展開を合成する」という別の方法で求めてみます。

exsin2xx4の項まで漸近展開はそれぞれ

ex=1+x+12x2+16x3+124x4+o(x4)

sin2x=(2x)16(2x)3+o(x4)

となりますので、esin2xを求めるためにはsin2xの展開式をexの展開式に代入してx4の項まで計算すれば良さそうです。

ということで早速代入してみましょう。計算途中でx5以上の項が出てきますが、これはすべてo(x4)にまとめながら計算を進めていきます。

     esin2x=1+{(2x)16(2x)3+o(x4)}         +12{(2x)16(2x)3+o(x4)}2            +16{(2x)16(2x)3+o(x4)}3               +124{(2x)16(2x)3+o(x4)}4+o(x4)={1+2x43x3+o(x4)}+12{4x2163x4+o(x4)}          +16{8x3+o(x4)}+124{16x4+o(x4)}=1+2x43x3+2x283x483x3+43x3+23x4+o(x4)=1+2x+2x22x4+o(x4)

この方法は見た目こそ複雑そうに見えますが、括弧内をすべて計算する必要は無いので、実際の計算はそこまで大変ではありません。合成関数の漸近展開を求める際は非常に有効です。今回は4次の項までの展開ですが、この方法だとそれ以上の高次の項まで比較的簡単に求められます。

※漸近展開の計算のコツについては「合成関数の漸近展開を簡単に求める方法」も参考にして下さい!

 

 演習例題

以下の与えられた関数f(x)=に対して、x4の項までの漸近展開を求めてみましょう。上記2通りの方法を比較してみて下さい!微分計算の答え合わせに使えるアプリはこちらの記事で紹介しています!

(1)f(x)=1sin2x+1

 

» 答え合わせ

4次までの漸近展開はf(x)=1x2+4x43+o(x4)です。

 

1x2+1sinx の合成関数

 

» 閉じる

(2)f(x)=cos2x+x2

 

» 答え合わせ

4次までの漸近展開はf(x)=1x22+5x424+o(x4)です。

 

xcos2x+x2 の合成関数

 

» 閉じる

(3)f(x)=log(2+sinx)

 

» 答え合わせ

4次までの漸近展開はf(x)=log2+x2x28x324+5x4192+o(x4)です。

 

log(2+x)sinx の合成関数

 

» 閉じる


 

合成関数の漸近展開を求める際、煩雑な微分計算が苦手な方や、より速く計算を済ませたい方は漸近展開の和や積、代入などで求めてしまうのが良いでしょう。そのためにも、基本的な関数のマクローリン展開の表式は事前に覚えておきたいですね。なお、漸近展開の合成が数学的に正当な操作であることはきちんと証明することが可能です。

(2020/08/06 書式を一部変更)
(2021/07/29 表現を一部修正)
(2021/12/20 表現を一部修正)

“ランダウの記号と漸近展開の2通りの求め方(漸近展開の合成)” への17件の返信

  1. スモールoのところの

    x→0のときg(x)が0に近づくスピードはf(x)よりも速い

    という文は

    x→0のときf(x)が0に近づくスピードはg(x)よりも速い

    の間違いではないですか?

    1. 大隈直人 さん

      初めまして。管理人の pencil です。
      コメント頂きありがとうございます。

      ご指摘の通り、スモールオーについては後者の意味が正しいです。
      その他の不自然な表現も修正しました。ご指摘に感謝します。

      今後とも当サイトをよろしくお願いします。

  2. 漸近展開について調べていて、参考にさせていただいています。

    ビッグオーの使用例の指数関数で O(x^3) の部分の意味がよく分かりません。

    O(x^3)は、発散のスピードが x^3 と同じくらいか、それより遅いということでしょうか?

    1+x+x^2/2 のあとには発散スピードが x^3 より速い項が続きそうな気がするのですが、ビックオーの使い方がよく分からないのでお教えください。

    よろしくお願いします。

    1. いえやす さん

      初めまして。管理人の pencil です。
      コメント頂きありがとうございます。また、お返事が遅くなってしまい申し訳ありません。

      以下に管理人自身なりの説明を書きましたので、疑問解消の一助になれば幸いです。

      ~~~~~

      まず、漸近展開の際にはビッグオーもスモールオーも微小項を評価するために用いられています。例としてf(x)=x+x2+x3+x4という関数f(x)を考えてみます。いま、limx0f(x)=0 です。これを2次の項まで、何らかの別の関数で評価したいとします。

      xが十分に小さい範囲では3次以上の項(x3+x4)は「ゴミ」のような大きさしかないので、代わりにこれをO(x3)、もしくはo(x2)と表記します。つまり関数f(x)f(x)=x+x2+O(x3)またはf(x)=x+x2+o(x2)という2通りの評価の仕方があります。

      このビッグオーO(x3)は【収束のスピードがx3と同じくらいか、それより速い】という意味を表しています。
      一方でスモールオーo(x2)は【収束のスピードがx2より速い】という意味を表しています。
      ここでは x3+x4 という x=0 の近傍において微小となる部分をO(x3)で評価するかo(x2)で評価するかという違いしかありません。

      ~~~~~

      さて、ここまでは「漸近展開」の話で、関数が「収束」する場合の取り扱いについて述べたものです。
      記事を改訂してしまったので今の版の文章には残っていませんが、特にビッグオー記号は「発散」する関数のオーダーを見積もる場合にも使われることがあります。(これが古い版のビッグオー記号の解説がややこしくなっていた原因だと思います…)

      アルゴリズムの計算量のオーダーが大体どのくらいかを示す際に、ビッグオー記号が登場することがあります。(スモールオー記号がこのような使い方をされることは(定義上は可能ですが)ほぼありません)
      例えば、ある正の整数nを素因数分解するアルゴリズムとして、n以下のすべての素数で割っていく「試し割り法」というものがあります。試し割り法の計算量のオーダーはO(n)と表現されます。
      これは【計算量がnと同じくらいか、それより少ない】という意味を表しています。

      このようにビッグオー記号は中身が0に近付かない場合にも使われるのでややこしいのですが、基本は【大きく見積もっても大体このくらい】というニュアンスで使われています。

      ~~~~~

      具体的な数字で考えると分かり易いかもしれません。もう一度、関数f(x)を考えてみます。

      x0.1とか0.001とか0に近付いていくとき、x3+x4 の大きさは大体x3くらいになりますよね。これをO(x3)という記号で代表させているというイメージです。

      逆にx10000とか1010とかどんどん大きくなるとき、x3+x4(というより関数f(x)そのもの)の大きさは大体x4くらいと見積もられます。x4の項がオーダーに効いてくるので、このときはO(x4)で代表させなければなりません。

      つまり、f(x)=x+x2+O(x3)  (x0)f(x)=O(x4)  (x)と表記すべきだということです。
      培風館の教科書でもそうですが、漸近展開では基本的に x0 の場合のみを考えるので、xの動き(発散or収束)を明示する必要は無いように感じられます。しかし記号の解釈に関わる情報を落とすのは厳密には不適切と言えます。

      ~~~~~

      このようにランダウの記号には、中身が発散するのか収束するのかによってその都度、記号の解釈を変えなければならないややこしさがあります。恐らくこれが混乱の元になっていたのだと思います。

      極限を用いた定義に忠実にランダウの記号を使っていれば混乱することは無いはずですが、微小項の評価だけでなく増大する項の評価にもランダウの記号が使われることがあるというのは覚えておいて下さい。

  3. ご丁寧な解答ありがとうございます。

    ビックOの使い方がよく分かりました。
    ベッセル関数の漸近級数(発散する場合)を考えていたので、ビックOの使い方で混乱していたようです。

    発散する場合と収束する場合では、その解釈を変えなければならないことがよく分かりました。

    ありがとうございました。

  4. f(x) = o(g(x)) の使用例の下の lim の式
    = 0
    でしょうか?
    「lim_{x→0} \frac{sin(x) – x}{x^2} なので」
    では意味が分かりません。。。

    1. 通りすがり さん

      初めまして。管理人の pencil です。
      コメント頂き、ありがとうございます。

      該当箇所について「=0」が抜け落ちているのを確認し、修正しました。
      ご指摘に感謝申し上げます。

      他にも誤植を見逃してしまっている部分があるかと思います。
      もし発見された際は、お手数ですがご連絡下さいますと大変有難いです。

      今後とも当サイトを宜しくお願いいたします。

  5. 漸近展開を関数の合成で求める方法に関して、途中式付きで詳しく解説されているのはとても珍しいありがたい記事だと思っております。

    ただ、気になった点がありました。
    「漸近展開の求め方②:漸近展開を合成」の箇所のsin2xの漸近展開の1項目は(2x)^2ではなく2xかと思います。
    また、それに伴って後ろの途中計算も全て修正が必要になりそうでした。

    せっかく良い記事ですので、お時間の許す際には、ここも直していただけたらと思っておりました。
    よろしくお願いいたします。

    1. siruku6 さん

      初めまして、管理人の pencil です。
      嬉しいコメントありがとうございます!

      ご指摘の箇所について確認の上、修正いたしました。
      他にも誤植等あるかもしれません。見つけた際はお手数ですが、今回のようにご連絡いただけますと幸いです。
      ご協力に感謝申し上げます。

  6. 初めまして。大変丁寧な解説で参考にしています。
    例題e^sin2xの漸近展開のやり方2で{}^2を展開する時に4乗の項が多分抜け落ちています。最終的な式では復活しているみたいなので結果は同じだと思います。

    1. 抹茶 さん

      初めまして、管理人の pencil です。
      当サイトをご覧いただき、ありがとうございます。

      ご指摘の通り、途中式に不備がありましたので修正しました。
      ご協力に感謝いたします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©Copyright 2017-2025 理系のための備忘録 All Rights Reserved.