[已解决] 矩阵的符号运算结果如何简化?

[复制链接]
JoJo_996 发表于 2022-6-28 20:09:35
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

01.JPG

最佳答案


TouAkira 发表于 2022-6-29 05:00:41
你这是自己给自己找麻烦。
前面第一次给 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 ]
回复此楼

1 条回复


TouAkira 发表于 2022-6-29 05:00:41
你这是自己给自己找麻烦。
前面第一次给 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 ]
回复此楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表