1. 程式人生 > >開方運算(求根)-- 中值定理

開方運算(求根)-- 中值定理

package controller;
/**
 * Created by zhz on 2016/7/18.
 */
public class MainMath {
    public static void main(String[] args) {
        MainMath m  = new MainMath();
System.out.println( m.root(2,0.000000000000001));
}

    /**
     *
     * @param x  要開方的數
     * @param error  允許的誤差範圍
     * @return
*/
public double root
(final double x, final double error) { double c = x ; double defineStart = 0 ; double defineEnd = x ; while(defineEnd - defineStart > error){ double defineMid = (defineStart + defineEnd) / 2.0 ; double resultStart = defineStart*defineStart - c ;
double resultEnd = defineEnd * defineEnd - c ; double resultMid = defineMid * defineMid - c ; if(resultStart == 0 ){ return defineStart; } if(resultMid == 0 ){ return defineMid; } if(resultEnd == 0 ){ return
defineEnd ; } System.out.println(defineStart + " --- " + defineEnd ); if( resultStart * resultMid < 0){ defineEnd = defineMid ; continue; } if(resultMid * resultEnd < 0){ defineStart = defineMid ; continue ; } } return defineEnd; } }