我正在尝试在MatLab中求一个有限元分析问题的形函数。基本形状函数如下所示,边界条件在左侧。在Ni=n1,x=x1,y=y1(节点1的坐标)处,形状函数将等于1,当Ni=n1,但当x=x2,y=y2(节点2的坐标)时,形状函数将为0,依此类推,并且在Ni=n2、n3等处类似。我使用一个名为A的符号16*16矩阵来表示四个形状函数的4个系数。
这是我的代码,用来找出阿尔法、贝塔、伽马,以及从N1到N4的四个方程式的最后一个希腊字母(总共16个未知):
A = sym('A', [4 4]);
eqns = zeros(4,4);
coorx = sym('coorx', [1 4]);
coory = sym('coory', [1 4]);
for i=1:4
for j=1:4
if j==i
eqns(i,j)=A(i,1)+A(i,2)*coorx(j)+A(i,3)*coory(j)+A(i,4)*coorx(j)*coory(j)==1;
else
eqns(i,j)=A(i,1)+A(i,2)*coorx(j)+A(i,3)*coory(j)+A(i,4)*coorx(j)*coory(j)==0;
end
end
end
tst=solve(eqns,A);
tst.A4_4
我测试了很多输出,但我得到的唯一值是0,而我应该得到类似coorx(J)-coory(J)的函数。你能告诉我为什么吗?
1条答案
按热度按时间ej83mcc01#
如果使用参数坐标和形函数,则这些函数很容易编写。通常的顺序是从左下角开始,然后逆时针方向进行:
您可以使用雅各布豆矩阵从参数坐标Map到全局坐标。