【发布时间】:2014-03-08 19:08:03
【问题描述】:
我正在尝试实现 Regula-Falsi 算法来求解 2(x^3)-x-2 的方程
但问题是变量c 的值保持不变并且没有改变,即使我的代码应该改变它。
#include<math.h>
#include<stdio.h>
float fonc(float x)
{
int result;
result=2*(pow(x,3))-x-2;
return result;
}
int main(void)
{
float eps=pow(10,-4);
int i=0;
float a,b,c;
a=1;
b=2;
do
{
c=((a*fonc(b))-(b*fonc(a)))/((fonc(b)-fonc(a)));
if(fonc(c)*fonc(a)<0)
{
b=c;
}
else
{
a=c;
}
i++;
printf("\n%f",c);
}
while(fabs(b-c)>eps);
printf("le nombre d'itération %d",i);
}
【问题讨论】:
-
首选
double而不是float。 -
即使使用双精度,我们也会到达某个不再可能获得正确精度的地方
-
我的意思是一般性,而不是专门针对这个程序。如果您需要浮点数,您的第一反应应该是使用
double