JAVA实现开根号的两种方式:二分法以及牛顿迭代法

简介: JAVA实现开根号的两种方式:二分法以及牛顿迭代法
public class demo {
    public static void main(String[] args) {
        System.out.println("———— 二分法计算根号 ————");
        double result_a = math_Method.mathematicalDichotomy(99999999L, 1, 2, 2);
        double result_b = math_Method.mathematicalDichotomy(99999999L, 2, 3, 8);
        if (result_a + result_a - result_b >= 0 || result_b - (result_a + result_a) <= 0) {
            System.out.println("综上 : √2 + √2 = √8");
        } else {
            System.out.println("综上 : √2 + √2 ≠ √8");
        }
        System.out.println("—— 牛顿迭代法计算根号 ——");
        double result_c = math_Method.Newton_iterative_method(2, 99999999L);
        double result_d = math_Method.Newton_iterative_method(8, 99999999L);
        if (result_c + result_c - result_d >= 0 || result_d - (result_c + result_c) <= 0) {
            System.out.println("综上 : √2 + √2 = √8");
        } else {
            System.out.println("综上 : √2 + √2 ≠ √8");
        }
    }
}
class math_Method {
    public static double mathematicalDichotomy(
            long times, double low, double high, double number_Of_Required__square) {
        double average = 0, sum;
        for (int x = 0; x < times; x++) {
            average = (low + high) / 2;
            sum = average * average;
            if (sum > number_Of_Required__square)
                high = average;
            else
                low = average;
        }
        System.out.println("√" + number_Of_Required__square + " = " + average);
        return average;
    }
    public static double Newton_iterative_method(double number_Of_Required__square, long times) {
        /* 牛顿迭代公式:X(n+1)=(X(n)+a/X(n))/2 */
        double X1 = number_Of_Required__square / 2;
        double X_n_jia_1 = 0;
        for (int i = 0; i <= times; i++) {
            X_n_jia_1 = (X1 + number_Of_Required__square / X1) / 2;
            if (X_n_jia_1 - X1 >= 0 & X_n_jia_1 - X1 <= 0.00000001) {
                System.out.println("√" + number_Of_Required__square + " = " + X_n_jia_1);
                break;
            } else if (X_n_jia_1 - X1 <= 0 & X_n_jia_1 - X1 >= 0.00000001) {
                System.out.println("√" + number_Of_Required__square + " = " + X_n_jia_1);
                break;
            } else {
                X1 = X_n_jia_1;
            }
        }
        return X_n_jia_1;
    }
}
相关文章
|
3月前
|
存储 Java 数据处理
如何使用 Java 迭代 HashMap 中的 ArrayList
【8月更文挑战第23天】
48 2
|
4月前
|
算法 Java
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
82 7
|
3月前
|
存储 Java 数据处理
|
3月前
|
Java API 微服务
Java微服务架构应对互联网应用的大规模访问与快速迭代挑战
Java微服务架构应对互联网应用的大规模访问与快速迭代挑战,通过将应用分解为小型、自治的服务,增强系统灵活性与可扩展性。本文概览微服务定义及特点,深入剖析服务拆分、注册发现、API网关等核心原理,并介绍Spring Boot、Spring Cloud、Docker与Kubernetes等关键技术实践,助力高效构建稳定、高性能的企业级应用。
39 0
|
3月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
77 0
|
5月前
|
Java
java实现斐波那契数列(递归、迭代、流)
java实现斐波那契数列(递归、迭代、流)
|
4月前
|
敏捷开发 Java 测试技术
实现Java应用的快速开发与迭代
实现Java应用的快速开发与迭代
|
Java
第一季:5递归与迭代【Java面试题】
第一季:5递归与迭代【Java面试题】
64 0
Java while循环:循序渐进的迭代之道
在编程世界中,循环是处理重复任务的重要工具,可以让我们多次执行同一段代码。Java中提供了多种循环结构,其中while循环是一种常见且灵活的选择。本文将带您深入了解Java中的while循环,探索其特点、用法、变体以及在实际项目中的应用。
Java for循环:探索迭代的艺术
在编程世界中,循环是一项强大的工具,可以让我们重复执行相同或类似的操作。Java提供了多种循环结构,其中最常用的是for循环。本文将引导您深入了解Java中的for循环,包括其语法、用法、变体以及在实际项目中的应用。