鱼C论坛

 找回密码
 立即注册
查看: 2707|回复: 2

[技术交流] 课件中二分法求平方根的问题。

[复制链接]
发表于 2014-8-26 23:06:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下,是按实型做的,但是首先失败得到一个明显错误的值。在调试中发现第一个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:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 08:39:30 | 显示全部楼层
:shock::shock::shock::shock:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-27 19:41:34 | 显示全部楼层
没人啊,甲鱼呢:shock::shock:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表