c语言实现二分法(有运行截图,超级详细)

#include<stdio.h>
#include<math.h>
#define PI 3.1415926
double f(double x)
{
	double y;
	y=x*x*x-x-1;
	return y;
}                //自定义函数// 
void print(int a1,int b1,double p,double q,int N)
{
	int k,x;
	k=0;
	x=0;
	double y1,y2,c,a,b;
	a=a1*1.0;
	b=b1*1.0;
	y1=0.0;
	y2=0.0;
	c=0.0;
	while(N--)
	{
		y1=f(a);
		y2=f(b);
		k++;
		if(y1*y2>0)                   //判断每次的区间是否满足该方程式// 
		{
			printf("在此函数中该区间没有值\n");
			printf("k=%d\n",k);
			break;
		}
		c=(a+b)/2.0;
		if(f(c)*f(a)<0)
		{
			b=c;
		}else if(f(c)*f(b)<0){
			a=c;
		}
		printf("a=%lf,b=%lf,f(a)=%lf,f(b)=%lf\n",a,b,f(a),f(b));
		if(f(a)-f(b)<p&&f(a)-f(b)>-p)
		{
			if(a-b<p&&a-b>-q)
			{
				printf("k=%d,x=%lf,y=%lf",k,c,f(c));
				break;
			}
		}
	}
}
int main()
{
	int a1,b1,N;         //N是最大二分次数,k是二分次数,a是左区间,b是右区间//  
	double p,q;                 //p是函数的误差,q是区间的误差// 
	printf("分别输入区间a,b,函数误差p,区间误差q,二分最大次数N\n");
	scanf("%d%d%lf%lf%d",&a1,&b1,&p,&q,&N);
	print(a1,b1,p,q,N); 
	return 0;
}

这个里面我是定义了一个函数是x的三次方-x-1求它的实根(二分法只能求实根而且只能求一个)

下面看运行结果:

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新城已无旧少年_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值