题主,能帮忙看一下我的这个程序吗,也是相当于非线性方程组求解的
syms arf theta gama
l1=7.0;
l2=l1;
l3=l2;
para;
L=2.66;
T(1,1)=cos(theta)*cos(gama);
T(1,2)=-cos(arf)*sin(gama)+sin(arf)*sin(theta)*cos(gama);
T(1,3)=sin(arf)*sin(gama)+cos(arf)*sin(theta)*cos(gama);
T(2,1)=cos(theta)*sin(gama);
T(2,2)=cos(arf)*cos(gama)+sin(arf)*sin(theta)*sin(gama);
T(2,3)=-sin(arf)*cos(gama)+cos(arf)*sin(theta)*sin(gama);
T(3,1)=-sin(theta);
T(3,2)=sin(arf)*cos(theta);
T(3,3)=cos(arf)*cos(theta);
S=T*A-B;
M=(l1^2-l2^2-S(1,1)^2-S(2,1)^2-S(3,1)^2+S(1,2)^2+S(2,2)^2+S(3,2)^2)/2;
N=(l2^2-l3^2-S(1,2)^2-S(2,2)^2-S(3,2)^2+S(1,3)^2+S(2,3)^2+S(3,3)^2)/2;
S1(1,1)=S(1,1)-S(1,2);
S1(1,2)=S(2,1)-S(2,2);
S1(2,1)=S(1,2)-S(1,3);
S1(2,2)=S(2,2)-S(2,3);
S2=inv(S1);
%%求q4,q5用q6表达式的系数
a=-((S(3,1)-S(3,2))*S2(1,1)+(S(3,2)-S(3,3))*S2(1,2));
b=M*S2(1,1)+N*S2(1,2);
c=-((S(3,1)-S(3,2))*S2(2,1)+(S(3,2)-S(3,3))*S2(2,2));
d=M*S2(2,1)+N*S2(2,2);
%%求q6的一元二次方程系数
c1=a^2+c^2+1;
c2=2*(a*(S(1,3)+b)+c*(S(2,3)+d)+S(3,3));
c3=(S(1,3)+b)^2+(S(2,3)+d)^2+(S(3,3))^2-49;
%%求解牵连平动的值即用arf theta gama表示出q4 q5 q6
q6=(-c2+(c2^2-4*c1*c3)^0.5)/2/c1;
q5=c*q6+d;
q4=a*q6+b;
Jv(1,1)=diff(q4,arf);Jv(1,2)=diff(q4,theta);Jv(1,3)=diff(q4,gama);%%%%雅可比矩阵
Jv(2,1)=diff(q5,arf);Jv(2,2)=diff(q5,theta);Jv(2,3)=diff(q5,gama);
Jv(3,1)=diff(q6,arf);Jv(3,2)=diff(q6,theta);Jv(3,3)=diff(q6,gama);
在最后我想给arf theta gama赋值用的 Jv=double(subs(Jv,{arf,theta,gama},{2,1,1}))不知为什么计算这么慢