ライブラリ関数を使用せずに、浮動小数点数の立方根を計算します。小数点第 1 位。

この質問の考え方は、数値が 0 より大きいか 0 より小さいかを判断することです。 f(x)=x^3 が R 上で単調増加していることがわかっているため、関数の値が小さいほど変数も小さくなります。 。議論を分類する

<スクリプト>

        関数 cubeRoot (n) { ;

            //この数値が正の整数か負の整数かを判定します 小数点は予約しなければならないと規定されているので、増減するたびに0.1という形で増減します。

            if (n >= 0) {

                for (var i = 0; ; i += 0.1) {

                   //これは高校関数 f(x1)<0 f(x2)>0 のゼロ点の知識に似ており、(x1,x2) にはゼロ点が存在する必要があります (関数は連続です)

                    if (i ** 3 <= n && (i + 0.1) ** 3 >= n) {

                        壊す;

                    }

                }

                //3乗なので百分位で四捨五入するので、0.05を足した値の3乗がnより小さい場合はi+1の3乗の方がnに近いことになるのでi+1を返し、小数点以下 1 桁を保持する

                if ((i + 0.05) ** 3 <= n) {

                    return (i + 0.1).toFixed(1)

                }

                i.toFixed(1) を返す

            }

            if (n < 0) {

                for (var i = 0; ; i -= 0.1) {

                    //x^3 は (-infinity, 0) で単調増加するため、小さいほど小さくなります。最初は n より大きく、減算後の 3 乗は n より小さくなります

                    if (i ** 3 >= n && (i - 0.1) ** 3 <= n) {

                        壊す;

                    }

                }

                //同様に、0.05を加算した後の3乗がnより小さい場合、i+1はnの立方根に近いことを意味します

                if ((i + 0.05) ** 3 <= n) {

                    return (i + 0.1).toFixed(1)

                }

                i.toFixed(1) を返す

            }

        }

    </script>

おすすめ

転載: blog.csdn.net/weixin_68067009/article/details/124458134