1

この質問はすでに user1003131 によって投稿され、Rody Oldenhuis によって回答されています。

matlabでexpを使用して関数の臨界点を見つける方法

結局、EitanT はいくつかの重要なポイントを見つけることができ、user1003131 は 1 つしか見つけられないということです。

議論の終わりは、なぜこれが起こるのかについて決定的ではありません. 洞察はありますか?

また、私のコードは次のとおりです。

%% symbolic variables
syms w a l E I x;

%% equations
FIA=0;
THETAA=0;
MA=-((w*a)/(l^2))*((l-a)^2);
RA=(w/(l^3))*((l-a)^2)*(l+2*a);

%slope
HEAVISIDE_theta=(heaviside(x-a))*((x-a)^2);
theta=THETAA+((MA*x)/(E*I))+((RA*(x^2))/(2*E*I))-((w/(2*E*I))*HEAVISIDE_theta);

%deflection
HEAVISIDE_d=(heaviside(x-a))*((x-a)^3);
d=FIA+(THETAA*x)+((MA*(x^2))/(2*E*I))+((RA*(x^3))/(6*E*I))-((w/(6*E*I))*HEAVISIDE_d)

%% Partial differential equations
%slope
der_theta_x_2=(w*heaviside(x - a)*(2*a - 2*x))/(2*E*I) - (w*0*(a - x)^2)/(2*E*I) - (a*w*(a - l)^2)/(E*I*l^2) + (w*x*(a - l)^2*(2*a + l))/(E*I*l^3);
der_theta_a_2=(w*0*(a - x)^2)/(2*E*I) - (w*heaviside(x - a)*(2*a - 2*x))/(2*E*I) - (w*x*(a - l)^2)/(E*I*l^2) + (w*x^2*(a - l)^2)/(E*I*l^3) + (w*x^2*(2*a + l)*(2*a - 2*l))/(2*E*I*l^3) - (a*w*x*(2*a - 2*l))/(E*I*l^2);

%deflection
der_d_x_2=(w*0*(a - x)^3)/(6*E*I) - (w*heaviside(x - a)*(a - x)^2)/(2*E*I) + (w*x^2*(a - l)^2*(2*a + l))/(2*E*I*l^3) - (a*w*x*(a - l)^2)/(E*I*l^2);
der_d_a_2=(w*heaviside(x - a)*(a - x)^2)/(2*E*I) - (w*0*(a - x)^3)/(6*E*I) - (w*x^2*(a - l)^2)/(2*E*I*l^2) + (w*x^3*(a - l)^2)/(3*E*I*l^3) - (a*w*x^2*(2*a - 2*l))/(2*E*I*l^2) + (w*x^3*(2*a + l)*(2*a - 2*l))/(6*E*I*l^3);

%% define values
l=2;
I=4;
E=90000;
w=90;

%% replace symbols
theta=subs(theta);
d=subs(d);

der_theta_x_2=subs(der_theta_x_2);
der_theta_a_2=subs(der_theta_a_2);


der_d_x_2=subs(der_d_x_2);
der_d_a_2=subs(der_d_a_2);

%%   calculate critical points

[acr_theta, xcr_theta]=solve(der_theta_x_2, der_theta_a_2)
pcr_theta=double([acr_theta(:) xcr_theta(:)])


[acr_d, xcr_d]=solve(der_d_x_2==0,der_d_a_2==0, a, x)
pcr_d=double([acr_theta(:) xcr_theta(:)])

最小化を使用して極値を見つけることを検討しますが、ヘヴィサイド関数が存在するため、それができません。

助言がありますか?

ありがとう

4

0 に答える 0