代码放在了最后,前面是解题思路
目录
下面分别列举了1*1;2*2;3*3大小的矩阵;
通过观察,我们发现其规律性极强,那第三列举个例子:
我们会发现沿着主对角线从上往下是递增的,但是元素的个数是先增加后减少的,这样就不好处理,这种思路无法解出题目。
第一行的三个数,下标索引为:[0][0],[0][1],[0][2],其对应的值分别为:1;1/2 ;1/3。
第二行的三个数,下标索引为:[1][0],[1][1],[1][2],其对应的值分别为:1/2 ;1/3;1/4。
第二行的三个数,下标索引为:[2][0],[2][1],[2][2],其对应的值分别为:1/3 ;1/4;1/5。
我们发现,,分子是不变的,然后索引相加然后再加1,作为分母,这样就能够计算出索引对应的值。
- """
- 作者:小翟同学
- 日期:2022年09月28日
- """
- import numpy as np#导入numpy计算模块
- def CreateHT(n):#创建Hilbert矩阵
- a=np.zeros((n,n))#定义一个空的矩阵
- for i in range(n):#遍历的行数
- for j in range(n):#遍历的列数
- a[i][j]=1/(i+j+1)#通过观察简单的来发现规律进而写出公式
- return a
- for i in range (5):#一共创建5个来看看
- print(CreateHT(i))
- print("\n")
-
-
'运行
- import numpy as np # 导入numpy计算模块
-
- def CreateHT(n): # 创建Hilbert矩阵
- a = np.zeros((n, n+1)) # 定义一个空的矩阵
- jie=[len(a)]
- for i in range(n): # 遍历的行数
- x=0#初始化解为1,1,1等,用x将每一行的数据接起来然后在下面赋值给每一行的最后一个元素
- for j in range(n): # 遍历的列数
- a[i][j] = 1 / (i + j + 1) # 通过观察简单的来发现规律进而写出公式
- x+=a[i][j]
- a[i][n]=x
-
- return a
- print(CreateHT(3))
'运行