UVA 10341 (二分查找+精度)
来源:互联网 发布:淘宝客鹊桥网站 编辑:程序博客网 时间:2024/05/17 20:23
题意:
给你一个关于x的方程,给出变量的值,求出x;
Problem F
Solve It
Input:standard input
Output:standard output
Time Limit: 1 second
Memory Limit: 32 MB
Solve the equation:
p*e-x+ q*sin(x) + r*cos(x) +s*tan(x) +t*x2 +u = 0
where 0 <= x <= 1.
Input
Input consists of multiple test cases and terminated by an EOF. Each test case consists of 6 integers in a single line:p,q,r,s,t and u (where0 <= p,r <= 20 and-20 <=q,s,t <= 0). There will be maximum 2100 lines in the input file.
Output
For each set of input, there should be a line containing the value ofx, correct upto 4 decimal places, or the string "No solution", whichever is applicable.
Sample Input
0 0 0 0 -2 1
1 0 0 0 -1 2
1 -1 1 -1 -1 1
Sample Output
0.7071
No solution
思路:二分法零点定理找根,必须在[0,1]上单调,求导f'(x)=-p*e(-x)+q*cos(x)-r*sin(x)+s/(cos(x)*cos(x))+2t*x
x , [0,1]
e(-x) ,[1/e,1]
cos(x),[0,pi]
sin(x) , [0,pi]
p,r>0 q,s,t<0, f'(x)的每一项都是负的,
f(x)单调递减,故二分枚举,当f(left) *f(right)>0,无解
代码:
#include <iostream>// 二分查找,#include <algorithm>#include <string>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <queue>#include <stack>#include <map>#include <set>using namespace std;typedef long long ll;typedef pair<int,int> P;const int maxn=105;const int base=1000;const int inf=0x3f3f3f3f;const double eps=1e-8;const double pi=acos(-1.0);double p,q,r,s,t,u;double fun(double x){ return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*pow(x,2)+u;}int main(){ int n,m,i,j; while(~scanf("%lf%lf%lf%lf%lf%lf",&p,&q,&r,&s,&t,&u)) { int sum=0; double left=0, right=1, mid; bool flag=false; if(fun(left)*fun(right)>0) //在同一侧,无解 { printf("No solution\n"); continue; } while(right-left>eps) //二分逼近 { mid=(left+right)/2; if(fun(mid)*fun(left)>0) left=mid; else right=mid; } printf("%.4f\n",mid); } return 0;}
0 0
- UVA 10341 (二分查找+精度)
- UVA 10341 Solve It 解方程 二分查找+精度
- UVA 10341 Solve It (解方程 二分查找+精度)
- 二分查找中的精度问题
- UVA 10341- Solve It(二分+精度求解方程值)
- NBUT 内部收益率(二分查找,精度问题)
- [二分查找]Babelfish uva 10282
- uva - 10341 - Solve It(二分查找,数学)
- uva 10341 - Solve It(二分查找水题)
- 搜索入门之“二分查找”&&double运算精度问题-HDU2199
- SDUST - Training F HDU2199 方程求解,二分查找,精度控制
- hdoj 2899 Strange fuction 【二分查找 注意精度】
- UVA 10763 - Foreign Exchange(二分查找)
- UVA 10487 Closest Sums (二分查找)
- UVa 10487 Closest Sums (遍历&二分查找)
- UVa 10125 Sumsets (折半枚举&二分查找)
- uva - 10487 - Closest Sums(二分查找)
- uva:10487 - Closest Sums(二分查找)
- Windows编程学习札记:获取设备环境句柄
- R基本作图《二》
- 使用Storm实现实时大数据分析!
- 【设计模式】一石三鸟——三个工厂
- JAVA 几个常见的概念
- UVA 10341 (二分查找+精度)
- 1.html5简介
- lua 时间函数
- spark1.2.0源码MLlib-线性回归
- Android----蓝牙通信使用 不同手机下同一应用通信
- windows bat批处理函数
- const常量与宏定义区别
- 以jetty做容器,数据在传输过程中出现乱码
- HDU 4289 Control(最小割)