问题描述:
这个求导数的程序出现了逻辑错误?
这个程序求函数x^2+x的导数.输入1,2,3等较小的数时,结果正确.奇怪的是,输入4以上的数时,全输出0.我苦思冥想,找不出哪儿错了,
double f(double x)
{
\x05return(x*x+x);
}
#include
#include
void main()
{
\x05double x,dx=1,f1,temp;
\x05scanf("%lf",&x);
\x05temp=(f(x+dx)-f(x))/dx;
\x05dx*=0.1;
\x05f1=(f(x+dx)-f(x))/dx;
\x05while(fabs(f1-temp)>0.00000000001)
\x05{
\x05\x05temp=f1;
\x05\x05dx*=0.1;
\x05\x05f1=(f(x+dx)-f(x))/dx;\x05
\x05}
\x05printf("%.16lf\n",f1);
}
这个程序求函数x^2+x的导数.输入1,2,3等较小的数时,结果正确.奇怪的是,输入4以上的数时,全输出0.我苦思冥想,找不出哪儿错了,
double f(double x)
{
\x05return(x*x+x);
}
#include
#include
void main()
{
\x05double x,dx=1,f1,temp;
\x05scanf("%lf",&x);
\x05temp=(f(x+dx)-f(x))/dx;
\x05dx*=0.1;
\x05f1=(f(x+dx)-f(x))/dx;
\x05while(fabs(f1-temp)>0.00000000001)
\x05{
\x05\x05temp=f1;
\x05\x05dx*=0.1;
\x05\x05f1=(f(x+dx)-f(x))/dx;\x05
\x05}
\x05printf("%.16lf\n",f1);
}
问题解答:
我来补答展开全文阅读