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来表示。 展开
 我来答
lhmhz
高粉答主

2019-12-04 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:17003

向TA提问 私信TA
展开全部

题主所编写的代码,想利用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');

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式