二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=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)=a​3​​x​3​​+a​2​​x​2​​+a​1​​x+a​0​​在给定区间[a,b]内的根。

输入格式:

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

输出格式:

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

输入样例:

3 -1 -3 1
-0.5 0.5

输出样例:

0.33
#include <stdio.h>
#include <math.h>double F(double f, double a3, double a2, double a1, double a0);int main(void)
{double a0, a1, a2, a3;double a, b;double f1, f2, mult, t, h, d1, d2, output;scanf("%lf %lf %lf %lf", &a3, &a2, &a1, &a0); scanf("%lf %lf", &a, &b);while  ( (b-a)>0.01 || (a-b)>0.01 ) {f1 = F(a, a3, a2, a1, a0);f2 = F(b,a3, a2, a1, a0);mult = f1*f2;if (mult<0){h = (a+b)/2;t = F(h,a3, a2, a1, a0);d1 = t * f1;d2 = t * f2;if ( t == 0 ) {goto P;} else if ( d1>0 ){a = (a+b)/2;} else {b = (a+b)/2;}} else if (mult==0 && f1 == 0) {b = a;} else if (mult==0 && f2 == 0) {a =b;}}P:output = (a+b)/2;printf("%.2f\n", output);return 0;
}double F(double f, double a3, double a2, double a1, double a0)
{double m;m = a3*pow(f,3) + a2*pow(f,2) + a1*f + a0;return m;
}

这个程序写了好久发现都提交答案错误,最后参考了别人的,发现原来是自己的数据类型用错了,这里的函数值应该用double 而不是整数 int

翁恺C语言PTA 7-29 二分法求多项式单根相关推荐

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

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

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

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

  3. 用C语言解“二分法求多项式单根”题

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

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

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

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

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

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

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

  7. 中国大学MOOC翁恺C语言PTA入门练习(更新中)

    目录 7-1 重要的话说三遍 (5 分) 7-2 I Love GPLT (5 分) 7-3 输出带框文字 (5 分) 7-4 输出菱形图案 (5 分) 7-5 输出倒三角图案 (5 分) 7-6 厘 ...

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

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

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

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

最新文章

  1. Python的知识点 plt.plot()函数细节
  2. 技术16期:如何更好的保证数据质量【大数据篇】
  3. Linux5-bash基础特性之命令历史
  4. Carring data across redirect requests
  5. Android 使用AIDL实现进程间的通信
  6. Sping-Spring表达式语言SpEL
  7. 成功解决for循环语句中,后几次循环输出数据一直全部为空
  8. IE新0day漏洞(979352)(又称极光零日漏洞)***将扩散
  9. HDU - 3746 Cyclic Nacklace(KMP的next数组判循环节)
  10. 火狐怎么在线升级 火狐浏览器在线升级方法分享
  11. 机器学习笔记(一) : 线性建模——最小二乘法
  12. 组合总和3 leetcode 216
  13. RecycleView
  14. PHP数据库统计时间戳按天分组输出数据
  15. 从零开始学PCR技术(一):PCR技术简介
  16. Unity图片优化神器 - Dither算法进阶方案
  17. Android 远程协助(亲情助手||投屏||远程演示)实现思路和简单实现
  18. mysql 处理emij表情_判断是否emij表情
  19. ggplot2图形排版:patchwork包简单入门
  20. linux查看网络信息命令

热门文章

  1. 《比海更深》 是枝裕和 读后感
  2. 台式电脑F1F2变成音量键怎么办
  3. iphone 4s 激活错误
  4. StatsD 五种类型数据发送形式拟测试
  5. 游戏辅助制作核心--植物大战僵尸逆向之太阳花加速生产阳光(三)
  6. Redis高可用——主从复制、哨兵模式、集群
  7. 百度同步盘linux客户端,技术|Linux下百度云的Python客户端(支持Unicode)
  8. 单片机入门学习笔记6:新唐单片机N76E003
  9. 2021强烈推荐的十大Win10必备工具(重装系统必备)
  10. PCB数字地,模拟地,电源地