如何使用Python生成Hilbert矩阵

 

1.什么是Hilbert矩阵矩阵

下面分别列举了1*1;2*2;3*3大小的矩阵;

通过观察,我们发现其规律性极强,那第三列举个例子:

 

2.找规律

1.第一种思路:先从值出发(找规律)

我们会发现沿着主对角线从上往下是递增的,但是元素的个数是先增加后减少的,这样就不好处理,这种思路无法解出题目。

2.第二种思路:先从下标索引出发(找规律)

  • 第一行的三个数,下标索引为:[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,作为分母,这样就能够计算出索引对应的值。

 

3.代码展示

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")

 

4.输出展示

 

5.初始化解为1,1.

等构建解的增广矩阵(代码展示)

(1)以生3*4的增广矩阵为例

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))

(2)输出结果

关于如何使用Python生成Hilbert矩阵的文章就介绍至此,更多相关Python生成Hilbert内容请搜索编程宝库以前的文章,希望以后支持编程宝库

 一、缺失数据剔除1. python 方式获取所有的缺失值,返回一个 true 和 false 的表df.isnull()统计缺失值,按照每一列统计df.isnull().sum() ...