目次         

立方根等の計算方法

 

立方根の値を計算する代表的な手順として「開立法」や「ニュートン法」がある。このページでは立方根の値を高精度で求めるための数式を作成する。また一般のn乗根の式も作成する。


最初は1に近い数値の立方根の式を求める。

二項級数 (1-1/x)^(1/3)=1-1/(3x)-1/(9x^2)-5/(81x^3)-

に対して  1-1/(3x-1)  =1-1/(3x)-1/(9x^2)-1/(27x^3)-… は近い展開である。

  となるyを求める。

1/y=1-{(x-1)/x}{(3x-1)3/(3x-2)3}=(2x-1)/(x(3x-2)3) であるため

右辺の3に変換(分母を3倍して1を引く)を再度適用した式より

x-xを代入して


xx2/x1を代入して整理すると

 

 

(n3+j)/m3=(n3/m3)(1+j/n3) に適用した計算例。

 

第一近似分数は、後で説明する式で求めることができる。3bの値が既知であるaに近い数bを選び

a=2, b=13=1, (3b)(2a+b)/(a+2b)=1( 5/ 4)=5/4

a=4, b=23=8, (3b)(2a+b)/(a+2b)=2(16/20)=8/5


分母の3x+1を更に調整した次式は、右辺の3中の分数がおよそ1/x5のオーダーとなる。

従って精度が良い近似式は

 

xx2/x1を代入して整理すると

 

x0=3(2x2+x1) と置けば規則正しい式になる。


具体的な計算例。

 32 : x1=  3, x2=5^3=125, x0= 759

      (5/4)(3* 759* 762-8*  9)/(3* 759* 756-8*  9)= 96389/76504=1.2599210498797

 34 : x1=-12, x2=8^3=512, x0=3036

      (8/5)(3*3036*3024-8*144)/(3*3036*3048-8*144)=153008/96389=1.5874010519872

一般的に(3a)( 3a2)=a であるが、上記の積は正確に  153008/76504=2 となっている。


一般的な数値であるaの立方根の式を求める。3bの値が既知であるaに近い数bを使用する。

a = b+(a-b) = b{1+(a-b)/b} より  3a = (3b)  3{1+(a-b)/b}

 3{1+(a-b)/b} 3(1+1/x)1+1/(3x+1) で近似すると

1+(a-b)/(3b+(a-b)) = 1+(a-b)/(a+2b) = (2a+b)/(a+2b)

両辺を3乗してaの式に戻すと ab{(2a+b)/(a+2b)}^3

 

精度を保つ為に近似式の誤差hを求め、正確な式に戻す。

a = b{(2a+b)/(a+2b)}^3+h  より  h = a-b{(2a+b)/(a+2b)}^3 = (a+b){(a-b)/(a+2b)}^3  が求まり

a = b{(2a+b)/(a+2b)}^3 + (a+b){(a-b)/(a+2b)}^3

a = b{(2a+b)/(a+2b)}^3 { 1 + {(a+b)/b} {(a-b)/(2a+b)}^3 }

従って

aの立方根が 1+ x1/x2 の立方根に帰着できるので、前記の適当な近似式を使用して計算可能となる。


以下は簡単な式である3(1+1/x)1+1/(3x+1)を使用して、aの立方根の近似式を求める。

abを交換した後、aに関する式を求めると

 

この式は次の様に単純化できる。

 

具体的な計算例。

 32 : a=2, b=13=1, c= 4,   1(1+1/4)(1+ 3/(3*2* 64-2* 3))= 635/504=1.25992063

 34 : a=4, b=23=8, c=-5,   2(1-1/5)(1-12/(3*4*125+2*12))=1008/635=1.587401574

一般的に(3a)( 3a2)=a であるが、上記近似値の積は正確に   1008/504=2 となっている。


 3(1+1/x)近似式を逐次代入で使用する方法と、ニュートン法の精度(収束の速さ)を比較する。

参考の為に  3(1+1/x)=(1+1/(3x)) 3(1-(9x+1)/(3x+1)3) の式を利用する方法も示す。

 

ニュートン法

a=2:u=5/4:for k=1 to 4:?u:u-=(u^3-a)/(3*u^2):next

 1.25

 1.26

 1.2599210548                 [ 8]

 1.2599210498948731841        [17]

 

3xを使用する方法(参考)

a=2:u=5/4:x=5^3/3:for k=1 to 4:?u:u*=(1+1/(3*x)):x=-(3*x+1)^3/(9*x+1):next

 1.25

 1.26

 1.2599210548                 [ 8]

 1.2599210498948731841        [17]

 

3x+1を使用する方法

a=2:u=5/4:x=5^3/3:for k=1 to 4:?u:u*=(1+1/(3*x+1)):x=x*(3*x+2)^3/(2*x+1):next

 1.25

 1.25992063

 1.2599210498948731647371     [20]

 1.2599210498948731647672106072782283505702514647015079800819637    [59]

 

正確な32の値は

 1.25992104989487316476721060727822835057025146470150798008197511215529966


uu{1+1/(3x)}とする方法は、uu-(u^3-a)/(3u^2) あるいは uu{1+((a/u^2)-u)/(3u)}

とするニュートン法と同等で、精度が約2倍で高くなる。

uu{1+1/(3x+1)}とする方法は精度が約3倍で高くなる。

 

計算時間を考える場合は、xの初期値を求める時間と、繰り返す式の複雑度を考慮する必要がある。


n乗根の式を求める。立方根と同様の方法が使用できる。

二項級数 (1-1/x)^(1/n)=1-1/(nx)-(n-1)/(2n^2x^2)-

に対して 1-2/(2nx+n-1)=1-1/(nx)-(n-1)/(2n^2x^2)-… は近い展開である。

   または  

 

nbの値が既知であるaに近い数bを使用する。

na=(nb) n{1+(a-b)/b} にこの近似式を使用すると na(nb){(n+1)a+(n-1)b}/{(n-1)a+(n+1)b}

c1=(n+1)a+(n-1)b

c2=(n-1)a+(n+1)b

と置くと na(nb)(c1/c2) つまり ab(c1/c2)n

 

誤差を除いて正確な式に戻すと a=b(c1/c2)n+(ac2n-bc1n)/c2n=b(c1/c2)n{1+(ac2n-bc1n)/(bc1n)}

従って

 

n(1+1/x) 1+2/(2nx-n+1) の近似式を使用すると


具体的な計算例。

 52  : a= 2, b=15= 1, c1= 16, c2= 14

        1(16/ 14)(6* 2* 14^5+4* 1*16^5)/(4* 2* 14^5+6* 1*16^5)=1.148698050

 410 : a=10, b=24=16, c1= 98, c2=110

        2(98/110)(5*10*110^4+3*16*98^4)/(3*10*110^4+5*16*98^4)=1.7782794275

 

平方根や立方根では次の単純な近似式が成り立つ。

(1+4/x)^(1/2)1+1/x+1/(x+2)          ,  (1+1/x)^(1/2)1+{1/(2x)+1/(2x+1)}/2

(1+9/x)^(1/3)1+1/x+1/(x+3)+1/(x+6)  ,  (1+1/x)^(1/3)1+{1/(3x)+1/(3x+1)+1/(3x+2)}/3

 

n乗根に一般化すると、1に「1/(nx),1/(nx+1),1/(nx+2),,1/(nx+n-1)の平均」を加えた値となる。

 

具体的な計算例。

1.1^(1/1) : 1+(1/10)/1                             = 1.1
1.1^(1/2) : 1+(1/20+1/21)/2                        = 1.04880952

1.1^(1/3) : 1+(1/30+1/31+1/32)/3                   = 1.03228046

1.1^(1/4) : 1+(1/40+1/41+1/42+1/43)/4              = 1.02411389

1.1^(1/5) : 1+(1/50+1/51+1/52+1/53+1/54)/5         = 1.01924501

1.1^(1/6) : 1+(1/60+1/61+1/62+1/63+1/64+1/65)/6    = 1.01601196


  2^(1/2) : (10/ 7){1-(1/ 99+1/100)/2}             = 1.4142135642


  2^(1/3) : ( 5/ 4){1+(1/125+1/126+1/127)/3}       = 1.2599210515

  3^(1/3) : ( 3/ 2){1-(1/ 25+1/ 26+1/ 27)/3}       = 1.4422507122

  4^(1/3) : ( 8/ 5){1-(1/126+1/127+1/128)/3}       = 1.5874010540


  5^(1/4) : ( 3/ 2){1-(1/321+1/322+1/323+1/324)/4} = 1.4953487813


          目次