易语言采用循环算法实现矩阵相乘

计算两个矩阵A、B的乘积矩阵C。矩阵A={1,2,3,4,5,6},矩阵B={7,8,9,10,11,12},易语言采用循环算法实现矩阵相乘
两个矩阵的乘积仍然是矩阵。若A矩阵有m行p列,B矩阵有p行n列,则它们的乘积C矩阵有m行n列。C=A*B的算法:
Cij= (i=0,1,……,m-1;j=0,1,……,n-1)
设A、B、C矩阵用3个2维数组表示:a数组有3行2列,b数组有2行3列,则c数组有3行3列。如:
c[0][0]= a[0][0]*b[0][0]+a[0][1]*b[1][0];
c[1][0]= a[1][0]*b[0][1]+a[1][1]*b[1][1];
从以上算法可以看出,需要3重循环(i、j、k)才能计算C矩阵的各元素。
通过上面规律可以推导出结果。

易语言采用循环算法实现矩阵相乘 配图1

计算源码

.版本 2
 
.子程序 _计算图形按钮_被单击
.局部变量 循环变量1, 整数型
.局部变量 循环变量2, 整数型
.局部变量 循环变量3, 整数型
.局部变量 变量1, 整数型, , , 存放相乘之后的数据
.局部变量 矩阵A, 整数型, , "3,2", 存放矩阵A数据的数组
.局部变量 矩阵B, 整数型, , "2,3", 存放矩阵B数据的数组
.局部变量 矩阵C, 整数型, , "3,3", 存放矩阵C数据的数组
.局部变量 变量2, 整数型, , , 用来设置矩阵内的数据
 
编辑框1.内容 = “”
编辑框2.内容 = “”
编辑框3.内容 = “”
变量2 = 0
' 设置第一个矩阵A的数据
.变量循环首 (1, 3, 1, 循环变量1)
    .变量循环首 (1, 2, 1, 循环变量2)
        变量2 = 变量2 + 1
        矩阵A [循环变量1] [循环变量2] = 变量2
        ' 将矩阵A的数据添加到编辑框
        编辑框1.加入文本 (“ ”)
        编辑框1.加入文本 (到文本 (矩阵A [循环变量1] [循环变量2]), “ ”)
    .变量循环尾 ()
    编辑框1.加入文本 (#换行符)
.变量循环尾 ()
' 设置第一个矩阵A的数据
.变量循环首 (1, 2, 1, 循环变量1)
    .变量循环首 (1, 3, 1, 循环变量2)
        变量2 = 变量2 + 1
        矩阵B [循环变量1] [循环变量2] = 变量2
        ' 将矩阵A的数据添加到编辑框
        编辑框2.加入文本 (“ ”)
        编辑框2.加入文本 (到文本 (矩阵B [循环变量1] [循环变量2]), “ ”)
    .变量循环尾 ()
    编辑框2.加入文本 (#换行符)
.变量循环尾 ()
' 得出矩阵A×矩阵B的结果矩阵C
.变量循环首 (1, 3, 1, 循环变量1)
    .变量循环首 (1, 3, 1, 循环变量2)
        变量1 = 0
        ' 得出矩阵A与对就的矩阵B的数据相乘,得出对应矩阵C的数据
        .变量循环首 (1, 2, 1, 循环变量3)
            变量1 = 变量1 + 矩阵A [循环变量1] [循环变量3] × 矩阵B [循环变量3] [循环变量2]
            ' 相乘得出矩阵C的数据
            矩阵C [循环变量1] [循环变量2] = 变量1
        .变量循环尾 ()
    .变量循环尾 ()
.变量循环尾 ()
' 显示最后的结果矩阵C
.变量循环首 (1, 3, 1, 循环变量1)
    .变量循环首 (1, 3, 1, 循环变量2)
        编辑框3.加入文本 (到文本 (矩阵C [循环变量1] [循环变量2]), “ ”)
    .变量循环尾 ()
    编辑框3.加入文本 (#换行符)
.变量循环尾 ()

分享到:

用微信扫一扫,分享给朋友


发布日期:

所属分类: 编程 标签: