编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。
编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。提示:用do-while语句实现。二分法的计算步骤:准备计算f(x)在有根区间[a,b]端...
编写程序,用二分法求方程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 <stdio.h>
#include <math.h>
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.\n",c);
else
{
do
{
c=(a+b)/2;
if (fa*fc<0)
{a=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;}
else
{b=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;}
}
while (abs(b-a)>0.1e-6);
printf("the result is %lf.\n",c);
}
} 展开
提示:
用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 <stdio.h>
#include <math.h>
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.\n",c);
else
{
do
{
c=(a+b)/2;
if (fa*fc<0)
{a=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;}
else
{b=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;}
}
while (abs(b-a)>0.1e-6);
printf("the result is %lf.\n",c);
}
} 展开
3个回答
展开全部
#include <iostream>
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<0) b = (a+b)/2;
else if(fm*fb<0) a = (a+b)/2;
}while(b-a>0.00001);
cout << ((b+a)/2) << endl;
}
------
你的修改过的:
#include <stdio.h>
#include <math.h>
int main()
{
float a=-10.0;
float b=10.0;
float fc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if (fc==0)
printf("the result is %lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0) break;
if (fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
else if(fb*fc<0)
{a=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;}
}
while (b-a>0.1e-6);
printf("the result is %lf.\n",c);
}
}
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<0) b = (a+b)/2;
else if(fm*fb<0) a = (a+b)/2;
}while(b-a>0.00001);
cout << ((b+a)/2) << endl;
}
------
你的修改过的:
#include <stdio.h>
#include <math.h>
int main()
{
float a=-10.0;
float b=10.0;
float fc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if (fc==0)
printf("the result is %lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0) break;
if (fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
else if(fb*fc<0)
{a=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;}
}
while (b-a>0.1e-6);
printf("the result is %lf.\n",c);
}
}
展开全部
#include
<iostream>
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<0)
b
=
(a+b)/2;
else
if(fm*fb<0)
a
=
(a+b)/2;
}while(b-a>0.00001);
cout
<<
((b+a)/2)
<<
endl;
}
------
你的修改过的:
#include
<stdio.h>
#include
<math.h>
int
main()
{
float
a=-10.0;
float
b=10.0;
float
fc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if
(fc==0)
printf("the
result
is
%lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0)
break;
if
(fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
else
if(fb*fc<0)
{a=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;}
}
while
(b-a>0.1e-6);
printf("the
result
is
%lf.\n",c);
}
}
<iostream>
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<0)
b
=
(a+b)/2;
else
if(fm*fb<0)
a
=
(a+b)/2;
}while(b-a>0.00001);
cout
<<
((b+a)/2)
<<
endl;
}
------
你的修改过的:
#include
<stdio.h>
#include
<math.h>
int
main()
{
float
a=-10.0;
float
b=10.0;
float
fc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if
(fc==0)
printf("the
result
is
%lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0)
break;
if
(fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
else
if(fb*fc<0)
{a=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;}
}
while
(b-a>0.1e-6);
printf("the
result
is
%lf.\n",c);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
usingnamespacestd;
doublep(doublex)
{
return2*x*x*x-4*x*x+3*x-6;
}
intmain()
{
doublea,b;
cin>>a>>b;
doublefa=p(a),fb=p(b),fm;
do
{
fm=p((a+b)/2);
if(fm==0)break;
if(fm*fa<0)b=(a+b)/2;
elseif(fm*fb<0)a=(a+b)/2;
}while(b-a>0.00001);
cout<<((b+a)/2)<<endl;
}
------
你的修改过的:
#include<stdio.h>
#include<math.h>
intmain()
{
floata=-10.0;
floatb=10.0;
floatfc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if(fc==0)
printf("theresultis%lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0)break;
if(fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
elseif(fb*fc<0)
{a=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;}
}
while(b-a>0.1e-6);
printf("theresultis%lf.\n",c);
}
}
usingnamespacestd;
doublep(doublex)
{
return2*x*x*x-4*x*x+3*x-6;
}
intmain()
{
doublea,b;
cin>>a>>b;
doublefa=p(a),fb=p(b),fm;
do
{
fm=p((a+b)/2);
if(fm==0)break;
if(fm*fa<0)b=(a+b)/2;
elseif(fm*fb<0)a=(a+b)/2;
}while(b-a>0.00001);
cout<<((b+a)/2)<<endl;
}
------
你的修改过的:
#include<stdio.h>
#include<math.h>
intmain()
{
floata=-10.0;
floatb=10.0;
floatfc,fa,fb,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;
fb=2*pow(b,3)-4*pow(b,2)+3*b-6;
if(fc==0)
printf("theresultis%lf.\n",c);
else
{
do
{
c=(a+b)/2;
if(fc==0)break;
if(fa*fc<0)
{b=c;c=(a+b)/2;fc=2*pow(c,3)-4*pow(c,2)+3*c-6;fb=2*pow(b,3)-4*pow(b,2)+3*b-6;}
elseif(fb*fc<0)
{a=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;}
}
while(b-a>0.1e-6);
printf("theresultis%lf.\n",c);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询