zoukankan      html  css  js  c++  java
  • UVA10341解方程(二分)

    题意:
          给你一个方程 F[x] = pe^-x + qsin(x) + rcos(x) + stan(x) + tx^2 + u = 0(0<=p,r<=20,-20<=q,s,t<=0),给你pqrstu然后问你在定义域内的解是多少0<=x<=1。


    思路:
          在定义域内,前面5个都是减函数,所以当F[0] >= 0 && F[1] <= 0时才有唯一解,否则无解,如果有解的话既然是单调的,那么我们就可以二分去求解,二分的时候一开始根据绝对值的大小判断一直得不出答案,最后按照函数小于零的时候就往左移才过。




    #include<math.h>
    #include<stdio.h>


    #define eps 0.0000000001
    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 * x * x + u;
    }


    double abss(double x)
    {
        return x > 0 ? x : -x;
    }


    int main ()
    {
        while(~scanf("%lf %lf %lf %lf %lf %lf" ,&p ,&q ,&r ,&s ,&t ,&u))
        {
            if(Fun(0) < -eps || Fun(1) > eps)
            {
                printf("No solution ");
                continue;
            }
            double low ,up ,mid;
            low = 0 ,up = 1;
            for(int i = 1 ;i <= 50 ;i ++)
            {
                mid = low + (up - low) / 2;
                if(Fun(mid) < 0) up = mid;
                else low = mid;
            }
            printf("%.4lf " ,low);
        }


    }









  • 相关阅读:
    老鸟的Python新手教程
    vs2010经常使用快捷键
    SQL基础--&gt; 约束(CONSTRAINT)
    哈哈,做题了
    【网络协议】TCP中的四大定时器
    JAVA反射机制
    JUnit入门
    怎样将程序猿写出来的程序打包成安装包(最简单的)
    事件传递机制总结
    理解class.forName()
  • 原文地址:https://www.cnblogs.com/csnd/p/12062586.html
Copyright © 2011-2022 走看看