zoukankan      html  css  js  c++  java
  • 【noiOJ】p6253

    t6253:用二分法求方程的根

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    用二分法求下面方程在(-10, 10)之间的一个根。 
    2x3- 4x2+ 3x- 6 = 0

    输入
    一个小于1的非负实数e,它的值表示所能允许的误差
    输出
    一个实数,其值为求得的一个根,要求精确到小数点后8位。
    若该区间上没有根,则输出“No Solution”
    样例输入
    0
    样例输出
    2.00000000
    提示
    对于一个连续函数f(x),若f(a)*f(b) <= 0,则f(x)在区间[a, b]内至少有一个根。
    特别的,对于一个单调的连续函数,上述定理得逆定理也成立
    若[a, b]上有根,则可进一步考察根是否在 [a, (a+b)/2]内,或者在[(a+b)/2, b]内。

    若b-a <= e 则可终止迭代,并认为(a+b)/2是一个近似解,将它输出

    请使用double类型!
     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 double x;
     5 double judge(double xx)
     6 {
     7     return (2*xx*xx*xx-4*xx*xx+3*xx-6);
     8 }
     9 int main()
    10 {
    11     double left,right,mid,n,sum1,sum2,sum3;
    12     scanf("%lf",&x);
    13     left=-10; right=10;
    14     while (right>left)
    15     {
    16         mid=(left+right)/2;
    17         sum1=judge(left);
    18         sum2=judge(right);
    19         sum3=judge(mid);
    20         if (sum3==0 || right-left<=x)
    21         {
    22             printf("%.8lf",mid);
    23             return 0;
    24         }
    25         else
    26             if (sum1*sum3<0)
    27                 right=mid;
    28             else
    29                 if (sum2*sum3<0)
    30                     left=mid;
    31     }
    32     printf("No Solotion");
    33     return 0;
    34 }
    —Anime Otaku Save The World.
  • 相关阅读:
    数组
    Spring创建对象的三种方式以及创建时间
    Struts文件上传下载
    自定义拦截器
    Struts过滤器
    mybatis整合ehcache
    mybatis主键返回
    shell脚本 列出所有网卡的ip地址
    Servlet执行过程
    centos时区
  • 原文地址:https://www.cnblogs.com/DMoon/p/5004888.html
Copyright © 2011-2022 走看看