设有三维矩阵 T10 (: ,: ,n) ,T21 (: ,: ,n) ,
T20 (: ,: ,n) = T10 (: ,: ,n) * T21 (: ,: ,n) ;
Lingo中本身都是集合的概念,但也可以通过矩阵工厂对集合的构造,来以矩阵的形式去理解;
Lingo实现矩阵相乘相对于MATLAB来说相对复杂一点,但根据矩阵定义实现对应元素相乘,并且嵌套三个循环即可实现。
则相应的实现三维矩阵相乘的Lingo代码为:
model:
sets:
matrix /1..4/ ;
ceng /1..5/ ;
coop(matrix,matrix,ceng):T10,T21,T20;
endsets
@for(ceng(n):@for(matrix(i):@for(matrix(j):T20(i,j,n)=@sum(matrix(k):T10(i,k,n)*T21(k,j,n) ) ) ) );
end