2017-03-20 12 views
0

MATLABの魅惑的な問題に遭遇しています。ここでシンボリック関数を含むシンボリック方程式にjacobianを実行するクリーンな方法を見つけることができません。jacobianとシンボリック関数を使用したMATLABとの区別

のは、私は運動エネルギー

kinetic energy

の変数xphiは私が部分的に撮りたい場合はギブdiff(x(t),t)diff(phi(t),t)

を区別シンボリック機能この式をされているとしましょうそのような座標の派生物(x_dotとphi_dot)

partial

私は変数はシンボリック変数、 しかしとして指定された場合、私の場合、彼らは私がで代用する subs()機能を使用することができ、そのような

diff(x(t),t) 
diff(phi(t),t) 

としてシンボリック関数として与えられていることを行うことができ

記号的な変数ですが、それはすぐに乱雑になることがあります。特に、この次のステップで:

time

これは私が、私は時間微分を取ることができます機能として再代替すべてのこれらの変数をする必要が意味するであろう。

線とコード行なしの記号ツールボックスでこれらの方程式を簡単に導き出す方法については、

+1

シンボリック変数を設定し、これに対処する方法の例を示します。それから、他の人があなたにもっと良い方法を見せてくれるのははるかに簡単です... – Wolfie

答えて

1

は、私はあなたが行うことができる唯一のことは、このためのsubsを使用している恐れてんだけど、あなたはこのような機能でそれをラップすることができます:あなたが例と同様に、あなたのヤコビアンを計算することができ、この機能を使用する

function df = my_jacobian(f, x) 
    x_ = sym('a', size(x)); 
    f_ = subs(f, x, x_); 
    df_ = jacobian(f_, x_); 
    df = subs(df_, x_, x); 
end 

以下のようになります。

syms x(t) y(t) 

f = 2*diff(x(t), t) + 5*diff(y(t), t) + diff(x(t), t) * diff(y(t), t); 
df = my_jacobian(f, [diff(x(t), t) diff(y(t), t)]) 
関連する問題