-2

線上の点を計算しようとしています。エッジのポイントと、1つのエッジから見つけたいポイント(B)までの1つの距離を取得しました。

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を使用してこれを解決するにはどうすればよいですか?


ありがとうございました!

4

2 に答える 2

2

上記の方程式は、問題を説明するのA=(Ax,Ay)に不必要に複雑な方法であるため、解きません (また、丸めがあると解の存在が疑わしいため)。.C=(Cx,Cy)B=(Ax,Ay) + t*(Cx-Ax,Cy-Ay)t01

Bとの間の距離はでA与えられ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).

于 2011-09-28T15:11:27.633 に答える
0

VBA には記号言語機能がありません。この問題を解決するには、さまざまなアプローチがあります。

  1. 方程式を変換して、置換を使用する可能性が最も高い未知数の 1 つを分離し、それを計算します (問題にはこれをお勧めします)。
  2. 関数を変換し、ニュートンのメソッドを使用するように派生させます(やり過ぎですので、これを行わないでください)。
  3. 「強引な」収束方法を使用する: 各変数の最小値/最大値を修正し、二分法を使用して必要なものを見つけます (ローカルの最小値/最大値に「落ちる」可能性が高いため、これはお勧めしません場合。)

つまり、基本的には、最初の方法を使用することをお勧めします。数式をいじるのに 15 分必要です。

于 2011-09-28T16:11:15.237 に答える