1241:二分法求函数的零点
程序员文章站
2024-03-20 12:50:58
...
【题目描述】
有函数:f(x)=x5−15x4+85x3−225x2+274x−121
已知f(1.5)>0,f(2.4)<0
且方程f(x)=0 在区间[1.5,2.4
] 有且只有一个根,请用二分法求出该根。
【输入】
(无)
【输出】
该方程在区间[1.5,2.4
]中的根。要求四舍五入到小数点后6
位。
【输入样例】
(无)
【输出样例】
(无)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <cstdlib>
#define sf(a) scanf("%d\n",&a)
#define pf(a) printf("%.6lf ",a)
#define E 1e-8
#define ms(a) memset(a,0,sizeof a)
#define rep(a,b,c) for(a=b;a<=c;a++)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const int idata=1e5+5;
ll minn=inf,maxx=-inf;
ll n,ans,t,k;
char *ch;
int *step;
int cnt;
ll temp[idata];
priority_queue< int,vector<int>,greater<int> >q;
pair<int,int>p[idata];
int flag;
double f(double x)
{
return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
int main()
{
double l=1.5,r=2.4;
double mid=(l+r)/2;
while(r-l>E)
{
if(f(mid)>0)
l=mid;
if(f(mid)<0)
r=mid;
mid=(l+r)/2;
}
pf(mid);
return 0;
}
上一篇: 两则小故事
下一篇: jsp页面获取session中的值