マトリックス式のシンボリックソフトウェアパッケージ?


36

は対称で正定であることを知っています。Bは直交することがわかっています。AB

質問:ある対称正定値?回答:はい。BAB

質問:コンピューターがこれを教えてくれましたか?回答:おそらく。

行列に関する既知の事実を処理および伝播する記号代数システム(Mathematicaなど)はありますか?

編集:明確にするために、抽象的に定義されたマトリックスについてこの質問をしています。すなわち、私はBの明示的なエントリを持っていません、私はそれらが両方とも行列であり、対称、正定等のような特定の属性を持っていることを知っています。AB


5
私が欠けているのは、行列を記号的に処理するソフトウェアです(つまり、配列としてではありません)。そのエントリについて心配することなく、いくつかの対称行列について話すことができると思います。C
JM

6
これに取り組んでいるプロジェクトがいくつかあります。SymPyの実装に精通していることがあります。バギーですが、徐々に構築されています。
MRocklin

4
これは自動定理証明のように聞こえます。そのための秘reasonは、自動化された推論(PROLOGを考えてください)によって効率的に推論できるように、エンジンに十分な公理を含めることです。私がそのようなものを設計する場合、上記のプロパティは間違いなく、試行するのではなく、事実/既知の関係としてエンコードするものです。一方、アーヘン工科大学にはパオロビエンティネシ教授がいます。彼の論文では、線形代数アルゴリズムの自動導出について話しています。彼はMathematicaをシンボリックに使用しています。aices.rwth-aachen.de:8080/~pauldj
Lagerbaer

1
PaoloのものとFLAMEライブラリを知っています。これができるとは思わない。
マットクネプリー

2
行列用のコンピューター代数システムは素晴らしいと思いますが、欠けているようです。私は、答えを得る機会を増やすために賞金をかけました。
Memming

回答:


27

編集:これは現在SymPyにあります

$ isympy
In [1]: A = MatrixSymbol('A', n, n)
In [2]: B = MatrixSymbol('B', n, n)
In [3]: context = Q.symmetric(A) & Q.positive_definite(A) & Q.orthogonal(B)
In [4]: ask(Q.symmetric(B*A*B.T) & Q.positive_definite(B*A*B.T), context)
Out[4]: True

他の仕事を示す古い回答

しばらくこれを調べた後、これが私が見つけたものです。

私の特定の質問に対する現在の答えは、「いいえ、この質問に答えることができる現在のシステムはありません」です。しかし、近づいているように見えるいくつかのことがあります。

まず、Matt KnepleyとLagerbaerは両方とも、Diego FabregatとPaolo Bientinesiの働きを指摘しました。この作業は、この問題の潜在的な重要性と実現可能性の両方を示しています。良い読み物です。残念ながら、彼のシステムがどのように機能するか、または何ができるのか正確にはわかりません(このトピックに関する他の公開資料を知っている人がいれば教えてください)。

第二に、Mathematica用に書かれたxActと呼ばれるテンソル代数ライブラリがあり、対称性などを記号的に処理します。いくつかのことを非常にうまく行いますが、線形代数の特殊なケースに合わせて調整されていません。

第3に、これらのルールは、自動定理証明アシスタントであるCoqのいくつかのライブラリに正式に書き留められています(Googleがcoq線形/行列代数を検索していくつかを見つけます)。これは強力なシステムであり、残念ながら人間の相互作用が必要と思われます。

定理証明者と話をした後、彼らはこの種のことのために論理プログラミング(つまり、Lagerbaerも提案したProlog)を検討することを提案します。私の知る限り、これはまだ行われていません-将来的にそれで遊ぶかもしれません。

更新:Maudeシステムを使用してこれを実装しました。私のコードはgithubでホストされています


1
良いシステムがないことがわかったとき、私の最初の本能はプロローグプログラムを書くことでした。:)
Memming

1
この問題を扱う私のサイドプロジェクトへのリンクを下部に追加しました。
MRocklin

SymPy行列の乗算と反転の単純化を推測できますか?
Royi

4

パッケージNCAlgebra http://www.math.ucsd.edu/~ncalg/(数学の下で実行)を使用して、いくつかのシンボリックマトリックス計算(ブロックマトリックス補完など)を実行できます。

Bergman http://servus.math.su.se/bergman/は、同様の機能を持つLispのパッケージです。

関連論文:http :
//math.ucsd.edu/~helton/osiris/COMPALG2000/ohRevisIJC.pdf
http://math.ucsd.edu/~thesis/thesis/dkronewitter/dkronewitter.pdf
http:// www。 tandfonline.com/doi/abs/10.1080/00207170600882346


3

CAS2x23x3B

質問は次のようになりNます、次元行列はどうですか?たぶん、for N-1 x N-1が真であると仮定される帰納的スキームを考え出し、それから全体のサイズで新しいブロック行列を構築し、N x Nそれが正定で対称であることを証明できます。

最後の質問は、どのソフトウェアがタスク(もしあれば)により適しているかということで、私の経験はMATLAB/MuPadandをDerive使用し(まだ使用しています)、どちらもベクトルと行列を非常にうまく処理しません。MATLABすべてをコンポーネントに分解し、Derive宣言Non-scalarsできますが、単純化ルールは適用しません。

a×(b×c)=(ab)c(ac)b


2

これらのパッケージのいずれかを最後に使用してからしばらく経ちましたが、アサーションを使用してMathematicaなどの言語でこれを実行できると考えました。Assert [A、Symmetric]のようなものは、Aが対称行列であることなどをMathematicaに伝えます。現時点ではどちらにもアクセスできないので、これは確認する必要があるものです。


1
Assuming代わりにMathematicaコマンドを意味すると思いますAssertAssuming式を簡略化または統合するときにこれらの仮定を適用しますが、マトリックスプロパティが伝播されるかどうかについてのドキュメントは明確ではありません。私の推測では、そのようなプロパティはシンボリック計算を介して運ばれていません。
ジェフオックスベリー

それは本当かもしれません。私が言ったように、これは何年も前(私の大学院時代)でした。しかし、私はこのようなことを一度できるようになったことを覚えています。(おそらく、Scientific WorkPlaceで実装されたMuPadを使用していた可能性があります)。
aeismail

MuPADは現在Matlabの一部です。ドキュメントによると、仮定の使用法はMathematicaの使用法に似ています。
ジェフオックスベリー

MuPADは固定サイズの行列のみを処理でき、正定性などの任意の仮定を取りません。また、BAB 'の当初の明確な明確性の質問に答えることはできません。
Memming

@Memming:結構です。私が言ったように、2006年頃(PCからMacに切り替えたとき)にプログラムを定期的に使用したため、MuPADの記憶はかなり古くなっていました。
aeismail

2

Maple 15ではできません。行列には「直交」というプロパティはありません(ただし、対称およびPositiveDefiniteがあります)。


1
Maple 16に更新->どちらのプロパティも「直交」なし。
GertVdE

1

Mathematicaでは、少なくともこれらのプロパティで特定の行列を確認できます。たとえば、A説明したマトリックス:

In[1]:= A = {{2.0,-1.0,0.0},{-1.0,2.0,-1.0},{0.0,-1.0,2.0}};
        {SymmetricMatrixQ[A],PositiveDefiniteMatrixQ[A]}
Out[2]= {True,True}

マトリックスの場合B

In[3]:= B = {{0, -0.80, -0.60}, {0.80, -0.36, 0.48}, {0.60, 0.48, -0.64}};
        Transpose[B] == Inverse[B]
Out[4]= True

次に:

In[5]:= c = B.A.Transpose[B];
        {SymmetricMatrixQ[c],PositiveDefiniteMatrixQ[c]}
Out[6]= {True,True}

Mathematica行列と線形代数のドキュメント


7
上記の述語は、マットが上記のようにこれらのプロパティを象徴的に伝播するのではなく、特定のマトリックスのプロパティを検証していることを理解しています。
マットネプリー

ああ、はい。ごめんなさい 私は誤解しました。
リンチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.