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;`

对于我的问题的下一部分。我想使用 F(1) 到 F(6) 关于 x(1), x(2), .. x(6) 的导数 我想写一些代码,例如在命令窗口中可以为我完成这项工作并生成包含其中的导数的新函数。(当然我可以很容易地手动完成,但这将是一个很好的实现)

我已经尝试了 diff 命令的各种选项,但似乎无法管理它。

我将此函数用作 x=fsolve(@myfun,[a],options) ,其中 a 是 x(1)..x(6) 的初始值现在我想从 F(1)..F(6 ) 新函数 G(1)..G(6) 看起来像 G(1)=-sin(phi3)dphi3/dt-7sin(x(2))dx(2)/dt+5sin(x(5) )dx(5)/dt... 在这个等式中,我将填充 fsolve 的结果,然后进一步使用它们来求解 x(2)/dt(角速度)

4

0 回答 0