特許第5959661号(P5959661)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ナタラジャン ムルゲサンの特許一覧

<>
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5959661
(24)【登録日】2016年7月1日
(45)【発行日】2016年8月2日
(54)【発明の名称】n乗根の数値アルゴリズム
(51)【国際特許分類】
   G06F 7/552 20060101AFI20160719BHJP
【FI】
   G06F7/552 B
【請求項の数】2
【全頁数】17
(21)【出願番号】特願2014-540563(P2014-540563)
(86)(22)【出願日】2011年11月11日
(65)【公表番号】特表2015-501966(P2015-501966A)
(43)【公表日】2015年1月19日
(86)【国際出願番号】IB2011002671
(87)【国際公開番号】WO2013068777
(87)【国際公開日】20130516
【審査請求日】2014年9月5日
【新規性喪失の例外の表示】特許法第30条第1項適用 Natarajan Murugesan,A.M.S.Ramasamy,Journal of FundamentalSciences,Vol.7, No.1, 2011年5月20日
(73)【特許権者】
【識別番号】514116866
【氏名又は名称】ナタラジャン ムルゲサン
(74)【代理人】
【識別番号】100118913
【弁理士】
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100112737
【弁理士】
【氏名又は名称】藤田 考晴
(74)【代理人】
【識別番号】100136168
【弁理士】
【氏名又は名称】川上 美紀
(72)【発明者】
【氏名】ナタラジャン ムルゲサン
(72)【発明者】
【氏名】ラマサミー アイヤトゥライ
【審査官】 片岡 利延
(56)【参考文献】
【文献】 Natarajan Murugesan, A.M.S. Ramasamy,A numerical algorithm for nth root,[online],2011年 5月20日,URL,http://www.mjfas.utm.my/index.php/mjfas/article/view/207/465
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/552
(57)【特許請求の範囲】
【請求項1】
正の実数Mのn乗根であって10k−1+10k−2k−1+…+aで表されるn乗根を求める計算機であって、
前記n乗根の桁数kを決定する第1の手段と、
前記n乗根の10k−1の位の値aを決定する第2の手段と、
前記n乗根の10k−2の位の値ak−1を決定する第3の手段と、
前記n乗根の10i−1の位の値aを、iをk−2から1まで1ずつデクリメントしながら順番に決定する第4の手段とを備え、
前記第1の手段が、前記実数Mを一の位から開始してサイズnのブロック(ただし、左端のブロックのサイズはn以下)に分割し、ブロックの総数を前記n乗根の桁数kに決定し、
前記第2の手段が、k個の前記ブロックの内、前記左端のブロックの数字Bを得て、a≦Bを満足する最大の値a(1≦a≦9)を決定し、
前記第3の手段が、実数Mk−1=M−10(k−1)nを定義し、実数Mk−1を一の位から開始してサイズnを有する(k−2)個のブロック(ただし、左端のブロックのサイズはn以上)に分割し、前記左端のブロックの数字Bk−1(Mk−1)を得て、下式(1)および(2)に基づいてVk−1k−1≦Bk−1(Mk−1)を満足する最大の値Vk−1(0≦Vk−1≦9)を値ak−1として決定し、
前記第4の手段が、実数M=Mi+1−10i×ni+1i+1を定義し、実数Mを一の位から開始してサイズnを有する(i−1)個のブロック(ただし、左端のブロックのサイズはn以上)に分割し、前記左端のブロックの数字B(M)を得て、下式(1)および(2)に基づいてV<B(M)を満足する最大の値V(0≦Vk−1≦9)を値aとして決定する(ただし、下式(1)および(2)において、k−1=iとする。)計算機。
【数1】
【請求項2】
前記第1の手段が、前記実数Mに10hnを乗算し、乗算後の実数M×10hnの整数部分を前記サイズnのブロック(ただし、左端のブロックのサイズはn以下)に分割し、
前記第1の手段、第2の手段、第3の手段および第4の手段によって得られた実数M×10hnのn乗根の整数部分である10k−1+10k−2k−1+…+aを10で除算して、正の実数Mのn乗根を小数点以下第h位まで計算する第5の手段を備える請求項1に記載の計算機。
【発明の詳細な説明】
【背景技術】
【0001】
1.緒言
nを1より大きい任意の自然数とする。現在、所与の正の実数に関して正の実数のn乗根を求めるのに、いくつかの方法が利用可能である。歴史的に言えば、紀元前1800年に、ある数の平方根を開平するバビロニアン・メソッド(Babylonian method)が開発された。根の評価は、Napierが導入した対数の概念を適用して行うことができる(非特許文献1参照)。ただし、対数法では、切り捨て誤差があるため、正確な結果が得られない。確認されているのは、従来の長除開平法(long−division square root method)が正確である、ということである。ある数の平方根を求めるアルゴリズムとしては、R.G.Dromeyが発表したものがある(非特許文献2参照)。有理数による2次無理数の近似およびペル方程式の適用による平方根の開平に関しては、NivenおよびZuckermanによる非特許文献3を参照可能である。また、所与の数の立方根や4乗根等の決定に関しては、たとえばニュートン法等の適当な数値的方法を採用可能である。n乗根の決定は、1変数の非線形方程式を解くことに帰着し、それに利用可能な各種方法は、直接解析法、図式法、試行錯誤法、反復法等に分類可能である。Gowerは、根を決定するための反復法を発表している(非特許文献4参照)。二分法、挟み撃ち法、テイラー級数法、ニュートン・ラプソン法、ミュラー法等の反復法に関しては、BurdenおよびFairesによる非特許文献5を参照可能である。これらの方法を利用してn乗根を開平する場合には、たとえば最初に推測する必要があったり、膨大な算術演算が必要であったり、反復ステップを複数回行って収束させる必要があったりと、それぞれ固有の欠点がいくつかある。たとえば、ニュートン・ラプソン法においては、予め推測した値が必要であり、この最初の推測が正確な根と大きく異なる場合には、反復法が収束しないこともある。Matthewsは、正の整数のn乗根の計算について論じている(非特許文献6参照)。また、Priestleyは、n乗根の開平におけるニュートン法を実証している(非特許文献7参照)。さらに、MuenchおよびWildenbergは、対数を用いて5関数計算機により根を求めるアルゴリズムを提供している(非特許文献8参照)。
【先行技術文献】
【非特許文献】
【0002】
【非特許文献1】(a)J.Napier,Mirifici Logarithmorum Canonis Descriptio(1614) and E.Wright(English Translation from Latin),A Description of the Admirable Table of Logarithms(1616)、(b)J.Napier(1969),A Description of the Admirable Table of Logarithms,London 1616,Amsterdam;New York,N.Y.:Theatrum Orbis Terrarum;Da Capo Press
【非特許文献2】R.G.Dromey,How to solve it by computer,Pearson Education,New Delhi,2008
【非特許文献3】I.Niven and H.Zuckerman,An introduction to the theory of numbers,Wiley Student Edition,New Delhi,1991
【非特許文献4】J.Gower,A note on an iterative method for root extraction,The Compute J.,1(3)(1958),142−143
【非特許文献5】R.Burden and D.Faires,Numerical analysis,Thomson Asia,Bangalore,2005
【非特許文献6】K.Matthews,Computing mth roots,The College Math.J.,19(1988),174−176
【非特許文献7】W.Priestley,From square roots to nth roots,Newton’s method in disguise,The College Math.J.,30:5(1999),387−388
【非特許文献8】D.Muench and G.Wildenberg,A logarithm algorithm for a five−function calculator,The Two−year College Math.J.,14(4)(1983),324−326
【発明の概要】
【発明が解決しようとする課題】
【0003】
ただし、所与の数のn乗根を開平するための直接解析法は存在しない。n乗根を求めるアルゴリズムの開発は、依然として興味深く、挑戦的な課題である。既存方法の欠点を抑えるには、効率的な新しい方法を開発する必要が大いにある。このような背景において、本発明は、3つの関数U、V、およびTを導入し、これらの関係を構築することによって、所与の正の実数に関して正の実数のn乗根を任意の所望精度で一桁ごとに決定する計算が簡単な数値アルゴリズムに焦点を当てている。
【発明を実施するための形態】
【0004】
2.累乗法による桁数
まず、当該アルゴリズムの基本結果が必要である。NおよびWをそれぞれ、自然数および整数の集合とする。また、αをk桁
【0005】
【数1】
【0006】
の所与の正の整数とする。ここで、αをn乗する際の桁数について考える。
【0007】
定理1
mをαの桁数とすると、以下が成立する。
【0008】
【数2.1】
【0009】
証明
ケース(i)まず、n=2について考える。k=1の場合は、以下が成立する。
【0010】
【数2.2】
【0011】
k>1の場合は、以下が成立する。
【0012】
【数2.3】
【0013】
また、2k−1≦m≦2kである。但し、
【0014】
【数2.4】
【0015】
数式(2.2)、(2.3)、および(2.4)は、数式(2.1)がn=2の場合に有効であることを意味する。
【0016】
ケース(ii)次に、n>2とする。k=1の場合は、α<10またはα<10である。これは、αが最大n桁であることを意味する。
したがって、以下が成立する。
【0017】
【数2.5】
【0018】
k桁(k>1)の数αについて考える。この場合は、10k−1≦α<10が成立する。よって、10(k−1)n≦α<10knとなる。これは、以下を意味する。
【0019】
【数2.6】
【0020】
よって、数式(2.5)および(2.6)は、数式(2.1)がn>2の場合に有効であることを意味する。このように、上記定理は、n、k∈Nのすべての値に関して有効である。
【0021】
3.数値アルゴリズム
所与の正の整数Mのn乗根を求めるものとする。まず、Mが正の整数のちょうどn乗である場合の方法を示す。一般的な場合については、第5項にて後述する。
【0022】
ステップ1
Mの一の位から開始して、それぞれサイズnの可能最大数のブロックにMの各桁を分割する。この過程で、Mの左端の桁が残った場合は、これらの桁で別のブロックを形成する。Mの各桁でこのように形成したブロックの総数をkとする。この場合、定理1によって、Mの正の実数のn乗根は、k桁から成り、たとえば一の位から順にa、a、・・・、aとなる。
MをM(k,n)とすると、以下のように表される。
【0023】
【数3.1】
【0024】
ここで、M(k,n)の右側から各ブロックをB、B、・・・、Bとする。Bのサイズを|B|とすると、以下のように表される。
【0025】
【数3.2】
【0026】
また、
【0027】
【数3.3】
【0028】
∈Nの可能最大値を以下のように決定する。
【0029】
【数3.4】
【0030】
ここで、
【0031】
【数3.5】
【0032】
k=1の場合は、RがM(k,n)の求めるべき正の実数のn乗根である。k≠1の場合は、ステップ2に進む。
【0033】
ステップ2
次のブロックを形成する。
【0034】
【数3.6】
【0035】
k−1を以下のように定義する。
【0036】
【数3.7】
【0037】
ここで、
【0038】
【数3.8】
【0039】
かつ
【0040】
【数3.9】
【0041】
とする。
k−1の一の位から開始して、それぞれサイズnの(k−2)個のブロックにMk−1の各桁を分割するとともに、残ったMk−1の左端の桁で別のブロックを形成する。また、Mk−1の左端のブロックをBk−1(Mk−1)とする。この場合は、以下が成立する。
【0042】
【数3.10】
【0043】
ここで、D・Bk−1は、DとBk−1の連結(「・」で表す)と定義される。
また、
【0044】
【数3.11】
【0045】
と見なす。
k−1∈Wの最大値を以下のように決定する。
【0046】
【数3.12】
【0047】
ここで、
【0048】
【数3.13】
【0049】
また、
【0050】
【数3.13a】
【0051】
は、n個から一度にr個を選ぶ場合の組み合わせ数を表す。
ここで、
【0052】
【数3.14】
【0053】
とする。
k−1=RoVk−1と定義すると、以下が成立する。
【0054】
【数3.15】
【0055】
k=2の場合は、Rk−1が求めるべき根である。k≠2の場合は、ステップ3に進む。
【0056】
ステップ3
【0057】
【数3.16】
【0058】
と定義する。
ステップ2の過程を繰り返す。ここで、Mk−2は、(k−2)個のブロックから成る。
数式(3.11)および(3.12)と同様の手順をそれぞれ行って、Uk−2およびVk−2を求める。また、同様に、ak−2=Vk−2としたり、Rk−2を定義したりする。そして、kが1になるまでこの過程を繰り返す。ここで、R=10k−1+10k−2k−1+・・・+aがMのn乗根である。
【0059】
4.方法の証明
数学的帰納法の原理により、第3項に示した方法を検証する。
【0060】
補助定理1
1≦a≦9
【0061】
証明
数式(3.3)および(3.4)から、a≦B<10が得られる。よって、a<10となる。また、B≠0であることから、a≧1となる。これらにより、1≦a≦9が得られる。
【0062】
補助定理2
0≦a≦9、i=1、2、・・・、k−1
【0063】
証明
数式(3.6)から、10=10−10が得られる。これは、10+10+Bk−1=10+Bk−1と表せる。また、数式(3.8)および(3.10)から、10+Bk−1(Mk−1)=B・Bk−1が得られる。数式(3.12)により、この関係は、10+Vk−1k−1≦BoBk−1と表される。数式(3.2)および(3.3)を考慮すると、|10+Vk−1k−1|≦2nが得られる。これは、数式(3.9)および(3.11)により、|Uk−1+Vk−1k−1|≦2nと表される。そして、二項定理を用いると、|(Uk−1+Vk−1|≦2nが得られる。したがって、|(10U+Vk−1|≦2nとなる。
【0064】
=a≠0およびaの最大選択を考慮すると、定理1によって、上記は0≦Vk−1≦9と表せる。そして、数式(3.14)から、0≦ak−1≦9が得られる。
同様に、0≦a≦9、i=1、2、・・・、k−2についても証明可能である。
【0065】
M(k,n)が正の整数(たとえば、λ)のちょうどn乗であるものとすると、
【0066】
【数4.1】
【0067】
となる。
ここで、数式(3.1)から、λ=10k−1+10k−2k−1+・・・+aである。
数式(3.11)および(3.14)、ならびにアルゴリズムのステップ3から、上記は以下のように表せる。
【0068】
【数4.2】
【0069】
また、数式(3.13)ならびにアルゴリズムのステップ3により、以下のように表される。
【0070】
【数4.3】
【0071】
さらに、数式(3.8)、(3.9)、および(3.11)、ならびにアルゴリズムのステップ3から、以下が分かる。
【0072】
【数4.4】
【0073】
i=1、2、・・・、k−2の場合は、ステップ3ならびに数式(3.7)および(3.16)により、以下のように表される。
【0074】
【数4.4a】
【0075】
そして、数式(3.5)および(3.15)、ならびにステップ3から、以下が得られる。
【0076】
【数4.4b】
【0077】
i=1、2、・・・、k−1の場合、関係式(4.4)は、
【0078】
【数4.4c】
【0079】
と表される。よって、数式(3.8)、(3.9)、および(3.11)、ならびにアルゴリズムのステップ3から、U=10Ri+1、i=1、2、・・・、k−1が得られる。
i=1、2、・・・、k−2の場合は、ステップ3ならびに数式(3.7)および(3.16)により、以下のように表される。
【0080】
【数4.4d】
【0081】
そして、数式(3.5)および(3.15)、ならびにステップ3から、以下が得られる。
【0082】
【数4.4e】
【0083】
i=1、2、・・・、k−1の場合、関係式(4.4)は、
【0084】
【数4.4f】
【0085】
と表される。よって、U=10Ri+1、i=1、2、・・・、k−1となる。
【0086】
定理2
n∈Nを所与とすると、U(i=1、2、・・・、k)、V(i=1、2、・・・、k)、およびT(i=1、2、・・・、k−1)は、すべてのk∈Nに対して、以下の関係を満足する。
【0087】
【数4.5】
【0088】
証明
数式(3.1)から、関係式(4.5)がk=1の場合に有効であることが分かる。
関係式(4.5)がk∈Nの場合に有効であると仮定する。そして、M(k+1,n)について考えると、関係式(3.8)、(3.9)、(4.2)、および(4.3)は、kを1だけ増やした場合にも有効である。
ここで、U(i=2、3、・・・、k+1)、V(i=2、3、・・・、k+1)、およびT(i=2、3、・・・、k)の帰納的仮定を用いると、
【0089】
【数4.5a】
【0090】
となる。
よって、
【0091】
【数4.6】
【0092】
となる。
(k+1)の場合にも適用可能な関係式(4.5)を用いると、数式(4.6)の右辺は、
【0093】
【数4.6a】
【0094】
となる。これは、二項定理を用いると(10k+1+10k−1+・・・+10a+aとなって、M(k+1,n)が得られる。よって、当該定理は、kに関する帰納により示される。
【0095】
5.一般的な場合のn乗根
一般的には、正の実数のちょうどn乗またはn乗根ではない正の整数のn乗根を求めたい場合がある。この場合は、第3項に示したアルゴリズムを以下のように修正した上で採用する必要がある。
Mを正の実数とすると、整数部分および小数部分から成る場合がある。ここで、小数点以下第h位まで根を求めるものとする。この場合、所与の数Mに10hnを乗じ、[10hnM]に関して第3項のアルゴリズムに従うと、Rが10hnMのn乗根の整数部分となる。ここで、
【0096】
【数5.1】
【0097】
であることから、Rを10で除することにより、小数点以下第h位までMのn乗根を求める。
以下に例をいくつか示す。
【0098】
5.1 Mがちょうどn乗である場合
例1.√(16457616482180544)を求める。
【0099】
ステップ1
M=16457616482180544とする。n=3であることから、第3項に記載の通りにMの各桁を分割すると、以下が得られる。
【0100】
【表1】
【0101】
ここで、k=6である。a≦16となるには、a=2が最大値である必要がある。これより、R=a=2であることが分かる。K≠1であるため、ステップ2に進む。
【0102】
ステップ2
ブロックD=B−a=8を形成する。そして、M=M−105*3=8 457 616 482 180 544と定義する。U=a=2およびV=0とする。B(M)=D・B=8457であることが分かる。
の各桁を以下のように分割する。
【0103】
【表2】
【0104】
=10(U+V)=20と見なす。値0、1、2、3、4、5、および6をVに割り当てると、それぞれV=0、1261、2648、4167、5824、7625、および9576が得られる。ここで、
【0105】
【数5.2】
【0106】
である。よって、V≦8457となるには、V∈Wの最大値が5である。ここで、T=1525である。a=V=5およびR=10a+a=25とする。
以降のステップについては、結果を下表に示す。
【0107】
ステップ3
【0108】
【表3】
【0109】
よって、R=10+10+10+10+10a+a=254364がMの立方根である。また、
【0110】
【数5.3】
【0111】
であることが分かる。
所与の問題について、上記の段階的な手順を踏むことはできる。ただし、より簡単な表現として、以下の例に示すような別の手順が有用と考えられる。
【0112】
例2.√(16192865729296)を求める。
【0113】
【数5.4】
【0114】
よって、2006が求めるべき根である。
【0115】
5.2 Mがちょうどn乗でない場合
例3.√(175)を小数点以下第2位まで正しく求める。
【0116】
【数5.5】
【0117】
例4.√(35.66・・・)を小数点以下第3位まで正しく求める。
【0118】
【数5.6】
【0119】
6.結論
上記の解析法では、所与の正の実数に関してn乗根の一桁ごとの開平を直接実行することができる。n乗根の決定にニュートン法を用いる場合は、初期解を割り出した後に、微分法を適用する必要がある。一方、上記の方法では、簡単な算術演算しか用いず、初期解も不要である。この方法は、コンピュータで実現可能であるため、電子機器に組み込んで、メモリー空間を増やすことなく所与の正の実数のn乗根を決定するようにしてもよい。