VBA如何求解具有两个未知数的两个方程

时间:2011-09-28 14:22:49

标签: math vba excel-2007 equations

我想在一条线上计算点数。 我得到了边缘的点和一个边缘到我想要找到的点之间的一个距离(这是B)。

A(2,4)
B(X,Y)
C(4,32)

A到B之间的距离是5.

如何计算Bx和By?使用以下等式:

d = Math.Sqr((Bx-Ax)^2 + (By-Ay)^2)
d = Math.Sqr((Cx-Bx)^2 + (Cy-By)^2)

并比较上面的等式。


以下是放置点的方程式:

5 = Math.Sqr((Bx-2)^2 + (By-4)^2)
23.0713366 = Math.Sqr((4-Bx)^2 + (32-By)^2)

Math.Sqr((Bx-2)^2 + (By-4)^2) - 5 = Math.Sqr((4-Bx)^2 + (32-By)^2) - 23.0713377

如何使用VBA解决此问题?


谢谢!

2 个答案:

答案 0 :(得分:2)

我不会在上面解决你的等式,因为它们是一种不必要的复杂方式来陈述问题(并且在存在舍入的情况下解决方案的存在是有问题的),但是线上的所有点A=(Ax,Ay)C=(Cx,Cy)B=(Ax,Ay) + t*(Cx-Ax,Cy-Ay)之间t 0可以被描述为1

BA之间的距离由d=t*Sqrt((Cx-Ax)^2+(Cy-Ay)^2)给出,您可以将其反转以获得给定t的正确d - { {1}}

在您的情况下,t=d/Sqrt((Cx-Ax)^2+(Cy-Ay)^2)B(t) = (2,4) + t*(2,28) - > t=5/Sqrt(2^2+28^2) ~ 0.178

答案 1 :(得分:0)

VBA没有Symbolic Language功能。要解决这个问题,有不同的方法:

  1. 转换方程式以隔离其中一个未知数,最有可能使用替换,并计算它(我建议您解决此问题。)
  2. 转换您的函数并派生它们以使用Newton's methods(不要这样做,这太过分了。)
  3. 使用“强力”收敛方法:修复每个变量的最小值/最大值,并使用bisection methods找到你想要的东西(我不推荐这个,因为你很可能会“掉进”在你的情况下,当地最低/最高。)
  4. 所以基本上,我会说你是第一种方式。它需要15分钟的修补数学方程式,然后你就可以了。

相关问题