数值分析方法——寻根问题(二分法)

 

在 (a,b) 上,若 f(x) 仅有一个零点,且在零点附近是单调的,则可以使用二分法。(x^2=0不可以用二分法解决)

  1. 原理:在 f(x) 的零点附近 f(x) 异号,则可以利用这一特性来寻找零点。只需要不断地缩小区间范围,并且使得 f(x) 在区间端点上的值异号,当区间足够小时,得到了近似解。
  2. code
    #include<stdio.h>
    #include<math.h>
    #define TOL 0.00001 //TOL为允许误差
    
    double f(double x); //解决f(x)=0的问题
    
    int main(){
      int i, N0=1000;      //N0是最大迭代次数
      double a=0, b=1, p;  //p是中点,a,b为区间端点
      double FA, FP;
      
      FA = f(a);
      for(i=1; i<=N0; i++){
      	p = a+(b-a)/2;       //compute pi
      	FP = f(p);
      	if(FP==0||(b-a)/2<TOL){
      		printf("%f is the root we find", p);
      		break;
    	  }
    	else{
    		printf("%d: the midpont is %f\n", i, p);
    		i++;
    		if(FP*FA>0){  //change a or b
    			a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值