記号表現を二次形式で因数分解する

Matlabにこのような象徴的な式があるとします

syms x y z real

T = 2*x^2 + k*y^2 + 6*k*x*y

どのように行列Bを見つけることができますか?

T = [x y] * B * [x y]'

ご協力いただきありがとうございます。

0
Matlab2013aにはヘッセ関数があります
追加された 著者 OHLÁLÁ,

2 答え

私はここで問題を理解しているかどうかはわかりません。係数を知っていれば、方程式からそれらを抽出し、それからBを作成できませんか?

私:

[x y ] * [ a b ; c d ] * [ x y ]' = ax^2 + dy^2 + (b + c)xy = ax^2 + dy^2 + exy

そう

B = [ a 0 ; b e ]
0
追加された
方程式の作成に使用するコードを与えることはできますか? (私はそれらを使ったことがないので、 "方程式"オブジェクトを作成する方法はわかりません)。
追加された 著者 Darhuuk,
ああ、私はあなたの正確な数式を得る必要はありません。方程式と同じタイプのオブジェクトを作成するMATLABコードを教えてください。次に、私はそれを使って遊んで、係数を抽出できるかどうかを調べることができます。
追加された 著者 Darhuuk,
はい、元の式からこの係数を自動的に抽出する方法はわかりません。
追加された 著者 Davide Aversa,
それは非常に複雑な式です。 :(それは3Rのロボットマニピュレータの運動エネルギーですが、私は質問にmatlabの記号式についての詳細を追加します。
追加された 著者 Davide Aversa,

OK。私は自分でこの問題を解決しました。

B = 0.5 * jacobian(jacobian(T,V),V)

ここで V は変数のベクトルです。

説明は少し数学的です。詳細を知りたいのなら、私に尋ねてください。 :)

0
追加された