用c语言编程二分法的题
题目:用二分法求方程x*x*x*x-3*x+1=0在区间【0.3,0.4】中的根,要求误差不超过(1/2)*(1/(10*10))要求:用c语言编程,急(半小时内要答案)...
题目:用二分法求方程x*x*x*x-3*x+1=0在区间【0.3,0.4】中的根,要求误差不超过(1/2)*(1/(10*10))
要求:用c语言编程,急(半小时内要答案)!
11点半前把答案给我就行 展开
要求:用c语言编程,急(半小时内要答案)!
11点半前把答案给我就行 展开
3个回答
展开全部
#include <stdio.h>
float f(float x)
{
return (x * x * x * x - 3 * x + 1);
}
void main()
{
float wucha = ((float)1/(float)2)*((float)1/((float)10*(float)10));
float maxi = 0.4;
float mini = 0.3;
float midi = (maxi + mini) / 2.0;
while ((maxi - midi) > wucha)
{
if (f(maxi) * f(midi) >= 0)
{
maxi = midi;
midi = (maxi + mini) / 2.0;
}
else
{
mini = midi;
midi = (maxi + mini) / 2.0;
}
}
printf("答案是:%f\n", midi);
}
//0.340625
float f(float x)
{
return (x * x * x * x - 3 * x + 1);
}
void main()
{
float wucha = ((float)1/(float)2)*((float)1/((float)10*(float)10));
float maxi = 0.4;
float mini = 0.3;
float midi = (maxi + mini) / 2.0;
while ((maxi - midi) > wucha)
{
if (f(maxi) * f(midi) >= 0)
{
maxi = midi;
midi = (maxi + mini) / 2.0;
}
else
{
mini = midi;
midi = (maxi + mini) / 2.0;
}
}
printf("答案是:%f\n", midi);
}
//0.340625
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float flag=0.3*0.3*0.3*0.3-3*0.3+1>0?1:0;
float fun(float left ,float right){
float mid=(left+right)/2;
float res=mid*mid*mid*mid-3*mid+1;
if(abs(res)<(1/2)*(1/(10*10)))
return mid;
else if((flag==1&&res<0)||(flag==0&&res>0))
return fun(left,mid);
else if((flag==1&&res>0)||(flag==0&&res<0))
return fun(mid,right);
}
float fun(float left ,float right){
float mid=(left+right)/2;
float res=mid*mid*mid*mid-3*mid+1;
if(abs(res)<(1/2)*(1/(10*10)))
return mid;
else if((flag==1&&res<0)||(flag==0&&res>0))
return fun(left,mid);
else if((flag==1&&res>0)||(flag==0&&res<0))
return fun(mid,right);
}
追问
错误太多,根本就运行不了啊,麻烦你再修改一下吧
追答
呵呵,没调试刚才。
这是调试通过的。
#include
#include
using namespace std;
float flag=0.3*0.3*0.3*0.3-3*0.3+1>0?1:0;
float fun(float left ,float right){
float mid=(left+right)/2;
float res=mid*mid*mid*mid-3*mid+1;
if(abs(res)0))
return fun(left,mid);
else if((flag==1&&res>0)||(flag==0&&res<0))
return fun(mid,right);
}
void main(){
cout<<fun(0.3,0.4);
system("pause");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
double cal(double x)
{
return x*x*x*x-3*x+1;
}
int main(int argc, char* argv[])
{
//x*x*x*x-3*x+1
// y=x*x*x*x-3*x+1;
double x1=0.3;
double x2=0.4;
double y1=cal(x1);
double y2=cal(x2);
double x,y;
for(;;)
{
x=(x1+x2)/2.0;
y=cal(x);
if(y>0)
{
if(y>=0.01)
{
x1=x;
y1=y;
}
else
{
break;
}
}
else
{
if(y<=-0.01)
{
x2=x;
y2=y;
}
else
{
break;
}
}
}
return 0;
}
{
return x*x*x*x-3*x+1;
}
int main(int argc, char* argv[])
{
//x*x*x*x-3*x+1
// y=x*x*x*x-3*x+1;
double x1=0.3;
double x2=0.4;
double y1=cal(x1);
double y2=cal(x2);
double x,y;
for(;;)
{
x=(x1+x2)/2.0;
y=cal(x);
if(y>0)
{
if(y>=0.01)
{
x1=x;
y1=y;
}
else
{
break;
}
}
else
{
if(y<=-0.01)
{
x2=x;
y2=y;
}
else
{
break;
}
}
}
return 0;
}
追问
小黑屏上需要填什么才能继续?
追答
#include
system("pause");
你想数出结果?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询