我正在尝试翻译BASIC程序。自从我进行任何BASIC编程以来已有数十年了。 :)
我有两行代码有问题:
360 D=D+((X(I)-X(J))^2+(Y(I)-Y(J))^2+(Z(I)-Z(J))^2)^(-1/2)
510 F=((X(I)-X(J))^2+(Y(I)-Y(J))^2+(Z(I)-Z(J))^2)^(3/2)
x(i)
等形成(x,y,z)
坐标;所以360行-我认为-计算2个点之间的距离;如果^(-1/2)
=平方根,则可以使用。
第510行非常相似,但是^(3/2)
让我感到困惑。
将数字提高到1.5的幂明智吗?
我记得^2
的意思是正方形(又名提高到2的幂)。
因此,有人可以告诉我^(-1/2)
和^(3/2)
在BASIC中是什么意思吗??
感谢您的帮助。 史蒂夫。
答案 0 :(得分:3)
将数字提高到1.5的幂明智吗?
是的。 ordinary arithmetical meaning可以将任何数字提高到任何幂。在这种情况下,它等于先求平方然后求根(或求平方再求平方,因为乘法是可交换的)。
^(-1/2)
=平方根。
不完全是。将数字提高到负幂等效于找到将数字提高到正幂的倒数,即“ 1除以平方根X”运算
答案 1 :(得分:0)
在BASIC中,这是正确的:
360 D = D + ((X(I) - X(J)) ^ 2 + (Y(I) - Y(J)) ^ 2 + (Z(I) - Z(J)) ^ 2) ^ (-1 / 2)
361 D = D + 1 / SQR((X(I) - X(J)) ^ 2 + (Y(I) - Y(J)) ^ 2 + (Z(I) - Z(J)) ^ 2)
510 F = ((X(I) - X(J)) ^ 2 + (Y(I) - Y(J)) ^ 2 + (Z(I) - Z(J)) ^ 2) ^ (3 / 2)
511 F = SQR(((X(I) - X(J)) ^ 2 + (Y(I) - Y(J)) ^ 2 + (Z(I) - Z(J)) ^ 2) ^ 3)
答案 2 :(得分:0)
这些函数应报告相等值的数组:
DIM x(10) AS INTEGER, y(10) AS INTEGER, z(10) AS INTEGER
FOR x = 1 TO 10
x(x) = x: y(x) = x: z(x) = x
NEXT
I = INT(RND * 10 + 1): J = INT(RND * 10 + 1)
D1 = ((x(I) - x(J)) ^ 2 + (y(I) - y(J)) ^ 2 + (z(I) - z(J)) ^ 2) ^ (-1 / 2)
D2 = 1 / SQR((x(I) - x(J)) ^ 2 + (y(I) - y(J)) ^ 2 + (z(I) - z(J)) ^ 2)
F1 = ((x(I) - x(J)) ^ 2 + (y(I) - y(J)) ^ 2 + (z(I) - z(J)) ^ 2) ^ (3 / 2)
F2 = SQR(((x(I) - x(J)) ^ 2 + (y(I) - y(J)) ^ 2 + (z(I) - z(J)) ^ 2) ^ 3)
IF D1 = D2 THEN PRINT "values equal to:"; D1
IF F1 = F2 THEN PRINT "values equal to:"; F1
END
答案 3 :(得分:0)
Google的三维坐标系:
The distance formula states that the distance between two points in xyz-space is
the square root of the sum of the squares of the differences between corresponding
coordinates. That is, given P1 = (x1,y1,z1) and P2 = (x2,y2,z2), the distance
between P1 and P2 is given by d(P1,P2) = sqr((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)
因此,显然,您可以获得2个xyz点之间的距离。.