课件中二分法求平方根的问题。
以下,是按实型做的,但是首先失败得到一个明显错误的值。在调试中发现第一个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:} :shock::shock::shock::shock: 没人啊,甲鱼呢:shock::shock:
页:
[1]