3

18 (実際には 26 ではない) の異なる変数を使用する 6 つのパラメトリック方程式があり、そのうち 6 つは不明です。

私はいくつかの紙のパッドに座って、未知数のそれぞれの方程式が何であるかを理解することができますが、私が探している6つの方程式を吐き出す簡単なプログラムソリューション(私はMatlabで考えています)がありますか?為に?

編集: 残念ながらこれは閉鎖されましたが、その理由はわかると思います。誰かがまだ興味を持っている場合、方程式は(私は信じています)非線形です:

r11^2 = (l_x1*s_x + m_x)^2 + (l_y1*s_y + m_y)^2
r12^2 = (l_x2*s_x + m_x)^2 + (l_y2*s_y + m_y)^2
r13^2 = (l_x3*s_x + m_x)^2 + (l_y3*s_y + m_y)^2
r21^2 = (l_x1*s_x + m_x - t_x)^2 + (l_y1*s_y + m_y - t_y)^2
r22^2 = (l_x2*s_x + m_x - t_x)^2 + (l_y2*s_y + m_y - t_y)^2
r23^2 = (l_x3*s_x + m_x - t_x)^2 + (l_y3*s_y + m_y - t_y)^2

(r秒を二乗、良いスポット @gnovice!)

私が見つけなければならない場所t_x t_y m_x m_y s_xs_y

なぜ私はこれらを計算しているのですか?2 つの点 p1 (at 0,0) と p2 at( t_x,t_y) があり、3 つの座標 ( l_x,l_y{1,2,3})のそれぞれについて、p1 と p2 からその点までの距離 ( r1& ) はわかっていますが、座標系は異なります。r2変数s_xs_yは、一方の座標セットを他方の座標セットに到達させるためにどれだけスケーリングする必要があるかm_xm_y定義t_xt_yます。

おー!l_x,l_yまた、ポイント ( ) が p1 と p2 の最高値より下にあることも知っています。つまり、 l_y< max( 0, t_y) とl_y> 0 とl_y<t_yです。

パッドを取り出して数学的に処理する必要があるかもしれないほど具体的に思えます!

4

5 に答える 5

1

それらは線形ですか?もしそうなら、線形代数の原理を使用して連立方程式を表す 6x6 行列を設定し、標準的な逆行列ルーチンを使用してそれを解くことができます...

線形でない場合は、数値解析手法を使用する必要があります。

何年も前のことを思い出すと、非線形方程式の線形近似のシステムを作成し、その線形システムを何度も繰り返し解いて、エラーが発生するまで毎回入力に答えをフィードバックしていると思います。メトリクスが十分に小さくなり、ソリューションに到達したことを示します。それは明らかにコンピューターで行われます。これを行う数値解析ソフトウェアパッケージがあると確信していますが、非線形方程式の任意のシステムには、ほぼ無限の異なるタイプとレベルの複雑さを含めることができると思います。これらのソフトウェア パッケージでは線形近似を作成することはできず (おそらく最も単純な標準的なケースを除いて)、その部分を手動で行う必要はありません。

于 2009-12-11T15:42:18.077 に答える
1

Symbolic Toolboxがある場合は、 SOLVE関数を使用できます。例えば:

>> solve('x^2 + y^2 = z^2','z')    %# Solve for the symbolic variable z

ans =

  (x^2 + y^2)^(1/2)
 -(x^2 + y^2)^(1/2)

N 個の変数について N 個の連立方程式を解くこともできます。2 つの方程式、2 つの未知数 (xおよびy)、および 6 つのパラメーター ( af)を使用した例を次に示します。

>> S = solve('a*x + b*y = c','d*x - e*y = f','x','y')
>> S.x

ans =

(b*f + c*e)/(a*e + b*d)

>> S.y

ans =

-(a*f - c*d)/(a*e + b*d)
于 2009-12-11T15:49:12.947 に答える
1

はい、あります (これらが線形方程式であると仮定します) - これを行うには、6 つの線形方程式に相当する行列方程式を作成します。たとえば、2 つの方程式がある場合:

6x + 12y = 9
7x - 8y = 14

これは、次のように同等に表すことができます。

|6  12| |a|   |9 |
|7  -8| |b| = |14|

(2 つの行列が乗算される場合)。次に、Matlab は、解行列 (a、b) についてこれを解くことができます。

私はmatlabをインストールしていないので、詳細はあなたに任せる必要があると思います:-)

于 2009-12-11T15:53:02.953 に答える
1

前述のように、答えは方程式が線形か非線形かによって異なります。線形システムの場合、単純なマトリックス システムを設定できます (ただし、逆行列は使用せず、LU 分解を使用します (システムの条件が整っている場合))。

非線形システムの場合は、より高度なソルバーを使用する必要があります。ほとんどの場合、ニュートン法に何らかのバリエーションがあります。基本的に、Matlab に 6 つの方程式を与え、すべての方程式の根 (ゼロ) を同時に解くように依頼します。非線形システムを扱う際には、いくつかの注意事項と複雑な問題が発生します。そのうちの 1 つは、6 つの未知の変数のそれぞれに真の解に近い値を割り当てる初期推定の必要性です。適切な初期推定がないと、ソルバーは解を見つけるのに長い時間がかかるか、解が存在する場合でも解にまったく収束しない可能性があります。

于 2009-12-11T16:04:50.480 に答える
1

数十年前、MIT はまさにこの種のもののための記号代数システムである MACSYMA を開発しました。MIT は MACSYMA を Symbolics に売却しました。しかし、奇跡的な軍事資金のおかげで、MACSYMA の初期バージョンを政府にリリースする必要がありました。その後、そのバージョンは GPL の下でリリースされ、MAXIMA という名前で維持され続けています。

詳細については、 http://maxima.sourceforge.net/を参照してください。

于 2009-12-11T16:13:53.283 に答える