用二分法求方程x^3-6x-1=0在x=2附近的一个实根。要求迭代精度为10^(-8)。要求用C+ 30

用二分法求方程x^3-6x-1=0在x=2附近的一个实根。要求迭代精度为10^(-8)。要求用C++语言编程!!!麻烦了!... 用二分法求方程x^3-6x-1=0在x=2附近的一个实根。要求迭代精度为10^(-8)。要求用C++语言编程!!!麻烦了! 展开
 我来答
lyymin
2015-04-07 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:95.7万
展开全部
#include <math.h>
double findRoot(double a, double b, double c, double d, double x1, double x2)
{
    double x;
    if (fabs(x1-x2)<0.000000001)
        return ((int)(x1*100000000+0.5))/100000000.0;
    x = (x1+x2)/2;
    if (calculate(a,b,c,d,x)>=0)
        return findRoot(a, b, c, d, x, x2);
    else
        return findRoot(a, b, c, d, x1, x);
}

double calculate(double a, double b, double c, double d, double x)
{
    return a*x*x*x+b*x*x+c*x+d;
}

int main()
{
    double a, b, c, d;
    double x;
    double result1, result2, result3;
    a = 1;
    b = 0;
    c = -6;
    d = -1;
    x = 2;
    result1 = calculate(a,b,c,d,x);
    result2 = calculate(a,b,c,d,x+1);
    result3 = calculate(a,b,c,d,x-1);
    if ((result1>0)&&(result2<0))
        x = findRoot(a, b, c, d, x, x+1);
    else if ((result1>0)&&(result3<0))
        x = findRoot(a, b, c, d, x, x-1);
    else if ((result1<0)&&(result2>0))
        x = findRoot(a, b, c, d, x+1, x);
    else if ((result1<0)&&(result3>0))
        x = findRoot(a, b, c, d, x-1, x);
    printf("x=%.8f", x);
    return 0;
}
追问
C++刚开始学能不能编出这样的啊?
追答
你可以看一下,这个程序里面使用的都是比较基础的编程知识,没有用到类啊,结构体等等复杂的概念。唯一稍微有一点复杂的就是递归了,不过你的题目既然出的二分法,那么递归你应该已经接触过了,理解起来应该不会很难。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式