作业帮 > 综合 > 作业

Matlab矩阵运算问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 14:54:12
Matlab矩阵运算问题

题目是英文的 跪求大神给code!可以提高悬赏

谢谢!


这个问题我考虑了很长时间. 单就编写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?这个我还没想明白.楼主可以尝试提高悬赏刺激一下,也许我能想出答案(不是敲诈,我觉得自己为回答这个问题的付出对得起最高的悬赏).