stellari 发表于 2013-10-23 11:39
意思是说在函数当中,所有的变量的创建都必须直接写在可执行语句当中,也就是让MATLAB在还没有运行这个程序 ...
我还是不知道我的是哪里出了问题呢,呵呵。代码如下:
function [x1,x2,x3,x4,x5,x6]=six_freedom_reverse_answer(x0)
syms x1 x2 x3 x4 x5 x6 h h1 h2 h3
syms d4 d5 d6 d7 d8 d9 theta1 theta2 alpha1 beta1 gamma1 X Y Z
%拉杆各个上球铰在风洞坐标系中的坐标(相当于静坐标系)
B_U1=[x1,-d4+h1*sin(theta1),-h+h1*cos(theta1)];
B_U2=[x2,-d4+h1*sin(theta1),-h+h1*cos(theta1)];
B_U3=[x3,-d4+h2*sin(theta1)-d5*cos(theta1),-h+d5*sin(theta1)+h2*cos(theta1)];
B_U4=[x4,d4-h1*sin(theta1),-h+h1*cos(theta1)];
B_U5=[x5,d4-h1*sin(theta1),-h+h1*cos(theta1)];
B_U6=[x6,d4-h2*sin(theta1)+d5*cos(theta1),-h+d5*sin(theta1)+h2*cos(theta1)];
B_U=[B_U1;B_U2;B_U3;B_U4;B_U5;B_U6];
%拉杆各个下球铰在机体坐标系中的坐标(相当于动坐标系)
B_D1=[d6,-d9,-h3];
B_D2=[-d6-d7*cos(theta2),-d8,-h3-d7*sin(theta2)];
B_D3=[-d6,-d9,-h3];
B_D4=[d6,d9,-h3];
B_D5=[-d6-d7*cos(theta2),d8,-h3-d7*sin(theta2)];
B_D6=[-d6,d9,-h3];
%拉杆各个下球铰在风洞坐标系中的坐标
B_D11=[(cos(beta1))*(cos(alpha1))*d6+(sin(beta1))*(cos(gamma1))*d9-(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d9-(sin(beta1))*(sin(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3+X;
(sin(beta1))*(cos(alpha1))*d6-(cos(beta1))*(cos(gamma1))*d9-(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d9+(cos(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3+Y;
-(sin(alpha1))*d6-(cos(alpha1))*(sin(gamma1))*d9-(cos(alpha1))*(cos(gamma1))*h3+Z];
B_D111=B_D11';
B_D44=[(cos(beta1))*(cos(alpha1))*d6-(sin(beta1))*(cos(gamma1))*d9+(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d9-(sin(beta1))*(sin(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3+X;
(sin(beta1))*(cos(alpha1))*d6+(cos(beta1))*(cos(gamma1))*d9+(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d9+(cos(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3+Y;
-(sin(alpha1))*d6+(cos(alpha1))*(sin(gamma1))*d9-(cos(alpha1))*(cos(gamma1))*h3+Z];
B_D444=B_D44';
B_D22=[-(cos(beta1))*(cos(alpha1))*d6-(cos(beta1))*(cos(alpha1))*(cos(theta2))*d7+(sin(beta1))*(cos(gamma1))*d8-(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d8-(sin(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(gamma1))*(sin(theta2))*d7-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*(sin(theta2))*d7+X;
-(sin(beta1))*(cos(alpha1))*d6-(sin(beta1))*(cos(alpha1))*(cos(theta2))*d7-(cos(beta1))*(cos(gamma1))*d8-(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d8+(cos(beta1))*(sin(gamma1))*h3+(cos(beta1))*(sin(gamma1))*(sin(theta2))*d7-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*(sin(theta2))*d7+Y;
(sin(alpha1))*d6+(sin(alpha1))*(cos(theta2))*d7-(cos(alpha1))*(sin(gamma1))*d8-(cos(alpha1))*(cos(gamma1))*h3-(cos(gamma1))*(cos(alpha1))*(sin(theta2))*d7+Z];
B_D222=B_D22';
B_D55=[-(cos(beta1))*(cos(alpha1))*d6-(cos(beta1))*(cos(alpha1))*(cos(theta2))*d7-(sin(beta1))*(cos(gamma1))*d8+(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d8-(sin(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(gamma1))*(sin(theta2))*d7-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*(sin(theta2))*d7+X;
-(sin(beta1))*(cos(alpha1))*d6-(sin(beta1))*(cos(alpha1))*(cos(theta2))*d7+(cos(beta1))*(cos(gamma1))*d8+(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d8+(cos(beta1))*(sin(gamma1))*h3+(cos(beta1))*(sin(gamma1))*(sin(theta2))*d7-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*(sin(theta2))*d7+Y;
(sin(alpha1))*d6+(sin(alpha1))*(cos(theta2))*d7+(cos(alpha1))*(sin(gamma1))*d8-(cos(alpha1))*(cos(gamma1))*h3-(cos(gamma1))*(cos(alpha1))*(sin(theta2))*d7+Z];
B_D555=B_D55';
B_D33=[-(cos(beta1))*(cos(alpha1))*d6+(sin(beta1))*(cos(gamma1))*d9-(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d9-(sin(beta1))*(sin(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3+X;
-(sin(beta1))*(cos(alpha1))*d6-(cos(beta1))*(cos(gamma1))*d9-(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d9+(cos(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3+Y;
(sin(alpha1))*d6-(cos(alpha1))*(sin(gamma1))*d9-(cos(alpha1))*(cos(gamma1))*h3+Z];
B_D333=B_D33';
B_D66=[-(cos(beta1))*(cos(alpha1))*d6-(sin(beta1))*(cos(gamma1))*d9+(cos(beta1))*(sin(alpha1))*(sin(gamma1))*d9-(sin(beta1))*(sin(gamma1))*h3-(cos(beta1))*(sin(alpha1))*(cos(gamma1))*h3+X;
-(sin(beta1))*(cos(alpha1))*d6+(cos(beta1))*(cos(gamma1))*d9+(sin(beta1))*(sin(alpha1))*(sin(gamma1))*d9+(cos(beta1))*(sin(gamma1))*h3-(sin(beta1))*(sin(alpha1))*(cos(gamma1))*h3+Y;
(sin(alpha1))*d6+(cos(alpha1))*(sin(gamma1))*d9-(cos(alpha1))*(cos(gamma1))*h3+Z];
B_D666=B_D66';
B_D=[B_D111;B_D222;B_D333;B_D444;B_D555;B_D666];
%固定参数的初始化,L[]分别为六根杆长的理论值
L=sym('[900,720,900,900,720,900]');
%x1=876.847;
%x2=304.387;
%x3=-906.348;
%x4=876.847;
%x5=304.387;
%x6=-906.348;
%拉杆上端球铰坐标与下端球铰坐标之差即各个拉杆长度值,这样就建立了一个等式
B_UD=B_U-B_D;
for i=1:6
M(i)=B_UD(i,1)*B_UD(i,1)+B_UD(i,2)*B_UD(i,2)+B_UD(i,3)*B_UD(i,3);
end
%M(i)为实际的杆长值,L(i)为理论的杆长值,二者之差为误差,即趋近于0的数值解
for i=1:6
Error(i)=M(i)-L(i)^2;
end
%数值的置换
subs(Error,{h,h1,h2,h3,d4,d5,d6,d7,d8,d9,theta1,theta2},{1423.7727,55.3417,55.3417,838.467,267.1744,198,175.374,145.916,93.314/2,242.415/2,30/180*pi,57.9397/180*pi});
E=[Error(1);Error(2);Error(3);Error(4);Error(5);Error(6)];
x=[x1 x2 x3 x4 x5 x6];