2011-09-28 33 views
-2

我正在試圖計算一個點上的點。 我得到了邊緣和一個邊緣之間的距離,我想找到的點(這是B)。VBA如何解決帶有兩個未知數的兩個方程

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?


謝謝!

+0

你的數學和你的文本不匹配,請澄清。 如果您正在尋找A→B上與A距離爲5的點,那麼您的方程與該問題無關。 – themel

+0

你會如何使用筆和紙來解決這些方程?有你的答案。 –

+0

@ Jean-FrançoisCorbett,我試圖用筆和紙在我發佈後立即解決它,並且說實話我不能。但還有另一個原因,我不能解決它>我沒有長時間使用數學,我甚至忘記了基本>例如:我計算(x-2)^爲x^2 + 4,應該是x^2 + 4x + 4 ... – Ron

回答

2

我不會解決以上,因爲它們是闡明該問題的不必要的複雜方式的公式(和的溶液的存在是舍入的存在可疑的),但所有上線A=(Ax,Ay)點到C=(Cx,Cy)可以在01之間被描述爲B=(Ax,Ay) + t*(Cx-Ax,Cy-Ay)t

BA之間的距離,然後通過d=t*Sqrt((Cx-Ax)^2+(Cy-Ay)^2)給,你可以反轉得到適當的t對於給定d - 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 - >B ~ (2,4) + 0.178 * (2,28) ~ (2.356, 8.987)

+0

+1不用打擾用勺子喂VBA解決方案! –

0

VBA沒有Symbolic Language的能力。爲了解決這個問題,有不同的方法:(我建議這對於您的問題)

  1. 變換方程來隔離未知數之一,最有可能使用替代,並計算其
  2. 將您的功能並推導他們使用Newton's methods(不要這樣做,這是過度殺傷。)
  3. 使用「蠻力」收斂方法:修復每個變量的最小/最大值,並使用bisection methods找到你想要的東西(我不推薦這個,因爲在你的情況下,你很可能會「跌落」到當地的最小/最大值。)

所以基本上,我會說你走的第一條路。它需要15分鐘的數學方程修補,然後你就開始了。

相關問題