符号计算的话一般pi会被保留,所以fc中有pi
S中没有是因为S不是符号变量,是一般的数值型变量
Nt中没有是因为该表达式先计算括号内的pi*rw^2,这个计算是也是按数值类型计算的。如果改为Nt=0.85*(r2-r1)*Lm/pi/rw^2,pi就会被保留了
subs赋值错误是因为r2的第一个元素50e-3代入后分母为0所以报错
你程序中用到sym,pi是sym类,一般在式子中不会变为小数,而是直接显示为pi,须用vpa化为小数。你的程序有问题,可这样改:
clc;clear
%%符号运算求出fc表达式
syms r2;
r1=50e-3;
I=3;
Lm=25e-3;
rw=0.425e-3;
S=pi*0.425^2;
Nt=0.85*(r2-r1)*Lm/(pi*rw^2);
row=0.0175;
reff=(r1+r2)/2;
Li=44.1*Nt^2*reff^2/(6*reff+9*Lm+10*(r2-r1));
R=Nt*2*pi*reff*row/S;
fc=R/(2*pi*Li);
%%对fc中变量r2赋值,画图fc-r2
%r2=50e-3:1e-3:200e-3;
r=51e-3:1e-3:200e-3;
%fcc=subs(fc,r2);
fcc=vpa(subs(fc,r2,r));
figure;
%plot(r2,fcc);
plot(r,fcc);
xlabel('outer radius r2(m)');
ylabel('-3dB Frequency (Hz)');