设为首页 加入收藏

TOP

UVA 10341 (二分查找+精度)
2015-07-20 17:24:04 来源: 作者: 【 】 浏览:1
Tags:UVA 10341 二分 查找 精度

题意:

给你一个关于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 
  
   // 二分查找,
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
             #include 
             
               using namespace std; typedef long long ll; typedef pair
              
                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; }
              
             
           
          
         
        
       
      
     
    
   
  



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 3853 LOOPS DP 下一篇CSU 1350To Add Which? 给序列增..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)
·MySQL下载与安装教程 (2025-12-26 13:21:26)
·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)