数值计算——一维非线性方程求解
1、二分法
把函数f(x)的零点所在的区间[a,b](满足f(a)●f(b)<0)“一分为二”,得到[a,m]和[m,b]。根据“f(a)●f(m)<0”是否成立,取出零点所在的区间[a,m]或[m,b],仍记为[a,b]。所对得的区间[a,b]重复上述步骤,直到包含零点的区间[a,b]“足够小”,则[a,b]内的数可以作为方程的近似解。
package com.kexin.lab6;
import java.text.DecimalFormat;
/**
* 二分法求解非线性方程组
* @author KeXin
*
*/
public class Bisection {
//精度
final static double tol = 0.000001;
/**
* 定义函数x^3-2x-5,返回指定x的函数值
* @param a
* @return
*/
public static double Function(double a){
// double result = Math.pow(a, 2)-4*Math.sin(a); //书上的例题测试
double result = Math.pow(a, 3)-2*a-5;
return result;
}
/**
* 二分法定有根区间
* @param a
* @param b
* @return
*/
public static void Bisect(double a,double b){
DecimalFormat df = new DecimalFormat(