用二分法求方程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++语言编程!!!麻烦了!
展开
1个回答
展开全部
#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++刚开始学能不能编出这样的啊?
追答
你可以看一下,这个程序里面使用的都是比较基础的编程知识,没有用到类啊,结构体等等复杂的概念。唯一稍微有一点复杂的就是递归了,不过你的题目既然出的二分法,那么递归你应该已经接触过了,理解起来应该不会很难。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |