朝仓太阳 发表于 2014-8-26 23:06:20

课件中二分法求平方根的问题。

以下,是按实型做的,但是首先失败得到一个明显错误的值。在调试中发现第一个x^2-y的函数(sqf)在调用到第二个二分法求近似解的函数中(square)无论变量是啥都是一个固定的随机初值大约1e8左右。求问大神求指正~~{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}


#include<stdio.h>
#include<math.h>
#define lowerlimit 0.5
void main()
{
float square(float y);
float sqf(float x);
float a,b;
printf("Please input a natural number with single real:\n");
scanf("%f",&a);
b=square(a);
printf("The square root of %f is %f\n",a,b);
}

float sqf(float x)
{
float y;
return(y-x*x);
}

float square(float y)
{
float sqf(float x);
float e,low=lowerlimit,high=y,m,x;
if(sqf(low)==0.0)
{
    x=low;
}
else if(sqf(high)==0.0)
{
    x=high;
}
else
{
   do
   {
   m=(low+high)/2;
       if(sqf(m)==0.0)
       {
           x=m;
           break;
       }
       else if(sqf(low)*sqf(high)<0)
       {
           high=m;
       }
       else
       {
           low=m;
       }
       e=high-low;
   }
   while(fabs(e)>=0.0001);
   {
       x=(low+high)/2;
   }
}
return(x);
}

以上,是按实型做的,但是首先失败得到一个明显错误的值。在调试中发现第一个x^2-y的函数(sqf)在调用到第二个二分法求近似解的函数中(square)无论变量是啥都是一个固定的随机初值大约1e8左右。求问大神求指正~~{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}

朝仓太阳 发表于 2014-8-27 08:39:30

:shock::shock::shock::shock:

朝仓太阳 发表于 2014-8-27 19:41:34

没人啊,甲鱼呢:shock::shock:
页: [1]
查看完整版本: 课件中二分法求平方根的问题。