-5

次の方程式を解こうとしていますが、

def f(u1, u2, u3, u4, a11, a16, a12, a66, a26, a22):
    return a11*u4-2*a16*u3+(2*a12+a66)*u2-2*a26*u1+a22

u1tou4はルートが必要な複雑な変数でありf() = 0a11toは関数に渡す必要a66がある arguments( ) です。floats私は見ましたがscipy.optimize.fsolve()sympyどちらの方法も正しく機能させることができませんでした。

4

1 に答える 1

3

4 つの変数に対して 1 つの線形方程式があるため、一意の解はありません。C^4 の解の超平面内の任意の点は、関数をゼロにします。

他の制約がない場合、できる唯一のことは、これらの U 変数の 1 つを残りの明らかな線形関数として表現することです。

sympy.solve はまさにそれを行います:

In [1]: solve('a11*u4-2*a16*u3+(2*a12+a66)*u2-2*a26*u1+a22', 'u1')
Out[1]: 

⎡a₁₁⋅u₄ + 2⋅a₁₂⋅u₂ - 2⋅a₁₆⋅u₃ + a₂₂ + a₆₆⋅u₂⎤
⎢───────────────────────────────────────────⎥
⎣                   2⋅a₂₆                   ⎦

解が超平面を形成するため、scipy からの数値ルーチンは収束しません。

于 2012-04-16T20:18:11.000 に答える