二分法求值

//二分算法求值
#include <stdio.h>
#include <math.h>

#define N 20

double ErFenFun(double A,double B,double c);
//求[A,B]区间内,误差不大于c的二分算法
double Fun(double x);

void main()
{
	double y,z,q,X;
	X=ErFenFun(0.0,1.0,5e-3);
	printf("\n求得最后结果为:X=%f\n",X);
}

double ErFenFun(double A,double B,double c)
{
	double k[N],a[N],b[N],m;
	int i,j,n;
	i=0;j=0;
	a[0]=A; b[0]=B;
	for(n=0;n<=N;n++)
	{
		k[n]=(a[i]+b[j])/2;
		if(Fun(k[n])*Fun(a[i])<0)
		{
			b[j+1]=k[n];
			a[i+1]=a[i];
		}
		else
		{
			a[i+1]=k[n];
			b[j+1]=b[j];
		}

		printf("a%d=%f,   b%d=%f,  k%d=%f\n",i,a[i],j,b[j],n,k[n]);

		i++;j++;
		if((B-A)*pow(0.5,n+1)<c)  break;
	}
	printf("共需要经过%d次二分!\n",n);
	return k[n];
}

double Fun(double x)
{
	return pow(x,5)+3*x-1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值