回 帖 发 新 帖 刷新版面

主题:给你50分!!!!!!!!!!!!!

求sqr(2)的近似值:
怎么运行结果是1.496094?到底是哪里错了?
a=1
b=2
c=0.005
do
x=(a+b)/2
f(a)=a^2-2
f(x)=x^2-2
if f(x)=0 then
print "x=";x
else
if f(a)*f(x)>0 then
a=x
else
b=x
end if
end if
loop until abs(a-b)<=c
print x
end

回复列表 (共7个回复)

沙发

题目:设计一个函数,可以不用SQR函数求平方根。

说明一下:求平方根的公式为:
SQR(a)=

x(n)=a                                  (n=1)

x(n+1) = 0.5 * (x(n)+ a / x(n))         (n>1)

要求精度满足:相邻两项之间的差距不大于0.000001。

程序:
DECLARE FUNCTION sqrt! (a!)
CLS
INPUT a
PRINT sqrt(a)
END

FUNCTION sqrt (a)
x0 = a
DO
  x1 = .5 * (x0 + a / x0)
  IF ABS(x1 - x0) <= .000001 THEN EXIT DO
  x0 = x1
LOOP
sqrt = x1
END FUNCTION

板凳

你能不能帮我看看我写的哪里错了?

3 楼

不管你b的取值是几,你的结果永远不会超过2。

因为你的a和b的值只有一个是改变的。

我1楼的程序你也该加分吧!

4 楼

你帮我看看我的程序哪里错啊!

自定义函数我不太会用.
对于QB我只懂皮毛.

请问,
DECLARE FUNCTION sqrt! (a!)
CLS
INPUT a
PRINT sqrt(a)
END



FUNCTION sqrt (a)
x0 = a
DO
  x1 = .5 * (x0 + a / x0)
  IF ABS(x1 - x0) <= .000001 THEN EXIT DO
  x0 = x1
LOOP
sqrt = x1
END FUNCTION

按什么键来切换?因为输入了第二部分,第一部分又隐藏了.是不是F2?
还有,sqrt!中的!是什么意思?
请你别笑我.
这些我丢开几年了,以前也只学过点c语言,并且也不怎么学.

5 楼

是F2
!叹号后缀是单精度变量的意思.

6 楼

x1 = .5 * (x0 + a / x0)

这个原理不明白.
能详细点不?

还有,什么叫单精度变量?什么叫双精度变量?能给我举些例吗?

先回答我,五十分先欠你的.

7 楼

这里用的是迭代,x1表示现在要求的x(n),x0则表示x(n-1),接下来就是我的公式了。

单精度数是指用E作为底数和指数分界线的实数,保留7位有效数字。格式为:

               <指数>E<底数>
如:2E3、45E-8等。

双精度数是指用D作为底数和指数分界线的实数,保留15位有数字,格式为:

               <指数>D<底数>
如:34D48、4D-100等。

我来回复

您尚未登录,请登录后再回复。点此登录或注册