当前位置: > 编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根....
题目
编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根.
提示:
用do-while语句实现.
二分法的计算步骤:
准备 计算f(x)在有根区间[a,b]端点处的值f(a),f(b)
二分 计算f(x)在区间中点(a+b)/2处的值f[(a+b)/2]
判断若f[(a+b)/2]=0,则即是根,计算过程结束.
否则,检测:
若f[(a+b)/2]与f(a)异号,则根位于区间[a,(a+b)/2]内,这时以(a+b)/2代替b;
若f[(a+b)/2]与f(a)同号,则根位于区间[(a+b)/2,b]内,这时以(a+b)/2代替a;
反复执行步骤2和3,直到区间[a,b]长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根.
下边是我做的,不知道哪里出错了.
#include
#include
void main()
{
float a=-10.0;
float b=10.0;
float fc,fa,c;
c=(a+b)/2;
fc=2*pow(c,3)-4*pow(c,2)+3*c-6;
fa=2*pow(a,3)-4*pow(a,2)+3*a-6;
if (fc==0)
printf("the result is %lf. ",c);
else
{
do
{
c=(a+b)/2;
if (fa*fc0.1e-6);
printf("the result is %lf. ",c);
}
}

提问时间:2020-11-19

答案
#include
using namespace std;
double p(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
int main()
{
double a,b;
cin >> a >> b;
double fa = p(a),fb = p(b),fm;
do
{
fm = p((a+b)/2);
if(fm==0) break;
if(fm*fa
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
版权所有 CopyRight © 2012-2019 超级试练试题库 All Rights Reserved.