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

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

指数関数(3)

今度はプログラムを書いてもらいます。プログラムを書いてもらう方がちゃんとできることが多いという印象です。プログラムを書くことができて、そのプログラムが停止するならば、証明ができたということになります。以下のように入力しました。

連続の公理(上に有界な単調増加数列は収束する)から、任意の正の実数  a b に対して、 na > b を満たす自然数  n を求めるプログラムを C# で書いてください

連続の公理を利用して、任意の正の実数  a b に対して  na > b を満たす自然数  n を求める C# プログラムを以下に示します。

using System;

class Program
{
    static void Main(string[] args)
    {
        double a = 2.5; // a の値を設定する(任意の正の実数)
        double b = 10;  // b の値を設定する(任意の正の実数)

        int n = FindN(a, b);
        Console.WriteLine($"For a = {a} and b = {b}, n should be {n}");
    }

    static int FindN(double a, double b)
    {
        int n = 1;
        while (n * a <= b)
        {
            n++;
        }
        return n;
    }
}

このプログラムは、与えられた  a b に対して、 na > b を満たす自然数  n を求めます。  n を 1 から順番に増やしながら、 na b を超えるまでループします。  na > b を満たす最小の  n を見つけた時点でその値を返します。

これは連続の公理を使っているとは言えないです。

このプログラムは停止しますか

はい、このプログラムは停止します。

プログラムは、 n を 1 から順に増やしながら、 na b を超えるまでループします。このループは有限回数で停止します。なぜならば、 n を 1 から始め、増加させながら  na の値が  b を超えるまでループするため、 n の最大値は  \frac{b}{a} であり、 n がこの値を超えることはないからです。

したがって、このプログラムは停止します。

これはこれで正しいです。