10

これまで、解析方程式を解くために常に Mathematica を使用してきました。ただし、このタイプの数百の方程式(特性多項式)を解く必要があります

a_20*x^20+a_19*x^19+...+a_1*x+a_0=0 (constant floats a_0,...a_20)

Mathematica では非常に長い計算時間が一度に発生します。

このタイプの方程式を解くために、numpy または他のパッケージですぐに使用できるコマンドのようなものはありますか? (これまではシミュレーションにのみ Python を使用していたので、分析ツールについてはあまり知らず、numpy チュートリアルで役立つものを見つけることができませんでした)。

4

4 に答える 4

9

あなたは(どうやら)numpyを使用していますが、私自身は試したことがありません:http: //docs.scipy.org/doc/numpy/reference/generated/numpy.roots.html#numpy.roots

Numpyは多項式クラスも提供します... numpy.poly1d

これにより、根が数値的に検出されます。分析的な根が必要な場合は、numpyでそれを実行できるとは思いません。

于 2012-05-04T23:30:24.990 に答える
9

simpy docs の例を次に示します。

>>> from sympy import *
>>> x = symbols('x')
>>> from sympy import roots, solve_poly_system

>>> solve(x**3 + 2*x + 3, x)
           ____          ____
     1   \/ 11 *I  1   \/ 11 *I
[-1, - - --------, - + --------]
     2      2      2      2

>>> p = Symbol('p')
>>> q = Symbol('q')

>>> sorted(solve(x**2 + p*x + q, x))
          __________           __________
         /  2                 /  2
   p   \/  p  - 4*q     p   \/  p  - 4*q
[- - + -------------, - - - -------------]
   2         2          2         2

>>> solve_poly_system([y - x, x - 5], x, y)
[(5, 5)]

>>> solve_poly_system([y**2 - x**3 + 1, y*x], x, y)
                                   ___                 ___
                             1   \/ 3 *I         1   \/ 3 *I
[(0, I), (0, -I), (1, 0), (- - + -------, 0), (- - - -------, 0)]
                             2      2            2      2

(この例のドキュメントへのリンク)

于 2012-05-05T05:56:03.023 に答える
4

数学的処理用に設計された完全な Python ディストリビューションであるSAGEを参照することをお勧めします。それを超えて、Marcin が強調したように、私はやや似たような問題にSympyを使用しました。

于 2012-05-04T23:36:27.470 に答える