public static void main(String[] args) {
long start = System.currentTimeMillis();
double target=9876543212345d;
double result =sqrt(target);
System.out.println("sqrt耗时:"+(System.currentTimeMillis()-start)+",result:"+result); start=System.currentTimeMillis();
result =SqrtByBisection(target, 0);
System.out.println("SqrtByBisection耗时:"+(System.currentTimeMillis()-start)+",result:"+result); start=System.currentTimeMillis();
result = SqrtByNewton(target, 0);
System.out.println("SqrtByNewton耗时:"+(System.currentTimeMillis()-start)+",result:"+result); } //牛顿迭代法
public static double SqrtByNewton(double target,double eps){
double Xa=target,Xb;
do {
Xb = Xa;
Xa = (Xa+target/Xa)/2;
} while (fabsf(Xa,Xb)>eps);
return Xa;
} //二分法 精度是指两次mid值的差值
public static double SqrtByBisection(double target,double eps){
double min=1,max=target;
double mid =(min+max)/2;
double anMid;
do {
if(mid*mid>target){
max=mid;
}else{
min=mid;
}
anMid=mid;
mid=(max+min)/2;
} while (fabsf(anMid,mid)>eps);
return mid;
} public static double sqrt(double d){
double a = 0.1;
double x1,x2=0;
while (a*a<=d) {
a+=0.1;
}
x1=a;
for (int i = 0; i < 10; i++) {
x2=d;
x2/=x1;//x2 = x2/x1;
x2+=x1;
x2/=2;
x1=x2;
}
return x2;
} public static double fabsf(double a,double b){
if(a>b){
return a-b;
}else
return b-a;
}

java实现开根号算法的更多相关文章

  1. java实现开根号的运算

    面试的时候,偶然被问到,开根号的实现,虽然给面试官讲解了思路,但是没有实际实现过,今天闲来无事,就把自己的思路写一下,做个笔记. 如果某个数字正好可以开根号为2个整数,例如1,4,9等,那就很简单了. ...

  2. Java实现开根号运算(不使用数组和String)

    使用Java自己实现开根号运算,网上也有不少代码,多数都使用String或者数组.这里写一段只使用double基础数据类型实现的方法. private static double sqrt(int n ...

  3. 用C语言将一个数开根号后再取倒数的方法

    在上学的时候,曾经看过有人写过这样的算法,就是将一个数开根号后再取倒数的算法,我本人也觉得十分巧妙,于是就将它积累了下来,让我们来看看是怎么回事: #include <stdio.h> # ...

  4. 各大公司java后端开发面试题

    各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...

  5. HDU 5828 Rikka with Sequence(线段树 开根号)

    Rikka with Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  6. Java中的经典算法之冒泡排序(Bubble Sort)

    Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...

  7. Java中的查找算法之顺序查找(Sequential Search)

    Java中的查找算法之顺序查找(Sequential Search) 神话丿小王子的博客主页 a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数 ...

  8. Java中的经典算法之选择排序(SelectionSort)

    Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...

  9. java模拟开锁

    java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: ...

随机推荐

  1. 机器学习(2) - KNN识别MNIST

    代码 https://github.com/s055523/MNISTTensorFlowSharp 数据的获得 数据可以由http://yann.lecun.com/exdb/mnist/下载.之后 ...

  2. 【转】Python的下划线

    原文: 1. Python中的下划线(译文) 2. [转]关于python中带下划线的变量和函数的意义 总结: 1. 单下划线开头.保护变量,不可被其他包导入使用,除非在__all__声明可以显示引用 ...

  3. MySQL下载安装配置和Navicat for MySQL的安装配置

    MySQL 一.下载 地址:MySQL :: Download MySQL Installer 选择那个几百M的msi文件下载 二.安装 第一步: 安装许可 双击安装文件,在如下图所示界面中勾选&qu ...

  4. 在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析

    首先关于在python中单线程,多线程,多进程对cpu的利用率实测如下: 单线程,多线程,多进程测试代码使用死循环. 1)单线程: 2)多线程: 3)多进程: 查看cpu使用效率: 开始观察分别执行时 ...

  5. 洛谷 P1054 解题报告

    P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...

  6. PAT1031:Hello World for U

    1031. Hello World for U (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Giv ...

  7. SSM-MyBatis-09:Mybatis中SqlSession的close为什么能造成事务的回滚

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 经过上几次的查找,笔者我就简单的说一下查找的思路,留给读者自己实践 同样找到sqlsession的实现类,-- ...

  8. ZooKeeper的使用---命令端

    一.进入命令行 ./bin/zkCli.sh   二.常用命令   命令  作用 范例 备注 connect host:port 连接其他zookeeper客户端 connect hadoop2:21 ...

  9. Access Logging Tomcat

    73.6 Configure Access Logging server.tomcat.accesslog.buffered=true # Buffer output such that it is ...

  10. jdbc 链接数据库步骤 7步

    JDBC连接数据库   •创建一个以JDBC连接数据库的程序,包含7个步骤:   1.加载JDBC驱动程序:       在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), ...