如何设置MatLab形函数求解器

eoigrqb6  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(281)

我正在尝试在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)的函数。你能告诉我为什么吗?

ej83mcc0

ej83mcc01#

如果使用参数坐标和形函数,则这些函数很容易编写。通常的顺序是从左下角开始,然后逆时针方向进行:

-1 <= a <= +1
-1 <= b <= +1

h1(a, b) = (1-a)*(1-b)/4.0
h2(a, b) = (1+a)*(1-b)/4.0
h3(a, b) = (1+a)*(1+b)/4.0
h4(a, b) = (1-a)*(1+b)/4.0

您可以使用雅各布豆矩阵从参数坐标Map到全局坐标。

相关问题