matlab 如何生成数值解而非解析解? 5
symsdelta_fmiu=1;C_af=57800;F_zf=100;bound=atan(3*miu*F_zf/C_af);nor=5;%belta+a*r/vx;...
syms delta_fmiu=1;C_af=57800;F_zf=100;bound=atan(3*miu*F_zf/C_af);nor=5; % belta+a*r/vx;a_f=nor-delta_f;w=nor+bound;n=-bound+nor;cm=['solve(22=piecewise([delta_f>=n & delta_f<=w, 15*sin(2*delta_f)],'... '[delta_f>w 2*delta_f]),delta_f)'];funtt=evalin(symengine,cm)我生成的是funtt =piecewise(vpa(w) < 11, {11}, ~vpa(w) < 11, {})可是我想要的是11这个数字。我不知道怎么改程序,谢谢!因为w和n是每一次迭代值不一样,所以我不能确定w和n的值,那cm那句话里我只能用w和n来表示。
展开
1个回答
展开全部
题主所编写的代码,想利用symengine命令调用 mupad ,求解分段函数且以delta_f变量作为分段条件,似乎不可能。所以建议题主,这样来处理,即利用if判断语句来求解Cm值 。其代码可以这样改
syms delta_f
miu=1;C_af=57800;F_zf=100;
bound=atan(3*miu*F_zf/C_af);
nor=5;
a_f=nor-delta_f;
w=nor+bound;
n=-bound+nor;
k=0;
for delta_f=0:0.5:15;
k=k+1;
if delta_f>=n & delta_f<=w
Cm(k)=15*sin(2*delta_f);
elseif delta_f>w
Cm(k)=2*delta_f;
else
Cm(k)=delta_f;
end
end
delta_f=0:0.5:15;
plot(delta_f,Cm)
xlabel('\delta_f'),ylabel('C_m');
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询