在simulink中利用Matlab function模块求变量偏导数

假设已知一个多输入函数MATLAB function为:

function y=fun(u,v,w),

y=u*v*w;

end;

现要求输出y关于u的偏导数值

首先在另外一个m文件中利用diff函数求出偏导数的表达式

syms u v w;

y=fun(u,v,w);

dy_du=diff(y,u);

运行该文件即可得到y关于u的偏导数表达式:dy_du=v*w;

将表达式复制到MATLAB function中

function [y,dy_du]=fun(u,v,w);

y=u*v*w;

dy_du=v*w;

end

 如下面这个轮胎模型的MATLAB function,要利用该模型得到Fx和Fy对滑移率s的偏导数

function [Fyrr,Fxrr]= fcn(Fzrr,alfa4,Srr,urr,mu)
% This block supports an embeddable subset of the MATLAB language.
% See the help menu for details. 
epsilon=0.015;
Ca=30000;
Cs=50000;
Lamda=mu*Fzrr*(1-epsilon*urr*sqrt(Srr^2+(tan(alfa4))^2))*(1-Srr)/(2*sqrt(Cs^2*Srr^2+Ca^2*(tan(alfa4))^2));
if Lamda<1f=Lamda*(2-Lamda);
elsef=1;
end
Fyrr=Ca*tan(alfa4)*f/(1-Srr);
Fxrr=Cs*Srr*f/(1-Srr);

在另外的m文件中运行得到偏导数的表达式

syms Fzrr alfa4 Srr urr mu
epsilon=0.015;
Ca=30000;
Cs=50000;
Lamda=mu*Fzrr*(1-epsilon*urr*sqrt(Srr^2+(tan(alfa4))^2))*(1-Srr)/(2*sqrt(Cs^2*Srr^2+Ca^2*(tan(alfa4))^2));f=Lamda*(2-Lamda);Fyrr=Ca*tan(alfa4)*f/(1-Srr);Fxrr=Cs*Srr*f/(1-Srr);dFx_ds=diff(Fxrr,Srr);dFy_ds=diff(Fyrr,Srr);

得到表达式为:

dFx_ds =(5*Fzrr*mu*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) + (5*Fzrr*Srr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1)*((Fzrr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (Fzrr*Srr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(800*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr*mu*urr*(Srr - 1))/(4000000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (125*Fzrr*Srr^2*mu*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr^2*mu*urr*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2))/(80*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))>> dFy_dsdFy_ds =(3*Fzrr*mu*tan(alfa4)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1)*((Fzrr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (Fzrr*Srr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(800*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr*mu*urr*(Srr - 1))/(4000000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (75*Fzrr*Srr*mu*tan(alfa4)*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (9*Fzrr*Srr*mu*urr*tan(alfa4)*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2))/(400*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))

将其带入到matlab function中即可

function [Fyrr,Fxrr,dFx_ds_4,dFy_ds_4]= fcn(Fzrr,alfa4,Srr,urr,mu)
% This block supports an embeddable subset of the MATLAB language.
% See the help menu for details. 
epsilon=0.015;
Ca=30000;
Cs=50000;
Lamda=mu*Fzrr*(1-epsilon*urr*sqrt(Srr^2+(tan(alfa4))^2))*(1-Srr)/(2*sqrt(Cs^2*Srr^2+Ca^2*(tan(alfa4))^2));
if Lamda<1f=Lamda*(2-Lamda);Fyrr=Ca*tan(alfa4)*f/(1-Srr);Fxrr=Cs*Srr*f/(1-Srr);dFx_ds_4=(5*Fzrr*mu*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) + (5*Fzrr*Srr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1)*((Fzrr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (Fzrr*Srr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(800*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr*mu*urr*(Srr - 1))/(4000000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (125*Fzrr*Srr^2*mu*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr^2*mu*urr*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2))/(80*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2));dFy_ds_4=(3*Fzrr*mu*tan(alfa4)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1)*((Fzrr*mu*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (Fzrr*Srr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(800*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (3*Fzrr*Srr*mu*urr*(Srr - 1))/(4000000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2))))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - (75*Fzrr*Srr*mu*tan(alfa4)*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(2*(25*Srr^2 + 9*tan(alfa4)^2)^(3/2)) + (9*Fzrr*Srr*mu*urr*tan(alfa4)*((Fzrr*mu*(Srr - 1)*((3*urr*(Srr^2 + tan(alfa4)^2)^(1/2))/200 - 1))/(20000*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)) - 2))/(400*(25*Srr^2 + 9*tan(alfa4)^2)^(1/2)*(Srr^2 + tan(alfa4)^2)^(1/2));
elsef=1;
Fyrr=Ca*tan(alfa4)*f/(1-Srr);
Fxrr=Cs*Srr*f/(1-Srr);
dFx_ds_4=(50000*Srr)/(Srr - 1)^2 - 50000/(Srr - 1);dFy_ds_4=(30000*tan(alfa4))/(Srr - 1)^2;     
end


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部