1

AX=X の形式の非線形連立方程式を解こうとしています。ここで、

A = M 行 M 列の行列

X = M 行 1 列の行列

したがって、合計で M (=200) 個の方程式 (および M 個の未知数) があります。

すなわち、

A = [f11(x,y) f12(x,y) .... f1m(x,y),

 f21(x,y) f22(x,y) .....f2m(x,y),

 ..        ..           ..

 fm1(x,y) fm2(x,y) .... fmm(x,y)]

X = [V1、

   V2,

   V3,
   .
   .
   Vm-2,
   0.33,
   0.33]

したがって、X には M-2 の未知数 (V1、V2 ... Vm-1) があり、A には 2 つの未知数 (x と y) があります。A の要素は x と y の LINEAR 関数です。

私は scipy.fsolve と sympy.nsolve で宿題をしましたが、行列形式の方程式を受け入れないようです。また、200 の方程式があり、各方程式にはすべての未知数が含まれているため、変数を 1 つずつ削除することは実際的ではありません。

私はPythonに比較的慣れていないので、どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

f ij (x,y) = a i x + b j y とします。a = (a 1 , ... , a m ), b = (b 1 , ..., b m ), v = (V 1 , ... V m-2 , 1/3, 1/ 3) 実列ベクトルであること。それで

A = [f ij (x,y)] m×m = [a i x + b j y] m×m = [a i x] m×1 [b j y] 1×m = ([a i ] m×1 x)([b j ] 1×m y)

式は Av = v、または Av = Iv (ここで、I は m×m 単位行列) であるため、(AI)v = 0 を解きたいと考えています。これは固有値問題を連想させます。その固有値問題の特性方程式は 0 = det(AI) = det(([a i ] m×1 x)([b j ] 1×m y) - I) です。ここで、det は行列式です (私は1 の固有値)。

可能なアプローチは、 det(([a i ] m×1 x)([b j ] 1×m y) - I) = 0 を x と y に対して数値的に解くことです (ニュートン法などの根探索アルゴリズムを使用) 、定数行列 A を生成します。

次に、戻って線形方程式ソルバーを使用して (AI)v = 0 を解き、数値的に解いた定数行列 A を使用してv 1、v 2、...、v m-2を見つけます。残念ながら、これでは v の下部にある 1/3 定数が保持されないため、最後の 2 つの値の 1/3 を近似する行列 A が得られるまで、前の手順に戻って数回やり直す必要があります。 .


別の解決策は、すべてを非線形方程式ソルバーに貼り付けることです。このアプローチは、上で説明した方法よりも遅くなります。

于 2012-08-22T22:36:25.437 に答える