0

私は matlab を初めて使用し、fsolve コマンドで使用する次の関数を作成しました。

function F = myfun(x)

F(1)=cos(phi3)+7*cos(x(2))-5*cos(x(5))+7*cos(x(1))-3*cos(phi2);
F(2)=sin(phi3)+7*sin(x(2))-5*sin(x(5))+7*sin(x(1))-3*sin(phi2)+4;
F(3)=2*cos(phi4)-14*cos(x(3))-5*cos(x(6))+7*cos(x(4))-2.5*cos(x(5))+7*cos(x(1))-3*cos(phi2);
F(4)=2*sin(phi4)-14*sin(x(3))-5*sin(x(6))+7*sin(x(4))-2.5*sin(x(5))+7*sin(x(1))-3*sin(phi2)+7;
F(5)=2*cos(phi4)-14*cos(x(3))-5*cos(x(6))+7*cos(x(4))+2.5*cos(x(5))-7*cos(x(2))-cos(phi3);
F(6)=2*sin(phi4)-14*sin(x(3))-5*sin(x(6))+7*sin(x(4))+2.5*sin(x(5))-7*sin(x(2))-sin(phi3)+3;`

私の問題の次の部分について。x(1)、x(2)、.. x(6) に関して、F(1) から F(6) の導関数を使用したい コマンド ウィンドウなどでコードを書きたいこの仕事を私に代わって行い、導関数を含む新しい関数を作成してください。(もちろん、手で簡単に行うこともできますが、それは素晴らしい実装になるでしょう)

diff コマンドでさまざまなオプションを既に試しましたが、管理できないようです。

この関数を x=fsolve(@myfun,[a],options) として使用し、 a は x(1)..x(6) の初期値であり、F(1)..F(6) から生成したい) G(1)=-sin(phi3)dphi3/dt-7sin(x(2))dx(2)/dt+5sin(x(5) のような新しい関数 G(1)..G(6) )dx(5)/dt... この方程式では、fsolve の結果を入力し、さらにそれらを使用して x(2)/dt (角速度) を解きます。

4

0 に答える 0