
用二分法求方程 2x^3-4x^2+3x=0 在(-10,10)附近的根
{floatx1,x2,t;x1=-9.8;x2=10.2;while(fabs(x2-x1)>1e-5){t=(x1+x2)/2;if((2*t*t*t-4*t*t+3...
{
float x1,x2,t;
x1=-9.8;x2=10.2;
while(fabs(x2-x1)>1e-5)
{t=(x1+x2)/2;
if((2*t*t*t-4*t*t+3*t-6)*(2*x1*x1*x1-4*x1*x1+3*x1-6)<=0)
x2=t;else x1=t;}printf("%f",t);
}我的过程哪错了啊 展开
float x1,x2,t;
x1=-9.8;x2=10.2;
while(fabs(x2-x1)>1e-5)
{t=(x1+x2)/2;
if((2*t*t*t-4*t*t+3*t-6)*(2*x1*x1*x1-4*x1*x1+3*x1-6)<=0)
x2=t;else x1=t;}printf("%f",t);
}我的过程哪错了啊 展开
2个回答
展开全部
while语句应该在if语句后执行
应用do while下面是我的程序,你输入初值就可以了
#include <iostream>
#include <stdio.h>
#include <math.h>
#define null 0
double fx(double); //fx函数
void main()
{
double xa(null),xb(null),xc(null);
do
{
printf("请输入一个范围x0 x1:");
std::cin>>xa>>xb; //输入xa xb的值
printf("%f %f",xa,xb);
}
while(fx(xa)*fx(xb)>=0);//判断输入范围内是否包含函数值0
do
{
if(fx((xc=(xa+xb)/2))*fx(xb)<0)//二分法判断函数值包含0的X取值区间
{
xa=xc;
}
else
{
xb=xc;
}
}
while(fx(xc)>1e-5||fx(xc)<-1e-5);//判断x根是否在接近函数值0的精确范围内
printf("\n 得数为:%f",xc);
}
double fx(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
应用do while下面是我的程序,你输入初值就可以了
#include <iostream>
#include <stdio.h>
#include <math.h>
#define null 0
double fx(double); //fx函数
void main()
{
double xa(null),xb(null),xc(null);
do
{
printf("请输入一个范围x0 x1:");
std::cin>>xa>>xb; //输入xa xb的值
printf("%f %f",xa,xb);
}
while(fx(xa)*fx(xb)>=0);//判断输入范围内是否包含函数值0
do
{
if(fx((xc=(xa+xb)/2))*fx(xb)<0)//二分法判断函数值包含0的X取值区间
{
xa=xc;
}
else
{
xb=xc;
}
}
while(fx(xc)>1e-5||fx(xc)<-1e-5);//判断x根是否在接近函数值0的精确范围内
printf("\n 得数为:%f",xc);
}
double fx(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询