6

フォームの曲線までの複数の点の距離を見つける必要があります。f(x) = a^(k^(bx))

私の最初のオプションは、その導関数を使用し、導関数の逆数を持つフォームの線を使用して、の座標を与えPoint、元の曲線と交差させることでした。最後に、単純なジオメトリを使用してポイント間の距離を計算します。

それは私が通常従う数学的プロセスです。(遺伝的アルゴリズムプログラムを実行しているので)時間を節約する必要があるので、これを行うための効率的な方法が必要です。アイデア?

4

2 に答える 2

4

点(c、d)と曲線の間の距離は、関数の最小値です。

sqrt((c-x)^2 + (d-a^(k^(bx)))^2)

その最小値を見つけるために、私たちはを忘れsqrtて一次導関数を見ることができます。それが0である場所を見つけます(最大距離がないため、最小距離である必要があります)。これにより、曲線上の最も近い点のx座標が得られます。距離を取得するには、y座標を計算してから、ポイントまでの距離を計算する必要があります(その時点で距離関数を計算するだけでx、同じことです)。

ポイントごとに繰り返します。

距離関数の一次導関数は、残念ながら一種の雌犬です。Wolframの派生物を使用すると、結果はうまくいけば(コピーエラーが発生していない場合):

dist(x)/dx = 2(b * lna * lnk * k^(bx) * a^(k^(bx)) * (a^(k^(bx)) - d) - c + x)
于 2013-01-25T22:33:51.427 に答える
0

ポイントからカーブまでの距離を見つけるのは簡単な作業ではありません。そのため、関数のグローバルを見つける必要がありますここに画像の説明を入力してください。ここで、f(x)はカーブを決定する関数です。

その目標には、次のものを使用できます。シンプレックス

Nelder_Mead_methodgradient_descent

このメソッドは、 Solver FoundationNMathなどの多くのライブラリに実装されています。

于 2013-01-25T22:38:15.787 に答える