方程求根

 

1. 已知方程x2-x-2=0在区间[1,4]内有一实根。以下程序中的函数double root(double a,double b)为递归函数,采用二分法(半分区间法)求方程f(x)=0在区间[a,b]内的一个实根x,当|f(x)|<0.000001时,x即为所求的近似根。

为使程序具有通用性,方程各项的系数依次存储在一维数组coef[]中

//零点存在定理找根
#include<iostream>
#include<cmath>
using namespace std;
double f(double x,double coef[]){
	return coef[0]*x*x - coef[1]*x - coef[2]; 
}
double root(double a, double b, double coef[]){
	double m, f0, x;
    m =(a+b)/2;
	f0=f(a, coef);
	x=0;
	if(fabs(f(m, coef))<1e-6) 
		x=m; 
	else {
		if( f0*f(m, coef)>0) a=m;//同号,无根
		else b=m;
		x=root(a, b, coef);  
	}
	return x;
}

int main(){
	double coef[]={1,-1,-2};
	cout<<"One root is "<<root(1,4,coef) <<endl;
    return 0;
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值