PAT编程基础 5-18 二分法求多项式单根 (20分)
来源:互联网 发布:大话数据库 pdf 下载 编辑:程序博客网 时间:2024/06/04 18:14
5-18 二分法求多项式单根 (20分)
二分法求函数根的原理为:如果连续函数f(x)f(x)在区间[a, b][a,b]的两个端点取值异号,即f(a)f(b)<0f(a)f(b)<0,则它在这个区间内至少存在1个根rr,即f(r)=0f(r)=0。
二分法的步骤为:
输入样例:
3 -1 -3 1
-0.5 0.5
输出样例:
0.33
分析:
二分法的定义上面已经描述的很清楚了,只需要把每个分步骤写出来即可
AC代码:
#include<stdio.h>double f (double a[], double x);int main (){ double a[4]; int i; for (i=3; i>=0; i--) { scanf("%lf", &a[i]); } double low, high; scanf("%lf %lf", &low, &high); double mid = ( low + high) /2; //区间长度大于给定阈值,并且中点値不为零 while (f(a, mid) != 0 && (high - low) > 0.001) { //如果左端点处值为零,即左端点为根,输出 if (f(a, low) == 0) { mid = low; break; } //如果右端点处值为零,即右端点为根,输出 if (f(a, high) == 0) { mid = high; break; } //如果f((a+b)/2)与f(low)同号 if (f(a, mid) * f(a, low) < 0) { high = mid; } else { //如果f((a+b)/2)与f(high)同号 low = mid; } mid = (low + high) / 2; } printf("%.2f\n", mid); return 0;}double f (double a[], double x) { return a[3] * x * x * x + a[2] * x * x + a[1] * x + a[0];}
0 0
- PAT编程基础 5-18 二分法求多项式单根 (20分)
- PAT编程基础 5-18 二分法求多项式单根 (20分)
- PAT - JAVA-5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 7-18 二分法求多项式单根(20 分)
- 5-21 二分法求多项式单根 (20分)
- PAT:二分法求多项式单根
- 二分法求多项式单根 PAT
- PAT 5-18 二分法求多项式单根 浮点数二分法
- PAT循环-08. 二分法求多项式单根(20)
- PAT 03-1. 二分法求多项式单根(20)
- PAT 03-1. 二分法求多项式单根(20)
- PAT 03-树1. 二分法求多项式单根(20)
- 5-18 二分法求多项式单根
- d盘无法格式化怎么解决
- OpenCV优化:图像的遍历4种方式
- HashTable的双重散列表
- SPFA
- 洛谷 P1984 [SDOI2008]烧水问题
- PAT编程基础 5-18 二分法求多项式单根 (20分)
- Elasticsearch增删改查
- 扫盲 HTTPS 和 SSL/TLS 协议[2]:可靠密钥交换的难点,以及身份认证的必要性
- APP 启动白屏 解决 4.4 onstart 不运行 的问题
- 使用Struts2的输入校验(一)--校验规则文件
- PC端和手机端调转
- UART协议
- 分区表单文件组实践
- iOS 崩溃调试EXC_BAD_ACCESS/EXC_BREAKPOINT