【蓝桥杯真题】一元三次方程求解

这篇文章展示了如何使用C++编写一个函数,通过二分搜索算法在给定区间内找到一元三次函数的零点。程序利用连续函数的零点存在定理,逐步缩小搜索范围直到找到精确解。
摘要由CSDN通过智能技术生成

f26664c82c73423aa24f27223c442647.jpg

 #include<bit/stdc++.h>

using namespace std;

double a,b,c,d;

double f(double x){

 return a*pow(x,3)+b*pow(x,2)+c*x+d;

}

void find(double l,double r){

 if(r-l<0.001)

 {

  printf("%.2f ",r);

  return;

 }

  double mid=(l+r)/2;

  if(f(mid)==0)

  {

   printf("%.2f ",mid);

   return;

  }

  if(f(mid)*f(l)>0) 

  find(mid,r);

  else find(l,mid);

}

int main()

{

 int flag=0;

 cin>>a>>b>>c>>d;

 for(double i=-100;i<100&&flag!=3;i++){

  if(f(i)==0){

   printf("%.2f ",i);

   flag++;

   continue;

  }

  if(f(i)*f(i+1)<0){

   find(i,i+1);

   flag++;

  }

 }

 return 0;

}

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值