【发布时间】:2014-01-22 02:25:39
【问题描述】:
我有一个矩阵 Q=A (64x64),一个向量 f=b 是零向量,我知道一些 x=q 的值。我知道我应该将等式右侧的相应列和行(已知x = q)转移(到b),但我不知道如何在Matlab中制作它。我应该为第 1、5、9、13、17、21、25、29、33、37、41、45、49、53、57 和 61、列和行执行此操作。你能帮帮我吗?
这是程序:
clear all;
K=zeros(64,64);
f=zeros(64,1);
ne=32;
E= 8000; %Young
P= 0.51; %Poisson
Lambda=(E*P)/((1+P)*(1-2*P));
Eta=E/(2*(1+P));
%ILOK
ILOK=[
1 3 5 7 2 4 6 8;
5 7 9 11 6 8 10 12;
9 11 13 15 10 12 14 16;
13 15 17 19 14 16 18 20;
17 19 21 23 18 20 22 24;
21 23 25 27 22 24 26 28;
25 27 29 31 26 28 30 32;
29 31 33 35 30 32 34 36;
33 35 37 39 34 36 38 40;
37 39 41 43 38 40 42 44;
41 43 45 47 42 44 46 48;
45 47 49 51 46 48 50 52;
49 51 53 55 50 52 54 56;
53 55 57 59 54 56 58 60;
57 59 61 63 58 60 62 64;
61 63 1 3 62 64 2 4;
3 0 7 0 4 0 8 0;
7 0 11 0 8 0 12 0;
11 0 15 0 12 0 16 0;
15 0 19 0 16 0 20 0;
19 0 23 0 20 0 24 0;
23 0 27 0 24 0 28 0;
27 0 31 0 28 0 32 0;
31 0 35 0 32 0 36 0;
35 0 39 0 36 0 40 0;
39 0 43 0 40 0 44 0;
43 0 47 0 44 0 48 0;
47 0 51 0 48 0 52 0;
51 0 55 0 52 0 56 0;
55 0 59 0 56 0 60 0;
59 0 63 0 60 0 64 0;
63 0 3 0 64 0 4 0;
];
%x
xm=[
9.000 14.500 8.315 13.396;
8.315 13.396 6.364 10.253;
6.364 10.253 3.444 5.549;
3.444 5.549 0.000 0.000;
0.000 0.000 -3.444 -5.549;
-3.444 -5.549 -6.364 -10.253;
-6.364 -10.253 -8.315 -13.396;
-8.315 -13.396 -9.000 -14.500;
-9.000 -14.500 -8.315 -13.396;
-8.315 -13.396 -6.364 -10.253;
-6.364 -10.253 -3.444 -5.549;
-3.444 -5.549 0.000 0.000;
0.000 0.000 3.444 5.549;
3.444 5.549 6.364 10.253;
6.364 10.253 8.315 13.396;
8.315 13.396 9.000 14.500;
14.500 20.000 13.396 18.748;
13.396 18.748 10.253 14.142;
10.253 14.142 5.549 7.654;
5.549 7.654 0.000 0.000;
0.000 0.000 -5.549 -7.654;
-5.549 -7.654 -10.253 -14.142;
-10.253 -14.142 -13.396 -18.748;
-13.396 -18.748 -14.500 -20.000;
-14.500 -20.000 -13.396 -18.748;
-13.396 -18.748 -10.253 -14.142;
-10.253 -14.142 -5.549 -7.654;
-5.549 -7.654 0.000 0.000;
0.000 0.000 5.549 7.654;
5.549 7.654 10.253 14.142;
10.253 14.142 13.396 18.748;
13.396 18.748 14.500 20.000;
];
%y
ym=[
0.000 0.000 3.444 5.549
3.444 5.549 6.364 10.253
6.364 10.253 8.315 13.396
8.315 13.396 9.000 14.500
9.000 14.500 8.315 13.396
8.315 13.396 6.364 10.253
6.364 10.253 3.444 5.549
3.444 5.549 0.000 0.000
0.000 0.000 -3.444 -5.549
-3.444 -5.549 -6.364 -10.253
-6.364 -10.253 -8.315 -13.396
-8.315 -13.396 -9.000 -14.500
-9.000 -14.500 -8.315 -13.396
-8.315 -13.396 -6.364 -10.253
-6.364 -10.253 -3.444 -5.549
-3.444 -5.549 0.000 0.000
0.000 0.000 5.549 7.654
5.549 7.654 10.253 14.142
10.253 14.142 13.396 18.748
13.396 18.748 14.500 20.000
14.500 20.000 13.396 18.748
13.396 18.748 10.253 14.142
10.253 14.142 5.549 7.654
5.549 7.654 0.000 0.000
0.000 0.000 -5.549 -7.654
-5.549 -7.654 -10.253 -14.142
-10.253 -14.142 -13.396 -18.748
-13.396 -18.748 -14.500 -20.000
-14.500 -20.000 -13.396 -18.748
-13.396 -18.748 -10.253 -14.142
-10.253 -14.142 -5.549 -7.654
-5.549 -7.654 0.000 0.000
];
%Ke a fe of element
for k=1:ne
x=xm(k,:);%k-ty radek x-ove matice
y=ym(k,:);%k-ty radek y-ove matice
Au=zeros(4,4);
Av=zeros(4,4);
Auv=zeros(4,4);
Avu=zeros(4,4);
%Numerical integration
for i=1:9
a=0.774596669241483;
gaus=[1 0 0 68/81;
2 0 a 40/81;
3 a 0 40/81;
4 0 -a 40/81;
5 -a 0 40/81;
6 a a 25/81;
7 a -a 25/81;
8 -a -a 25/81;
9 -a a 25/81];
r=gaus(i,2);
s=gaus(i,3);
N=[(1/4)*(1-r)*(1-s);
(1/4)*(1+r)*(1-s);
(1/4)*(1+r)*(1+s);
(1/4)*(1-r)*(1+s)];
Nr=[(1/4)*(s-1);
(1/4)*(1-s);
(1/4)*(s+1);
(1/4)*(-s-1)];
Ns=[(1/4)*(r-1);
(1/4)*(-1-r);
(1/4)*(r+1);
(1/4)*(1-r)];
%Jacob matrix
j1=Nr'*x';
j2=Nr'*y';
j3=Ns'*x';
j4=Ns'*y';
J=[j1 j2;
j3 j4];
detJ=abs(det(J));
invJ=inv(J);
%Nx a Ny
Nx=invJ(1,1)*Nr+invJ(1,2)*Ns;
Ny=invJ(2,1)*Nr+invJ(2,2)*Ns;
ds=gaus(i,4)*detJ;
Au=Au+(Nx*(Lambda*Nx'+2*Eta*Nx')+Eta*Ny*Ny')*ds;
Av=Av+(Ny*(Lambda*Ny'+2*Eta*Ny')+Eta*Nx*Nx')*ds;
Auv=Auv+(Nx*Lambda*Ny'+Eta*Ny*Nx')*ds;
Avu=Avu+(Ny*Lambda*Nx'+Eta*Nx*Ny')*ds;
Ke=[Au Auv;
Avu Av];
fe=zeros(8,1);
end
%K a f
N=8;
je=1:N;
mg(je)=ILOK(k,je);
igl=mg;
inen=find(igl);
K(igl(inen),igl(inen))=K(igl(inen),igl(inen))+Ke(igl>0,igl>0);
f(igl(inen))=f(igl(inen))+fe(igl>0);
Ke=zeros(8,8);
fe=zeros(8,1);
end
K;
然后我需要解决 q=K/f 我想将此矩阵中的行传输到 f (在这种情况下)。 谢谢你的帮助:)
【问题讨论】:
-
您能提供给我们您的
x向量吗?如果是这样,我可以给出更具体的解决方案。否则,我提供的一般程序应该足够了。