主题:给你50分!!!!!!!!!!!!!
yaoyusheng
[专家分:460] 发布于 2007-07-21 11:01:00
求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
最后更新于:2007-07-21 13:50:00
回复列表 (共7个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-21 13:54:00
题目:设计一个函数,可以不用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
板凳
yaoyusheng [专家分:460] 发布于 2007-07-21 13:59:00
你能不能帮我看看我写的哪里错了?
3 楼
Matodied [专家分:7560] 发布于 2007-07-21 14:18:00
不管你b的取值是几,你的结果永远不会超过2。
因为你的a和b的值只有一个是改变的。
我1楼的程序你也该加分吧!
4 楼
yaoyusheng [专家分:460] 发布于 2007-07-21 14:28:00
你帮我看看我的程序哪里错啊!
自定义函数我不太会用.
对于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 楼
moz [专家分:37620] 发布于 2007-07-21 14:48:00
是F2
!叹号后缀是单精度变量的意思.
6 楼
yaoyusheng [专家分:460] 发布于 2007-07-21 15:21:00
x1 = .5 * (x0 + a / x0)
这个原理不明白.
能详细点不?
还有,什么叫单精度变量?什么叫双精度变量?能给我举些例吗?
先回答我,五十分先欠你的.
7 楼
Matodied [专家分:7560] 发布于 2007-07-21 21:33:00
这里用的是迭代,x1表示现在要求的x(n),x0则表示x(n-1),接下来就是我的公式了。
单精度数是指用E作为底数和指数分界线的实数,保留7位有效数字。格式为:
<指数>E<底数>
如:2E3、45E-8等。
双精度数是指用D作为底数和指数分界线的实数,保留15位有数字,格式为:
<指数>D<底数>
如:34D48、4D-100等。
我来回复