7-18 二分法求多项式单根

二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0。

二分法的步骤为:

检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
如果f(a)f(b)<0,则计算中点的值f((a+b)/2);
如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2,b],令a=(a+b)/2,重复循环;
如果f((a+b)/2)与f(b)同号,则说明根在区间[a,(a+b)/2],令b=(a+b)/2,重复循环。
本题目要求编写程序,计算给定3阶多项式f(x)=a3x**3+a2x**2+a1*x+a0在给定区间[a,b]内的根。

输入格式:
输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

输出格式:
在一行中输出该多项式在该区间内的根,精确到小数点后2位。

输入样例:

3 -1 -3 1
-0.5 0.5

输出样例:

0.33

思路

这道题利用定义函数来实现重复循环这一特点,在利用多各if语句来实现二分法的算法。还需注意f(a)=0和f(b)=0时的根。

代码

#include <stdio.h>
int main()
{double a3,a2,a1,a0;scanf("%lf %lf %lf %lf",&a3,&a2,&a1,&a0);double a,b;scanf("%lf %lf",&a,&b);//定义f(x)函数double f(double x){return a3*pow(x,3)+a2*pow(x,2)+a1*x+a0;}//定义二分法g(a,b)函数double g(double a,double b){//当a,b区间小于阈值时if((b-a)<0.001) printf("%.2f",((a+b)/2));//当a,b区间大于阈值时   else if(f(a)*f(b)<0){//如果f((a+b)/2)正好为0if(f((a+b)/2) == 0)printf("%.2f",((a+b)/2));else{if(f((a+b)/2)*f(a)>0){a = (a+b)/2;g(a,b);}else if(f((a+b)/2)*f(b)>0){b = (a+b)/2;g(a,b);}}}//特殊情况,当f(a)=0else if(f(a)==0)printf("%.2f",a);//特殊情况,当f(b)=0else if(f(b)==0)printf("%.2f",b);}if(a<b)g(a,b);return 0;
}

用C语言解“二分法求多项式单根”题相关推荐

  1. 用Python解“二分法求多项式单根 ”题

    7-18 二分法求多项式单根 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分法的步骤 ...

  2. PTA 基础编程题目集 7-18 二分法求多项式单根 C语言

    PTA 基础编程题目集 7-18 二分法求多项式单根 C语言 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个 ...

  3. 7-166 二分法求多项式单根 (20 分)

    7-166 二分法求多项式单根 (20 分) 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r) ...

  4. PTA——二分法求多项式单根

    PTA--二分法求多项式单根 题目: 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分 ...

  5. 7-18 二分法求多项式单根 (20 分)

    7-18 二分法求多项式单根 (20 分) 输入格式: 输入在第1行中顺序给出多项式的4个系数a3 a2 a1 a0,在第2行中顺序给出区间端点a和b.题目保证多项式在给定区间内存在唯一单根. 输出格 ...

  6. 翁恺C语言PTA 7-29 二分法求多项式单根

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小 ...

  7. 7-18 二分法求多项式单根 (C语言)

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小 ...

  8. 7-5 二分法求多项式单根 (20分)

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f( r )=0. 二分法的步骤为: 检查区间长度,如 ...

  9. Python 二分法求多项式单根

    二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小 ...

最新文章

  1. ReportDB数据库存储选型分析
  2. ActivityRouter 框架简单实用
  3. 中科微研携手-农业大健康·李喜贵:从玉农业谋定功能性农业
  4. properties 配置回车_在Ubuntu上部署基于Docker的RSSHub,并配置SSL证书
  5. 设计模式:命令模式(Command)
  6. 服务器USB启动故障一例
  7. 【303】C# 复制窗体 修改名称
  8. [笔记].痛哉!!!Error: Can't access JTAG chain, Error: Operation failed
  9. 东南大学计算机考研数学教材,考东南大学计算机的看这里,双非学长逆袭!
  10. 学生宿舍管理系统C语言大作业,C语言程序设计---学生宿舍管理系统
  11. Microsoft Word 教程:如何在 Word 中插入页码、目录?
  12. MySQL- where条件 in 条件优化
  13. 统计年鉴 excel
  14. jfinal连接oracle_JFinal中多数据源的配置[本文是mysql+oracle]
  15. 用GIF图片来告诉大家程序猿的真实生活 ————“你熬了一整夜、耗了一整天,开始调试代码时:” 那张最有感觉了,你们感受一下。。。
  16. 如何运行vue项目(详细步骤)
  17. vue3中的setup函数
  18. 学习笔记 | mac下查看mysql的端口号
  19. 易支付5.18最新版协议去授权全套三端开源源码_客户端+云端+监控+协议三网免挂免输入(全套版)
  20. 建立新闻内容的数据库_使用数据新闻学产生内容创意

热门文章

  1. 对象是否要被回收(引用计数和可达性分析算法)
  2. Java 泛型 T,E,K,V,?,傻傻分不清?
  3. java 插入排序_看动画学算法之:排序-插入排序
  4. Python实战案例,CV2模块,Python实现抖音字符视频
  5. 使用 OpenCV 和 Python 模糊和匿名化人脸
  6. 堆晶结构_橄榄岩的特殊问题
  7. intouch负值显示0_excel 应用中计算结果显示为负数,使负数显示为0应如何操作?...
  8. python 可视化界面_工具推荐 | 3维数据可视化
  9. vscode 逗号不换行_在VSCode里面配置Vim正确姿势(细节解析)
  10. html页面判断其他div为空,将外部html加载到div中 - 页面加载然后变为空白