zoukankan      html  css  js  c++  java
  • UVa 10341

      题目:给一个方程,求解方程的解。已给出解的范围,并且可知方程等号左侧的函数是递减的,可用二分法进行试探,直到得出给定误差范围内的解。

     1 #include <cstdio>
     2 #include <cmath>
     3 #define EPSILON 1e-9
     4 
     5 int p, q, r, s, t, u;
     6 
     7 double f(double x)
     8 {
     9     return p*exp(-1.0*x) + q*sin(x) + r*cos(x) + s*tan(x) + t*x*x + u;
    10 }
    11 
    12 int main()
    13 {
    14 #ifdef LOCAL
    15     freopen("in", "r", stdin);
    16 #endif
    17     while (scanf("%d%d%d%d%d%d", &p, &q, &r, &s, &t, &u) != EOF)
    18     {
    19         if (f(0) < 0 || f(1) > 0)
    20         {
    21             printf("No solution
    ");
    22             continue;
    23         }
    24         double x = 0, y = 1;
    25         while (y - x > EPSILON)
    26         {
    27             double m = (x+y)/2;
    28             if (f(m) < 0)   y = m;
    29             else x = m;
    30         }
    31         printf("%.4lf
    ", x);
    32     }
    33     return 0;
    34 }
    View Code

      开始的时候WA了一次,后来把EPSILON的值从1e-6调成1e-9就好了,又是这个问题...

  • 相关阅读:
    hotel管理
    MySQL数据库的学习
    搭建纸飞机
    二维码
    Linux 的安装
    AngularJS学习笔记
    css3部分知识点
    如何处理数据
    jq跨域在127.0.0.1:8020上的写法
    AJAX请求方式
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3211737.html
Copyright © 2011-2022 走看看