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.
  • 相关阅读:
    vue eslint报错解决办法
    vue动态修改title
    vue组件引入失败原因之一
    BootStrap 获得轮播中的索引和当前活动的焦点对象
    云开发创建云函数
    vue-cli打包后,图片路径不对
    vue打包完样式冲突
    css文字环绕
    Java——Netty Reactor模型(转)
    Java——Netty 线程模型与Reactor 模式(转)
  • 原文地址:https://www.cnblogs.com/DMoon/p/5004888.html
Copyright © 2011-2022 走看看