
数值分析:用二分法求方程f(x)=x^3+4*(x^2)-10在区间[1,1.5]上的根,要求求出具有3位有效数的近似根。
我的程序如下:#include<stdio.h>floatf(floatx){returnx*x*x+4*x*x-10;}voidmain(){floata,b,c;a=...
我的程序如下:
#include<stdio.h>
float f(float x)
{
return x*x*x+4*x*x-10;
}
void main()
{
float a,b,c;
a=1.0;
b=1.5;
for(;;)
{
if(b-a>=0.005)
{
c=(a+b)/2;
if(f(a)*f(c)==0)
break;
else if(f(a)*f(c)<0)
b=c;
else if(f(a)*f(c)>0)
a=c;
}
else
break;
}
printf("二分结果为%f\n",c);
printf("保留三位有效数字为%0.2f\n",c);
}
我想知道我的程序是否正确,如果正确的话那么那个跳出循环的判断为何是if(b-a>=0.005),为何不是if(b-a>=0.01),或者它有固定的算法,下面是我的程序运行结果图,希望大家给予指点,谢谢大家啦! 展开
#include<stdio.h>
float f(float x)
{
return x*x*x+4*x*x-10;
}
void main()
{
float a,b,c;
a=1.0;
b=1.5;
for(;;)
{
if(b-a>=0.005)
{
c=(a+b)/2;
if(f(a)*f(c)==0)
break;
else if(f(a)*f(c)<0)
b=c;
else if(f(a)*f(c)>0)
a=c;
}
else
break;
}
printf("二分结果为%f\n",c);
printf("保留三位有效数字为%0.2f\n",c);
}
我想知道我的程序是否正确,如果正确的话那么那个跳出循环的判断为何是if(b-a>=0.005),为何不是if(b-a>=0.01),或者它有固定的算法,下面是我的程序运行结果图,希望大家给予指点,谢谢大家啦! 展开
展开全部
你的程序我感觉是对的,我没有运行看看啊
你那个if判断,牵扯到数学问题,不在程序中讨论,其实那个都可以跳出循环,只是精度问题
就是感觉的你的算法也就是程序思路不怎么好
for(;b-a>=0.005;)
{
c=(a+b)/2;
if(f(c)==0)
break;
if(f(a)*f(c)>0)
a=c;
else
b=c;
}
你那个if判断,牵扯到数学问题,不在程序中讨论,其实那个都可以跳出循环,只是精度问题
就是感觉的你的算法也就是程序思路不怎么好
for(;b-a>=0.005;)
{
c=(a+b)/2;
if(f(c)==0)
break;
if(f(a)*f(c)>0)
a=c;
else
b=c;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |