syms EI l a
EA = 1/2*EI;
k = [EA/EI 0 0 -EA/EI 0 0;0 12/l^2 -6 0 -12/l^2 -6/l;0 -6/l 4 0 6/l 2;-EA/EI 0 0 EA/EI 0 0;0 -12/l^2 6/l 0 12/l^2 6/l;0 -6/l 2 0 6/l 4];
k = EI/l*k;
Q = [cos(a) sin(a) 0 0 0 0;-sin(a) cos(a) 0 0 0 0;0 0 1 0 0 0;0 0 0 cos(a) sin(a) 0;0 0 0 -sin(a) cos(a) 0;0 0 0 0 0 1];
l_2 = 5;
format short
alpha_2 = atan(-3/4);
alpha_2 = alpha_2*180/pi;
k_2_lokal = subs(k,l,l_2);
Q_2 = subs(Q,a,alpha_2);
k_2 = transpose(Q_2).* k_2_lokal.*Q_2
此段代码的原理为直接刚度法。出现的k_2结果非常复杂,cos这串数字的结果用计算器计算为4/5,不知道该如何简化。
使用过simplfy(),double()和format都无法简化。
Matlab版本为64位R2020b

 Réponse acceptée

0 votes

你这是自己给自己找麻烦。
前面第一次给 k 矩阵赋值,它是个只与 l 变量有关的矩阵,而你最后是要把具体数值代入 l 变量的,所以 k 矩阵实际就是个数值矩阵。
随后 k = EI/l*k; 这句,EI是可以当做一个因数或者系数,单独提出来的,剩余的 factor = 1 / l * k; 就仍然只含有数值。
这样算出来结果是
EI * [ 0.0456 0 0 0 0 0
0 0.0438 0 0 0 0
0 0 0.8000 0 0 0
0 0 0 0.0456 0 0
0 0 0 0 0.0438 0
0 0 0 0 0 0.8000 ]

Plus de réponses (0)

Catégories

En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!