エレファント・ビジュアライザー調査記録

ビジュアルプログラミングで数式の変形を表すことを考えていくブロクです。

指数関数(1)

この例は自然数の指数の定義を拡張して複素数の指数関数を定義するにはテイラー展開を使うのが簡単だということを示すプログラムを作成するのが目標です。この例はChatGPTが流れはだいたい合っている証明を返してくれます。このような例についても見ていきます。コピーのボタンを押すと LaTeX の形式でコピーできることがわかりました。今後はこのようにします。

まず以下の問題を入力してみます。

 x が実数のとき  \displaystyle \sum_{n=0}^{\infty}\frac{x^n}{n!} が収束することを証明してください

以下のような答えが返ってきました。

指数関数  e^xテイラー展開は次のようになります:

 \displaystyle e^x = \sum_{n=0}^{\infty}\frac{x^n}{n!}

ここで、各項  \displaystyle \frac{x^n}{n!} の収束性を考えます。

収束するための1つの方法は、比較判定を用いることです。具体的には、任意の正の整数  N に対して、 n > N のとき、次の不等式が成り立つことを示せば十分です:

 \displaystyle \left| \frac{x^n}{n!} \right| < \frac{M}{a^n}

ここで、 M は正の実数であり、 a は1より大きな実数です。このとき、級数は絶対収束し、従って収束します。

指数関数  e^x は任意の実数  x において収束するため、 e^xテイラー展開 x が実数の場合に収束します。

これは  a M の値がわからないので聞いてみます。

 a を決めたとき  M の値は何にすれば良いですか

これはうまくやってくれませんでした。

 a > 1 を決めると、 a |x| < k を満たす自然数  k が存在するとします。このとき  M の値は何にすれば良いですか

これはうまくやってくれませんでした。

 n < k のとき
 \displaystyle \frac{(a|x|)^n}{n!} < \max{\{1,k^k\}}
 n \ge k のとき
 \displaystyle \frac{(a|x|)^n}{n!} = \frac{(a|x|)^k}{k!} \left( \frac{a|x|}{k+1} \cdot \frac{a|x|}{k+2} \cdots \frac{a|x|}{n} \right) < k^k
であるから  M = \max{\{1,k^k\}} とおくと
 \displaystyle \left| \frac{x^n}{n!} \right| = \frac{(a|x|)^n}{n!} \cdot \frac{1}{a^n} < \frac{M}{a^n}
が成り立ちます。これはやってくれません。

プログラムを書いてもらいます。

 a > 1 を決めると、 a |x| < k を満たす自然数  k が存在するとします。このとき  M の値は何にすれば良いかを調べるプログラムを C# で書いてください

以下のように返ってきました。これは違います。

与えられた条件  a |x| < k を満たす自然数  k が存在する場合、 M の値は  a^k に等しくなります。以下は、 M の値を計算する C# プログラムの例です。

using System;

class Program
{
    static void Main(string[] args)
    {
        double a = 2; // a の値を設定する(1より大きい実数)
        double x = 1; // x の値を設定する

        double M = CalculateM(a, x);
        Console.WriteLine($"For a = {a} and x = {x}, M should be {M}");
    }

    static double CalculateM(double a, double x)
    {
        // a^k を計算する
        double ak = a;
        int k = 1;
        while (ak * Math.Abs(x) >= k)
        {
            ak *= a;
            k++;
        }
        return ak;
    }
}

このプログラムは、与えられた  a x に対して、 M の値を計算します。 a^k が条件  a |x| < k を満たす最小の  k となります。