翁恺C语言PTA 7-29 二分法求多项式单根
二分法求函数根的原理为:如果连续函数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)=a3x3+a2x2+a1x+a0在给定区间[a,b]内的根。
输入格式:
输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0,在第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 二分法求多项式单根相关推荐
- PTA 基础编程题目集 7-18 二分法求多项式单根 C语言
PTA 基础编程题目集 7-18 二分法求多项式单根 C语言 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个 ...
- PTA——二分法求多项式单根
PTA--二分法求多项式单根 题目: 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分 ...
- 用C语言解“二分法求多项式单根”题
7-18 二分法求多项式单根 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分法的步骤 ...
- 用Python解“二分法求多项式单根 ”题
7-18 二分法求多项式单根 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0. 二分法的步骤 ...
- 7-166 二分法求多项式单根 (20 分)
7-166 二分法求多项式单根 (20 分) 二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r) ...
- 7-18 二分法求多项式单根 (20 分)
7-18 二分法求多项式单根 (20 分) 输入格式: 输入在第1行中顺序给出多项式的4个系数a3 a2 a1 a0,在第2行中顺序给出区间端点a和b.题目保证多项式在给定区间内存在唯一单根. 输出格 ...
- 中国大学MOOC翁恺C语言PTA入门练习(更新中)
目录 7-1 重要的话说三遍 (5 分) 7-2 I Love GPLT (5 分) 7-3 输出带框文字 (5 分) 7-4 输出菱形图案 (5 分) 7-5 输出倒三角图案 (5 分) 7-6 厘 ...
- 7-18 二分法求多项式单根 (C语言)
二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0. 二分法的步骤为: 检查区间长度,如果小 ...
- 7-5 二分法求多项式单根 (20分)
二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f( r )=0. 二分法的步骤为: 检查区间长度,如 ...
最新文章
- Python的知识点 plt.plot()函数细节
- 技术16期:如何更好的保证数据质量【大数据篇】
- Linux5-bash基础特性之命令历史
- Carring data across redirect requests
- Android 使用AIDL实现进程间的通信
- Sping-Spring表达式语言SpEL
- 成功解决for循环语句中,后几次循环输出数据一直全部为空
- IE新0day漏洞(979352)(又称极光零日漏洞)***将扩散
- HDU - 3746 Cyclic Nacklace(KMP的next数组判循环节)
- 火狐怎么在线升级 火狐浏览器在线升级方法分享
- 机器学习笔记(一) : 线性建模——最小二乘法
- 组合总和3 leetcode 216
- RecycleView
- PHP数据库统计时间戳按天分组输出数据
- 从零开始学PCR技术(一):PCR技术简介
- Unity图片优化神器 - Dither算法进阶方案
- Android 远程协助(亲情助手||投屏||远程演示)实现思路和简单实现
- mysql 处理emij表情_判断是否emij表情
- ggplot2图形排版:patchwork包简单入门
- linux查看网络信息命令