challenge 立方根の計算

xは0以上1000未満の実数です。 y * y * y = xになるような実数y(立方根)を小数点以下12桁以上の正確さで 求める関数cube_rootを作って下さい。

ただし、このお題の趣旨は実数区間での探索なので、 立方根関数があっても使ってはいけません。 指数関数と対数関数も禁止します。

Pythonで表現した入出力の例:

>>> cube_root(10.0)
2.1544346900318834
>>> _ ** 3
9.9999999999999947
>>> cube_root(100.0)
4.6415888336127793
>>> _ ** 3
100.00000000000003

Posted feedbacks - R

立方根関数、指数関数、対数関数は禁止・・・ということは
数値解析関数なら使っていいに違いないw
uniroot()関数は内部でBrent法を使用しています。

> cube_root(100)
[1] "4.641588833613"
> cube_root(10)
[1] "2.154434690032"
1
2
3
cube_root <- function(x){
   sprintf("%.12f", uniroot(function(y)(y*y*y - x), c(0, 1000), tol=1e-12)$root)
}

Index

Feed

Other

Link

Pathtraq

loading...