矩阵的符号运算结果如何简化?。

11 views (last 30 days)
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

Accepted Answer

皇家国际客服经理【微8785092】
你这是自己给自己找麻烦。
前面第一次给 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 ]

More Answers (0)

Community Treasure Hunt

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

Start Hunting!