立方根の値を計算する代表的な手順として「開立法」や「ニュートン法」がある。このページでは立方根の値を高精度で求めるための数式を作成する。また一般の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を代入して
xにx2/x1を代入して整理すると
(n3+j)/m3=(n3/m3)(1+j/n3) に適用した計算例。
第一近似分数は、後で説明する式で求めることができる。3√bの値が既知であるaに近い数bを選び
a=2, b=13=1, (3√b)(2a+b)/(a+2b)=1( 5/ 4)=5/4
a=4, b=23=8, (3√b)(2a+b)/(a+2b)=2(16/20)=8/5
分母の3x+1を更に調整した次式は、右辺の3√中の分数がおよそ1/x5のオーダーとなる。
従って精度が良い近似式は
xにx2/x1を代入して整理すると
x0=3(2x2+x1) と置けば規則正しい式になる。
具体的な計算例。
3√2 : x1= 3, x2=5^3=125, x0= 759
(5/4)(3* 759* 762-8* 9)/(3* 759* 756-8* 9)= 96389/76504=1.2599210498797…
3√4 : x1=-12, x2=8^3=512, x0=3036
(8/5)(3*3036*3024-8*144)/(3*3036*3048-8*144)=153008/96389=1.5874010519872…
一般的に(3√a)( 3√a2)=a であるが、上記の積は正確に 153008/76504=2 となっている。
一般的な数値であるaの立方根の式を求める。3√bの値が既知であるaに近い数bを使用する。
a = b+(a-b) = b{1+(a-b)/b} より 3√a = (3√b) 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の式に戻すと a≒b{(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の立方根の近似式を求める。
aとbを交換した後、aに関する式を求めると
この式は次の様に単純化できる。
具体的な計算例。
3√2 : a=2, b=13=1, c= 4, 1(1+1/4)(1+ 3/(3*2* 64-2* 3))= 635/504=1.25992063…
3√4 : a=4, b=23=8, c=-5, 2(1-1/5)(1-12/(3*4*125+2*12))=1008/635=1.587401574…
一般的に(3√a)( 3√a2)=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桁]
正確な3√2の値は
1.25992104989487316476721060727822835057025146470150798008197511215529966…
u←u{1+1/(3x)}とする方法は、u←u-(u^3-a)/(3u^2) あるいは u←u{1+((a/u^2)-u)/(3u)}
とするニュートン法と同等で、精度が約2倍で高くなる。
u←u{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)-… は近い展開である。
または
n√bの値が既知であるaに近い数bを使用する。
n√a=(n√b) n√{1+(a-b)/b} にこの近似式を使用すると n√a≒(n√b){(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
と置くと n√a≒(n√b)(c1/c2) つまり a≒b(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) の近似式を使用すると
具体的な計算例。
5√2 : 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…
4√10 : 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…