展开全部
这个问题我考虑了很长时间。
单就编写max_plus函数而言,非常简单,代码如下(根据题中要求,不需要检查矩阵维数是否正确):
function C = maxplus(A, B)
% C的行数与A行数相同,C列数与B列数相同
for i = 1 : size(A, 1)
for j = 1 : size(B, 2)
C(i, j) = max( A(i, :) + B(:, j).' );
end
end
测试实例:
>> A = round(rand(5, 3)*10)
A =
7 1 8
10 7 7
8 4 10
7 1 10
5 6 1
>> B = round(rand(3, 4)*10)
B =
4 6 7 7
5 0 10 4
3 6 8 6
>> C = maxplus(A, B)
C =
11 14 16 14
14 16 17 17
13 16 18 16
13 16 18 16
11 11 16 12
第二问有些难度:找到矩阵E,使得A⊙E=A。
由于百度知道系统的排版缺陷,公式的表达比较困难,所以,具体的分析过程我就不写了。基本的思路就是,设定矩阵A和E的元素用aij、eij表示,则根据运算的规则,可以推导出,每个eij都应该满足一组不等式:
eij <= [akj-aki], k=1..n
并且必须有一个等式成立,所以 eij 就是右侧向量的最小值,即
E(i, j) = min( A(:,j) - A(:,i) );
然后用一个简单的二重for循环即可计算出E:
function B = E_maxplus(A)
B = A;
for i = 1:size(A,1)
for j = 1:size(A,2)
B(i, j) = min( A(:,j) - A(:,i) );
end
end
举例:
>> A = magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B = E_maxplus(A)
B =
0 -14 -13 -3
-10 0 -1 -13
-11 -1 0 -14
-3 -11 -10 0
>> C = maxplus(A, B)
C =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
第三问,是否存在F,使得A⊙F=E?这个我还没想明白。楼主可以尝试提高悬赏刺激一下,也许我能想出答案(不是敲诈,我觉得自己为回答这个问题的付出对得起最高的悬赏)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询