标题:很奇怪,关于Newton-Raphson迭代法的编程~
只看楼主
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
 问题点数:0 回复次数:7 
很奇怪,关于Newton-Raphson迭代法的编程~
写了一段程序关于Newton-Raphson迭代法求平方根的
程序代码:
#include <stdio.h>
float absoluteValue (float x)
{
    if ( x < 0 )
        x = -x;
    return (x);
}
float squareRoot (float x, float epsilon)
{
    int guess = 1.0;
    while (absoluteValue (guess * guess - x) >= epsilon)
        guess = (x / guess + guess ) / 2.0;
    return guess;
}
int main (void)
{
    float result;
    result = squareRoot (155.0, 0.0001);
    printf ("%f\n", result);
   
    result = squareRoot (155.0, 0.0005);
    printf ("%f\n", result);
    return 0;
}

很奇怪的是如果flaot x等于一个诸如100,144一类整数平方根就能出来结果,但是等于诸如15,133之类的数字,也可以运行,但是出不来结果,程序也一直不结束,光标就在下面闪啊闪……
搜索更多相关主题的帖子: 迭代法 
2010-06-01 23:23
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
得分:0 
木有人搭理……
2010-06-02 18:58
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
得分:0 
见鬼了!
没人知道只是什么情况么?
2010-06-02 21:46
Nicole_1986
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2015-7-8
得分:0 
if ( x < 0 )
float类型能这样判断吗?
2015-07-15 10:57
Nicole_1986
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2015-7-8
得分:0 
回复 3楼 ilsoviet1917
if (x < 0)
x是float类型  可以这样判断正负?
2015-07-15 10:57
Nicole_1986
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2015-7-8
得分:0 
回复 3楼 ilsoviet1917
float型变量和“零值”比较的方法:
 const float EPSINON = 0.000001;
 if ((x >= - EPSINON) && (x <= EPSINON))
2015-07-15 11:00
Nicole_1986
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2015-7-8
得分:0 
回复 3楼 ilsoviet1917
float型变量和“零值”比较的方法:
const float EPSINON = 0.000001;  
if ((x >= - EPSINON) && (x <= EPSINON))
2015-07-15 11:00
Nicole_1986
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2015-7-8
得分:0 
回复 3楼 ilsoviet1917
guess的类型不是int 应该改成float 就对了
2015-07-15 11:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-308984-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.972928 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved