立方根の計算
Posted feedbacks - D
ニュートン法で。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import std.stdio;
import std.math;
real cube_root(real x){
real y0 = 3;
while(true){
real y1 = (2 * y0 + x / (y0 * y0)) / 3;
if(abs(y1 - y0) < 1e-14) return y1;
y0 = y1;
}
}
void main(){
foreach(r; [cube_root(10.0), cube_root(100.0)]){
writefln("%.13f ^ 3 = %.13f", r, pow(r, 3));
//=> 2.1544346900319 ^ 3 = 10.0000000000000
//=> 4.6415888336128 ^ 3 = 100.0000000000000
}
}
|



にしお
#3411()
Rating1/1=1.00
ただし、このお題の趣旨は実数区間での探索なので、 立方根関数があっても使ってはいけません。 指数関数と対数関数も禁止します。
Pythonで表現した入出力の例:
[ reply ]