二维情况下
> restart:
> with(linalg):
> C:=array(1..3,1..3,[[2*mu+lambda,lambda,0],[lambda,2*mu+lambda,0],[0,0,mu]]);
> B:=array(1..3,1..8,sparse):
> NN1:=N1(x1,x2):
> NN2:=N2(x1,x2):
> NN3:=N3(x1,x2):
> NN4:=N4(x1,x2):
> for i from 1 to 4 do:
> B[1,2*i-1]:=diff(NN||i,x1);
> B[2,2*i]:=diff(NN||i,x2);
> B[3,2*i-1]:=diff(NN||i,x2);
> B[3,2*i]:=diff(NN||i,x1);
> end do:
> #print(B):
> aa:=simplify(evalm(transpose(B)&*C&*B)):
> comp:=array(1..8,[1,2,1,2,1,2,1,1]):
> base:=array(1..8,[1,1,2,2,3,3,4,4]):
> deta:=array(1..2,1..2,[[1,0],[0,1]]):
> a:=array(1..8,1..8,sparse):
> for i from 1 to 8 do:
> for j from 1 to 8 do:
> a[i,j]:=lambda*diff(NN||(base[i]),x||(comp[i]))*diff(NN||(base[j]),x||(comp[j]))+mu*diff(NN||(base[i]),x||(comp[j]))*diff(NN||(base[j]),x||(comp[i]))+mu*deta[comp[i],comp[j]]*(diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||1)+diff(NN||(base[j]),x||2)*diff(NN||(base[j]),x||2)):
> end do:
> end do:
> e:=array(1..3,[0,0,2]):
> evalm(transpose(B)&*C&*e);
三维情况下
>restart:with(linalg):
> C:=array(1..6,1..6,[[2*mu+lambda,lambda,lambda,0,0,0],[lambda,2*mu+lambda,lambda,0,0,0],[lambda,lambda,2*mu+lambda,0,0,0],[0,0,0,mu,0,0],[0,0,0,0,mu,0],[0,0,0,0,0,mu]]);
> B:=array(1..6,1..24,sparse):
> NN1:=N1(x1,x2,x3):
> NN2:=N2(x1,x2,x3):
> NN3:=N3(x1,x2,x3):
> NN4:=N4(x1,x2,x3):
> NN5:=N5(x1,x2,x3):
> NN6:=N6(x1,x2,x3):
> NN7:=N7(x1,x2,x3):
> NN8:=N8(x1,x2,x3):
> for i from 1 to 8 do:
> B[1,3*i-2]:=diff(NN||i,x1):
> B[2,3*i-1]:=diff(NN||i,x2):
> B[3,3*i]:=diff(NN||i,x3):
> B[4,3*i-1]:=diff(NN||i,x3):
> B[4,3*i]:=diff(NN||i,x2):
> B[5,3*i-2]:=diff(NN||i,x3):
> B[5,3*i]:=diff(NN||i,x1):
> B[6,3*i-2]:=diff(NN||i,x2):
> B[6,3*i-1]:=diff(NN||i,x1):
> end do:
> aa:=simplify(evalm(transpose(B)&*C&*B)):
> comp:=array(1..24,sparse):
> for i from 1 to 8 do:
> comp[3*i-2]:=1:
> comp[3*i-1]:=2:
> comp[3*i]:=3:
> end do:
> base:=array(1..24,[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8]):
> deta:=array(1..3,1..3,[[1,0,0],[0,1,0],[0,0,1]]):
> a:=array(1..24,1..24,sparse):
> for i from 1 to 24 do:
> for j from 1 to 24 do:
> a[i,j]:=lambda*diff(NN||(base[i]),x||(comp[i]))*diff(NN||(base[j]),x||(comp[j]))+mu*diff(NN||(base[i]),x||(comp[j]))*diff(NN||(base[j]),x||(comp[i]))+mu*deta[comp[i],comp[j]]*(diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||1)+diff(NN||(base[j]),x||2)*diff(NN||(base[j]),x||2)+diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||3)*diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||3)):
> end do:
> end do:
> e:=array(1..6,[0,0,0,0,0,1]):
> d:=evalm(transpose(B)&*C&*e):
> print(simplify(d)):