java实现开根号算法
    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实现开根号算法的更多相关文章
- java实现开根号的运算
		
面试的时候,偶然被问到,开根号的实现,虽然给面试官讲解了思路,但是没有实际实现过,今天闲来无事,就把自己的思路写一下,做个笔记. 如果某个数字正好可以开根号为2个整数,例如1,4,9等,那就很简单了. ...
 - Java实现开根号运算(不使用数组和String)
		
使用Java自己实现开根号运算,网上也有不少代码,多数都使用String或者数组.这里写一段只使用double基础数据类型实现的方法. private static double sqrt(int n ...
 - 用C语言将一个数开根号后再取倒数的方法
		
在上学的时候,曾经看过有人写过这样的算法,就是将一个数开根号后再取倒数的算法,我本人也觉得十分巧妙,于是就将它积累了下来,让我们来看看是怎么回事: #include <stdio.h> # ...
 - 各大公司java后端开发面试题
		
各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...
 - HDU 5828 Rikka with Sequence(线段树 开根号)
		
Rikka with Sequence Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
 - Java中的经典算法之冒泡排序(Bubble Sort)
		
Java中的经典算法之冒泡排序(Bubble Sort) 神话丿小王子的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一 ...
 - Java中的查找算法之顺序查找(Sequential Search)
		
Java中的查找算法之顺序查找(Sequential Search) 神话丿小王子的博客主页 a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数 ...
 - Java中的经典算法之选择排序(SelectionSort)
		
Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...
 - java模拟开锁
		
java模拟开锁 service qq:928900200 Introduction to Computer Science II: CSCI142Fall 2014Lab #1Instructor: ...
 
随机推荐
- 分享一下  常用的转换方法(例如:数字转金钱,文本与html互转等)
			
public sealed class SAFCFormater { /// <summary> /// 文本格式到HTML /// </summary> /// <pa ...
 - myEclipse 配置tomcat清除缓存
			
-Xms256m -Xmx512m -XX:MaxNewSize=64m -XX:MaxPermSize=128m
 - 用ECMAScript4 ( ActionScript3)  实现Unity的热更新 -- 使用FairyGUI (一)
			
我们的热更新脚本在实际使用中,当然也要支持常用的第三方组件,例如这里介绍一个非常实用的第三方UI库:FairyGUI. 什么是FairyGUI 这里照搬FaiyGUI官网的介绍: 重新定义 UI 制作 ...
 - leetCode刷题(找出数组里的两项相加等于定值)
			
最近被算法虐了一下,刷一下leetcode,找找存在感 如题: Given an array of integers, return indices of the two numbers such t ...
 - cnblog 模板 SimpleMemory 个性化设置代码备份
			
/页面顶部作者名/ blogTitle h1 { font-size: 50px; margin-top: 0px; } /页面简介/ blogTitle h2 { letter-spacing: 1 ...
 - Robot framework之元素定位实战
			
1.1 id 和name 定位 Web页面都是由许多标签和元素组成的,每个标签或元素都是很多属性,好比一个人 id 和name 可以看作一个人的身份证号和姓名.下面看下教育局招生系统的用户名输入 ...
 - 读《图解HTTP》有感-(返回结果的HTTP状态码)
			
写在前面 HTTP状态码是由服务端产生,用于告诉客户端,服务端处理结果的编码 正文 1.状态码的作用是什么?具有什么特征? 状态码的作用是当客户端向服务器发送请求时,描述服务器的响应结果(如:服务器正 ...
 - Vue 实现网易云音乐 WebApp
 - JS方法:数字转换为千分位字符
			
/** * 数字转为千分位字符 * @param {Number} num * @param {Number} point 保留几位小数,默认2位 */ function parseToThousan ...
 - PAT1065: A+B and C (64bit)
			
1065. A+B and C (64bit) (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming G ...