5-18 二分法求多项式单根 (20分)
来源:互联网 发布:淘宝支付不了钱怎么办 编辑:程序博客网 时间:2024/05/16 06:42
5-18 二分法求多项式单根 (20分)
二分法求函数根的原理为:如果连续函数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 <stdlib.h>#include"math.h"double a0,a1,a2,a3;double f(double num){ return a3*pow(num,3)+a2*pow(num,2)+a1*num+a0;}int main(){ double a,b; double left,right; scanf("%lf%lf%lf%lf",&a3,&a2,&a1,&a0); scanf("%lf%lf",&a,&b); left=a; right=b; int flag=1; while(right-left>0.001) { if(f((left+right)/2)==0) { printf("%.2f\n",(left+right)/2); flag=0; break; } else if(f(left)*f((left+right)/2)>0) { left=(left+right)/2; } else { right=(left+right)/2; } } if(flag) printf("%.2f\n",(left+right)/2); return 0;}
0 0
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根 (20分)
- 7-18 二分法求多项式单根(20 分)
- 5-21 二分法求多项式单根 (20分)
- PAT - JAVA-5-18 二分法求多项式单根 (20分)
- PAT编程基础 5-18 二分法求多项式单根 (20分)
- PAT编程基础 5-18 二分法求多项式单根 (20分)
- 5-18 二分法求多项式单根
- 5-18 二分法求多项式单根
- 7-18 二分法求多项式单根
- 5-18 二分法求多项式单根 C语言版
- PTA 5-18 二分法求多项式单根
- 二分法求多项式单根
- 二分法求多项式单根
- PAT 5-18 二分法求多项式单根 浮点数二分法
- huu 1003Max Sum dp
- Android RecyclerView中ViewHolder的复用导致数据错乱解决办法
- CentOS7 防火墙操作
- 减少视图层级<merge />
- tungsten安装mysql到oracle复制
- 5-18 二分法求多项式单根 (20分)
- Linxu下crontab结合脚本实现定时任务
- Java 设计模式的浅谈
- hdu1003Max Sum
- 仿QQ5.5登陆框
- 第一次机房收费系统——幽梦
- 数据结构学习二 数据结构之链表图解版【创建,遍历,删除,插入】
- 自定义listview完成上拉刷新,下拉加载的功能,重写ontouchevent方法
- java-基础-Interface、abstract类、Static class 、non static class的区别