Python 如何检查给定矩阵是否为马尔可夫矩阵
在本文中,我们将学习如何使用嵌套的for循环和sum()函数来检查输入矩阵是否为 马尔可夫矩阵 。 在此之前,让我们通过一个例子来了解什么是马尔可夫矩阵?
如果每行的总和等于1,则该矩阵被称为 马尔可夫矩阵 。
示例
[ [ 0, 1, 0 ],
[ 0, 0.3, 0.7 ],
[ 0, 0, 1 ]]
在上面的例子中,每行的总和为1。因此,上面的矩阵是马尔可夫矩阵的一个例子。
步骤
以下是执行所需任务的算法/步骤。
- 创建一个名为isMarkovMatrix()的函数来检查输入矩阵是否是马尔可夫矩阵,接受输入矩阵和行数作为参数。
-
使用for循环遍历矩阵的每一行。
-
创建一个变量来存储当前行元素的总和,并将其初始值设置为0。
-
使用另一个嵌套的for循环通过使用len()函数(返回对象中的项目数)遍历当前行的所有列。
-
通过将当前行总和与当前元素相加来获取当前行的总和。
-
使用if条件语句检查当前行的总和是否不等于1。
-
如果条件为真,即当前行的总和不等于1,则返回false。
-
否则返回True。
-
创建一个变量来存储输入矩阵。
-
通过将输入矩阵和行数作为参数传递给上述isMarkovMatrix()函数来调用函数,并使用if条件语句检查函数是否返回true。
-
如果条件为真,则打印输入矩阵是马尔可夫矩阵。
-
否则打印输入矩阵不是马尔可夫矩阵。
示例
以下程序中的函数遍历矩阵的每一行,计算其元素的总和。如果任何一行的总和不等于1,则函数返回False,表示矩阵不是马尔可夫矩阵。如果所有行都通过了总和检查,则函数返回True,确认矩阵满足马尔可夫性质。
# creating a function to check whether the input matrix
# is a Markov matrix by accepting input matrix as an argument
def isMarkovMatrix(inputMatrix):
# traversing through the rows of a matrix
for p in range(0, len(inputMatrix)):
# Taking a variable to store the sum of elements of current row
currentrow_sum = 0
# traversing through all the columns of a current row
for q in range(0, len(inputMatrix[p])):
# getting the sum of current row
currentrow_sum = currentrow_sum + inputMatrix[p][q]
# checking whether the sum of current row is not equal to 1
if (currentrow_sum != 1):
# returning false if sum is not equal to 1
return False
# else returning True
return True
# input matrix
inputMatrix = [[0, 1, 0],
[0, 0.3, 0.7],
[0, 0, 1]]
if (isMarkovMatrix(inputMatrix)):
# printing Markov matrix it function returns true
print("The input matrix is a Markov matrix")
else:
# else printing Not a Markov matrix
print("The input matrix is Not a Markov matrix")
输出
执行以上程序将生成以下输出结果。
The input matrix is a Markov matrix
方法2: 使用sum()函数
步骤
以下是执行所需任务的算法/步骤:
- 定义一个名为isMarkovMatrix的函数,该函数以输入矩阵作为参数。
-
使用for循环遍历矩阵的每一行。
-
初始化一个变量currentrow_sum,用于存储当前行元素的和。
-
在嵌套循环中,遍历当前行的每一列。
-
将当前行和列的元素添加到currentrow_sum中。
-
内部循环完成后,检查currentrow_sum是否不等于1。
-
如果总和不等于1,则返回False以指示矩阵不是马尔可夫矩阵。
-
如果所有行都通过总和检查,返回True以指示矩阵是马尔可夫矩阵。
-
使用2D列表创建输入矩阵。
-
将输入矩阵作为参数调用isMarkovMatrix函数。
-
使用if-else语句检查函数的返回值。
-
如果函数返回True,打印”The input matrix is a Markov matrix”。
-
如果函数返回False,打印”The input matrix is not a Markov matrix”。
示例
以下程序使用sum函数检查输入矩阵是否为马尔可夫矩阵。
def isMarkovMatrix(inputMatrix):
for row in inputMatrix:
rowSum = sum(row)
if rowSum != 1:
return False
return True
# Input matrix
inputMatrix = [[0, 1, 0],
[0, 0.3, 0.7],
[0, 0, 1]]
if isMarkovMatrix(inputMatrix):
print("The input matrix is a Markov matrix")
else:
print("The input matrix is not a Markov matrix")
输出
The input matrix is a Markov matrix
结论
总之,上述所提供的Python程序提供了两种不同的方法来检查输入矩阵是否为马尔可夫矩阵。第一种方法使用嵌套的for循环来遍历矩阵并计算每一行的和,而第二种方法利用sum()函数来计算行的和。两种方法得出的结果相同,并且可以用于确定矩阵是否满足马尔可夫性质。这些程序提供了一种验证马尔可夫矩阵的实用方法,并可以应用于涉及概率和随机过程的各个领域。