>100 Views
December 06, 22
スライド概要
無限小数のうち無理数は、循環小数ではないため、ある正の整数 n が与えられたとき、その無理数の小数第 $n$ 位を言い当てるには、マグレを除けば覚えていない限り不可能であると思われる。もし、小数第 $n$ 位を言い当てる方法があれば、ある意味で、その数を知ったも同然と言って差し支えないだろう。そこで、本論文では、まず小数第 $n$ 位という概念を一般化し、実数の(一般化された)小数第 $n$ 位を求める公式を導出したうえで、その公式を用いて任意の実数の小数第 $n$ 位を求める多項式時間で動かすことが可能な SageMath 言語のプログラムを一つ提示し、そのプログラムが実際に小数第 $n$ 位、或いはそれに近い実数を導くかどうか、またそのプログラムの問題点及び今後の展望について論じる。
正の実数の与えられた正整数番 目の小数点数を近似的に求める 方法について ―小数点数の一般化を通して― 19ca006b 理学部数学科4年 佐藤新
本論文の主旨・目標 • 例えば円周率𝜋などは、すべての小数点の桁の数が分かって いるわけではない。 • 無理数の小数第𝑛位を求める方法があれば、実質その実数を 知っ たも同然である。 • そこで、小数第𝑛位という概念を一般化して、任意の正整数𝑛 について少ない誤差で求める方法を一つ提案し、時間や誤差が 少ないといえる程度の精度を有しているかについて論ず。
無理数の小数第𝒏位を求める方法があると何がお得?(例: 円周率𝝅) 現在までの方法(一例): 円の円周と円に内接する多角形の周の長さ、 外接する多角形の周の長さを比較する ピンポイントで𝑛位だけ知りたくても、 それまでの全ての桁数も求めないといけない 今回発見した方法: 小数第𝑛位の近似値を少ない誤差以下で求め ることが可能 ピンポイントで𝒏位だけ知ることが可能にな る
小数点数の一般化 関数𝑑𝑛 𝑥 を 𝑑𝑛 𝑥 =「𝒙の小数第𝒏位」 で定める。 このとき、関数𝑑𝑛 𝑥 は、𝑑𝑛 𝑥 + 1 10𝑛−1 = 𝑑𝑛 𝑥 を満たす。 周期 1 10𝑛−1 ※例 𝑛 = 2のとき 𝑑2 0 = 0, 𝑑2 0.01 = 1, 𝑑2 0.02 = 2, …, 𝑑2 0.1 = 0
小数点数の一般化 𝑥 𝑑෪𝑛 𝑥 ≔ 𝑑𝑛 2 ⋅ 10𝑛−1 𝜋 と新たに関数𝑑෪𝑛 𝑥 を定めると、これは周期2𝜋: 𝑑෪𝑛 𝑥 + 2𝜋 = 𝑑𝑛 𝑥 + 2𝜋 𝑥 1 𝑥 = 𝑑 + = 𝑑 = 𝑑෪𝑛 𝑥 𝑛 𝑛 𝑛−1 𝑛−1 𝑛−1 𝑛−1 2 ⋅ 10 𝜋 2 ⋅ 10 𝜋 10 2 ⋅ 10 𝜋 図1:𝑦 = 𝑑෪𝑛 𝑥 のグラフ 0 ≤ 𝑥 ≤ 2𝜋
小数点数の一般化 数学的性質:Fourier級数展開 関数𝑓 𝑥 が周期2𝜋で”良い”関数のとき +∞ 1 𝑓 𝑥 = 𝑎0 + 𝑎𝑘 cos 𝑘𝑥 + 𝑏𝑘 sin 𝑘𝑥 2 𝑘=1 と級数展開できる。ただし、𝑎𝑘 , 𝑏𝑘 は 1 2𝜋 1 2𝜋 𝑎𝑘 ≔ න 𝑓 𝑥 cos 𝑘𝑥 𝑑𝑥, 𝑏𝑘 = න 𝑓 𝑥 sin 𝑘𝑥 𝑑𝑥 𝜋 0 𝜋 0
小数点数の一般化 先に紹介したFourier級数展開で次が示せる 命題(本論文の主結果) +∞ 9 2 1 𝑑෪𝑛 𝑥 = + 2 𝜋 𝑘 𝑘=1 −1 𝑘 − 9 𝜋𝑘 𝜋𝑘 𝜋𝑘 + 4 cos cos cos sin 𝑘𝑥 2 2 5 10 ※なぜこのような式が必要か 具体的に無限和(シグマ)を使って一般化することで、その和を途中で 打ち切ることで小数点数の近似値が計算機で求められる
小数点数の一般化 大まかな証明の流れ 1. 2𝜋 𝑎0 = 0 𝑑෪𝑛 𝑥 𝜋 2𝜋 cos 0𝑥𝑑𝑥 = 0 𝑑෪𝑛 𝑥 𝑑𝑥 = 9を証明する 𝜋 2. 2𝜋 𝑎𝑘 = 0 𝑑෪𝑛 𝑥 𝜋 cos 𝑘𝑥 𝑑𝑥 = 0を証明する 3. 2𝜋 𝑏𝑘 = 0 𝑑෪𝑛 𝑥 𝜋 1 1 1 1 sin 𝑘𝑥 𝑑𝑥 = 2 −1 𝑘 −9 𝜋𝑘 2 + 4 cos 𝜋𝑘 +∞ 2 9 2 1 ෪ ⇒ 𝑑𝑛 𝑥 = + 2 𝜋 𝑘 𝑘=1 cos 𝜋𝑘 5 cos 𝜋𝑘 10 sin 𝑘𝑥を証明する −1 𝑘 − 9 𝜋𝑘 𝜋𝑘 𝜋𝑘 + 4 cos cos cos sin 𝑘𝑥 2 2 5 10
小数点数の一般化 定義 実数𝑥の一般化された小数第𝑝位𝑑𝑝 𝑥 +∞ 9 2 1 𝑑𝑝 𝑥 = + 2 𝜋 𝑛 𝑛=1 −1 𝑛 − 9 𝜋𝑛 𝜋𝑛 𝜋𝑛 + 4 cos cos cos sin 2 ⋅ 10𝑝−1𝜋𝑥 2 2 5 10 精度𝑙の小数第𝑝位𝛿𝑝 𝑙; 𝑥 𝑙 9 2 1 𝛿𝑝 𝑙; 𝑥 = + 2 𝜋 𝑛 𝑛=1 −1 𝑛 − 9 𝜋𝑛 𝜋𝑛 𝜋𝑛 + 4 cos cos cos sin 2 ⋅ 10𝑝−1𝜋𝑥 2 2 5 10
𝜹𝒑 𝒍; 𝒙 を計算するプログラ ム Input: 精度𝑙と小数点を求めたい実数𝑥と小数第何位を求めるかの値𝑝 Output: 𝑥の精度𝑙の小数第𝑝位delta(𝑙, 𝑥, 𝑝)= 𝛿𝑝 𝑙; 𝑥 if 𝑙 = 1 then 9 2 2 𝜋 return + ⋅ −5 sin 2 ⋅ 10𝑝−1 𝜋𝛼 else term ← 2 𝜋𝑙 ⋅ −1 𝑙 −9 2 + 4 cos 𝜋𝑙 2 cos 𝜋𝑙 5 cos 𝜋𝑙 10 sin 2 ⋅ 10𝑝−1 𝜋𝑙𝑥 return delta 𝑙 − 1, 𝑥, 𝑝 +term end if 実は線形時間(結構早い)→時間は大丈夫そう
𝜹𝒑 𝒍; 𝒙 を計算するプログラ ム 円周率の小数第0~18位 精度は2000 言語はSageMath 𝜹𝒑 𝒍; 𝒙 に最も 近い整数 円周率の桁数の真 の値 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 2 3 8 9 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 多くがほとんど真の値になっているが、特に第15位以降は誤差が大きい 扱える小数点の桁数などに起因していると考えられ、特に問題はないだろう
今後の展望と課題 • 大きい自然数𝑛について小数第𝑛位を求めようとすると大きな誤 差が出てしまうor計算できなくなってしまう→少なくとも累乗 が出ない関数を構築したい。 • 小数点の一般化をしたので、一般の実数𝑟について小数第𝑟位が どのような意味をもつか性質をもつか。
ご清聴ありがとうございました 𝛿 𝑙; 𝑥, 𝑝 を計算するプログラム公開中 https://colab.research.google.com/drive/1jcaVli7dR_9t5KlWIqksrfw8iec953HU?usp=sharing Mail: [email protected]