lingo中矩阵的转置怎么表示
3个回答
展开全部
使用循环语句@for(AZ(i,j):t(i,j)=k(j,i));互换i,j位置,即置换。
例子:
MODEL:
sets:
row/1..5/;
col/1..5/;
AZ(row,col):k,t;
endsets
data:
k=1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
1 1 1 1 1;
enddata
@for(AZ(i,j):t(i,j)=k(j,i));
END
运行结果:
Feasible solution found.
Total solver iterations: 0
Variable Value
K( 1, 1) 1.000000
K( 1, 2) 2.000000
K( 1, 3) 3.000000
K( 1, 4) 4.000000
K( 1, 5) 5.000000
K( 2, 1) 2.000000
K( 2, 2) 3.000000
K( 2, 3) 4.000000
K( 2, 4) 5.000000
K( 2, 5) 6.000000
K( 3, 1) 3.000000
K( 3, 2) 4.000000
K( 3, 3) 5.000000
K( 3, 4) 6.000000
K( 3, 5) 7.000000
K( 4, 1) 4.000000
K( 4, 2) 5.000000
K( 4, 3) 6.000000
K( 4, 4) 7.000000
K( 4, 5) 8.000000
K( 5, 1) 1.000000
K( 5, 2) 1.000000
K( 5, 3) 1.000000
K( 5, 4) 1.000000
K( 5, 5) 1.000000
T( 1, 1) 1.000000
T( 1, 2) 2.000000
T( 1, 3) 3.000000
T( 1, 4) 4.000000
T( 1, 5) 1.000000
T( 2, 1) 2.000000
T( 2, 2) 3.000000
T( 2, 3) 4.000000
T( 2, 4) 5.000000
T( 2, 5) 1.000000
T( 3, 1) 3.000000
T( 3, 2) 4.000000
T( 3, 3) 5.000000
T( 3, 4) 6.000000
T( 3, 5) 1.000000
T( 4, 1) 4.000000
T( 4, 2) 5.000000
T( 4, 3) 6.000000
T( 4, 4) 7.000000
T( 4, 5) 1.000000
T( 5, 1) 5.000000
T( 5, 2) 6.000000
T( 5, 3) 7.000000
T( 5, 4) 8.000000
T( 5, 5) 1.000000
Row Slack or Surplus
1 0.000000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
符合
例子:
MODEL:
sets:
row/1..5/;
col/1..5/;
AZ(row,col):k,t;
endsets
data:
k=1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
1 1 1 1 1;
enddata
@for(AZ(i,j):t(i,j)=k(j,i));
END
运行结果:
Feasible solution found.
Total solver iterations: 0
Variable Value
K( 1, 1) 1.000000
K( 1, 2) 2.000000
K( 1, 3) 3.000000
K( 1, 4) 4.000000
K( 1, 5) 5.000000
K( 2, 1) 2.000000
K( 2, 2) 3.000000
K( 2, 3) 4.000000
K( 2, 4) 5.000000
K( 2, 5) 6.000000
K( 3, 1) 3.000000
K( 3, 2) 4.000000
K( 3, 3) 5.000000
K( 3, 4) 6.000000
K( 3, 5) 7.000000
K( 4, 1) 4.000000
K( 4, 2) 5.000000
K( 4, 3) 6.000000
K( 4, 4) 7.000000
K( 4, 5) 8.000000
K( 5, 1) 1.000000
K( 5, 2) 1.000000
K( 5, 3) 1.000000
K( 5, 4) 1.000000
K( 5, 5) 1.000000
T( 1, 1) 1.000000
T( 1, 2) 2.000000
T( 1, 3) 3.000000
T( 1, 4) 4.000000
T( 1, 5) 1.000000
T( 2, 1) 2.000000
T( 2, 2) 3.000000
T( 2, 3) 4.000000
T( 2, 4) 5.000000
T( 2, 5) 1.000000
T( 3, 1) 3.000000
T( 3, 2) 4.000000
T( 3, 3) 5.000000
T( 3, 4) 6.000000
T( 3, 5) 1.000000
T( 4, 1) 4.000000
T( 4, 2) 5.000000
T( 4, 3) 6.000000
T( 4, 4) 7.000000
T( 4, 5) 1.000000
T( 5, 1) 5.000000
T( 5, 2) 6.000000
T( 5, 3) 7.000000
T( 5, 4) 8.000000
T( 5, 5) 1.000000
Row Slack or Surplus
1 0.000000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
符合
展开全部
根本不用什么转置 写的过程中你交换一下用的集就行了 做转置根本是浪费时间 因为lingo不是矩阵操作的软件 而是通过对集合中的每个变量进行操作的 这个操作你可以直接取分量了 根本不必再转置以后取分量 比如你运算要取a(j,i)还是a(i,j)就直接取了 不必做什么转置操作 你在取分量的时候就自然的进行转置了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先遍历列再遍历行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询