关闭→
当前位置:尚之范>生活>心理>矩阵每行加起来都一样怎么算

矩阵每行加起来都一样怎么算

尚之范 人气:6.18K
矩阵每行加起来都一样怎么算

奇数阶矩阵,横竖斜加起来都相等算法(罗伯法幻⽅)

奇数阶矩阵,横竖斜加起来都相等:

给定奇数N,形成N阶矩阵,使得横竖斜加起来都相等。⽐如N=3:

每⼀⾏,每⼀列,交叉斜加起来都等于15

算法思路分析过程:

⼀、暴⼒解法:循环+递归实现全排列组合。此法思路简单,⽹上不少代码实现的,但是缺点也是很明显的,暴⼒愚蠢耗资源。

⼆、排列加上数学分析:

1、∵横竖斜之和全相等,∴每⾏每列之和=全数字之和/n。如果n=3,和=(1+2+3+……+9)/3=45/3=15。

2、⼜∵横竖斜之和全相等,推测出中⼼位置(x=n/2,y=n/2)的数字,为1-N^2的中⼼数字。⽐如N=3,坐标(1,1)位置的数字最可能是5。

三、罗伯法幻⽅(正解)

幻⽅是⼀种⼴为流传的数学游戏,据说早在⼤禹治⽔时就发现过。幻⽅的特点是:由⾃然数构成n×n正⽅形阵列,称为n阶幻⽅,每⼀⾏、每⼀列、两对⾓线上的数之和相等。法国⼈罗伯总结出了构造奇数阶连续⾃然数幻⽅的简单易⾏的⽅法“罗伯法”。下表就是⼀个⽤罗伯法排好的5阶幻⽅。

罗伯法的具体⽅法如下:

把1(或最⼩的数)放在第⼀⾏正中

按以下规律排列剩下的n2-1个数: 1)每⼀个数放在前⼀个数的右上⼀格 2)如果这个数所要放的格已经超出了顶⾏那么就把它放在底⾏,仍然要放在右⼀列3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上⼀⾏ 4)如果这个数所要放的格已经超出了顶⾏且超出了最右列那么就把它放在前⼀个数的下⼀⾏同⼀列的格内 5)如果这个数所要放的格已经有数填⼊,处理⽅法同4)。

只要是有规律的东西,计算机很容易就可以做到。

下⾯我们把罗伯法翻译成计算机算法思路: 定义⼀个n×n数组 把1放在第0⾏第n/2列设当前格为(i,j) 1) i减1,j加1 2) 如果i<0那么i=n-1 3) 如果j>n-1那么j=0

4) 如果2)和3)同时出现那么就把j减回1,i加上2

5) 如果a(i,j)不为空那么按照4)处理 6) 把k的值赋给当前格a(i,j)继续循环

输出幻⽅阵。

罗泊法(牢记⼝诀)是⾸上正中央,依次斜填切莫忘上出框界往下写,右出框时左边放重复便在下格填,出⾓重复⼀个样。

python代码实现如下:

n = 5

# 建⽴n阶矩阵

matrix = [[0] * n]

for i in range(n - 1):

matrix += [[0] * n]

x, y = 0, n // 2

for i in range(1, n * n + 1):

matrix[x][y] = i

if i % n == 0:

x += 1

elif x == 0:

x = n - 1

y += 1

elif y == n - 1:

x -= 1

y = 0

else:

x -= 1

y += 1

or i in range(n):

for j in range(n):

print('%02d' % matrix[i][j], end=' ')

print('')

四、关于三阶幻⽅⽹上收集到⼀些有意思的说法:

相传,⼤禹治⽔时,洛⽔中出现了⼀个“神龟”背上有美妙的图案,史称“洛书”,⽤现在的数字翻译出来,就是三阶幻⽅。

南宋数学家杨辉概括其构造⽅法为:“九⼦斜排。上下对易,左右相更。四维挺出。”

《射雕英雄传》中黄蓉讲得很清楚:“⼆四为肩,六⼋为⾜,左七右三,戴九履⼀,五居中央”

2 9 4

7 5 3

6 1 8

横竖斜加起来都是15.

矩阵每行加起来都一样怎么算

矩阵相加的计算方法是矩阵中对应的元素相加,相加的前提是两个矩阵要是通行矩阵。

即具有相同的行和列数,矩阵加法,数学术语,定义为在数学里,矩阵加法一般是指两个矩阵把其相对应元素加在一起的运算。

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

TAG标签:#矩阵 #每行 #