你好,有两个地方要注意,第一个是预定义参数,第二个是把sym转化成关于a1的函数——可以用matlabFunction命令(如有帮助,还麻烦帮忙点个采纳支持一下答主答题哟,谢谢啦):
clc;clear all;
syms a1 m2 m3 r l lBS J2 yC % a1为角度变量
r=50.8;l=203;lBS=50.8;J2=0.0102;yC=0; % 把预定义变量放最前面
a2=r*sin(a1)/l;
xB=r*cos(a1);yB=r*sin(a1);
xC=r*cos(a1)+l*cos(a2);
xS2=xC-(l-lBS)*cos(a2);yS2=(l-lBS)*sin(a2);xS3=r*cos(a1)+l*cos(a2);
h=yB-yS2;i=xS2-xB;j=yS2-yC;k=xC-xS2;
m2=1.36;m3=0.907;
A=[-1,0,1,0,0,0,0,0;
0,-1,0,1,0,0,0,0;
0,0,-yB,xB,0,0,0,1;
0,0,-1,0,1,0,0,0;
0,0,0,-1,0,1,0,0;
0,0,h,i,j,k,0,0;
0,0,0,0,-1,0,0,0;
0,0,0,0,0,-1,1,0];
b=[0 0 0 m2*diff(xS2,2) m2*diff(yS2,2) J2*diff(a2,2) m3*diff(xS3,2) 0]';
x=A\b;
a1=0:pi/90:2*pi;
t1=x(1,1);t2=x(2,1);
t3=x(7,1);t4=x(8,1);
Fsx=t1;Fsy=t2+t3;Ms=xC*t3;Md=t4;
Fsx = matlabFunction(Fsx); % 转化成关于a1的函数
Fsy = matlabFunction(Fsy); % 转化成关于a1的函数
Ms = matlabFunction(Ms); % 转化成关于a1的函数
t4 = matlabFunction(t4); % 转化成关于a1的函数
figure(1);plot(a1,Fsx(a1),'k:');xlabel('角1');ylabel('Fsx/N');
figure(2);plot(a1,Fsy(a1),'k:');xlabel('角1');ylabel('Fsy/N');
figure(3);plot(a1,Ms(a1),'k:');xlabel('角1');ylabel('Ms/Nm');
figure(4);plot(a1,t4(a1),'k:');xlabel('角1');ylabel('Md/Nm');