python 對矩陣的初等變換

2021-09-24 23:08:49 字數 3436 閱讀 7821

def randint(i,j):

if i==0:

return random.randint(0,10000)%(j+1)

else:

return random.randint(0,10000)%(j-i+1)+i

def zh(a,n):

for i in range(0,n):

a[i] = i+1

for i in range(1,n):

a1 = i

a2 = randint(0,i)

tmp = a[a1]

a[a1] = a[a2]

a[a2] = tmp

#print(a)

return a

def matrix_trans(x): #矩陣轉置

xt = np.transpose(x)

#print(xt)

return xt

def zhihuan_r(x,m,n): #矩陣行置換

# print(x)

# print(m,n)

x1 = [ [0] * n for i in range(m) ]

zh1 = [0]*(n+1)

zh1 = zh(zh1,n)

zh1[n] = zh1[0]

for i in range(0,n):

t = zh1[i]

t1 = zh1[i+1]

for j in range(0,m):

x1[j][t-1] = x[j][t1-1]

return x1

def zhihuan_l(x,m,n): #矩陣列置換

x1 = [ [0] * n for i in range(m) ]

zh1 = [0]*(m+1)

zh1 = zh(zh1,m)

zh1[m] = zh1[0]

for i in range(0,m):

t = zh1[i]

t1 = zh1[i+1]

for j in range(0,n):

x1[t-1][j] = x[t1-1][j]

return x1

def matrix_multiply(a,b,m,n,s): #兩個矩陣相乘

c=[[0 for i in range(s)] for i in range(m)]

for i in range(0,m):

for j in range(0,s):

c[i][j]=0

for z in range(0,n):

c[i][j]+=a[i][z]*b[z][j]

#print(c)

return c

def matrix_multiplication_r(a,m,n): #矩陣的每一行分別乘不同的k

for i in range(0,n):

k=random.randint(2,10)

#print(k)

for j in range(0,m):

a[j][i]=a[j][i]*k

#print(a)

return a

def matrix_multiplication_l(a,m,n): #矩陣的每一列分別乘不同的k

for i in range(0,m):

k=random.randint(2,10)

for j in range(0,n):

a[i][j]=a[i][j]*k

#print(a)

return a

def matrix_addition_r(a,m,n): #矩陣的某行*k加到零一行

i=random.randint(0,n-1)

j=random.randint(0,n-1)

k = random.randint(2, 10)

#print(i,j,k)

for c in range(0,m):

a[c][j]=a[c][j]+a[c][i]*k

#print(a)

return a

def matrix_addition_l(a,m,n): #矩陣的某列*k加到另一列

i=random.randint(0,m-1)

j=random.randint(0,m-1)

k = random.randint(2, 10)

for c in range(0,n):

a[j][c]=a[j][c]+a[i][c]*k

#print(a)

return a

def vector_mul_matrix(r,a,m,n): #向量乘矩陣

c = [[0 for i in range(n)]]

for i in range(0, n):

c[0][i] = 0

for z in range(0, m):

c[0][i] += r[0][z]*a[z][i]

#print(c)

return c

def matrix_mul_vector(r,y,m,n): #矩陣乘向量

c = [[0 for i in range(1)] for i in range(m)]

for i in range(0, m):

c[i][0] = 0

for z in range(0, n):

c[i][0] += r[i][z] * y[z][0]

#print(c)

return c

def matrix_inverse(a): #矩陣求逆

b = np.linalg.inv(a)

#print(b)

return b

需要匯入的庫有

import numpy

from numpy import dot

import numpy as np

import datetime

import random

import time

矩陣變換是線性代數中矩陣的一種運算形式。

**性代數中,矩陣的初等變換是指以下三種變換型別 :

(1) 交換矩陣的兩行(對調i,j,兩行記為ri,rj);

(2) 以乙個非零數k乘矩陣的某一行所有元素(第i行乘以k記為ri×k);

(3) 把矩陣的某一行所有元素乘以乙個數k後加到另一行對應的元素(第j行乘以k加到第i行記為ri+krj)。

類似地,把以上的「行」改為「列」便得到矩陣初等變換的定義,把對應的記號「r」換為「c」。

矩陣的初等行變換與初等列變換合稱為矩陣的初等變換。

最近沒時間寫詳細的,有需要詳細解釋的可私聊我

矩陣的初等變換的應用

線性代數 這篇文章中介紹了矩陣的初等變換的用法。沒有強調的是,左乘是行變換,右乘是列變換。三種形式六種情況 ei k 單位矩陣的第i行或者第i列乘以k倍得到的矩陣。ei j 單位矩陣第i行和第j行交換或者第i列和第j列交換得到的矩陣。ei j k 單位矩陣的第j行乘以k倍加到第i行,即被操作的行在前...

線性代數 矩陣的初等變換

矩陣的初等變換分為初等行變換和初等列變換 初等變換矩陣與矩陣之間用箭頭連線,不能用等號 初等行變換 定理1 任何矩陣都可通過初等變換化為標準形 行變換和列變換都可以 等價 a經初等變換得到b,叫做a等價於b,記作 等價的性質 初等方陣 對單位陣e做乙個初等變換得到的矩陣就是初等方陣。初等方陣均可逆 ...

線性代數 矩陣的初等變換

本人部落格 矩陣的初等變換分為初等行變換和初等列變換 初等變換矩陣與矩陣之間用箭頭連線,不能用等號 初等行變換 定理1 任何矩陣都可通過初等變換化為標準形 行變換和列變換都可以 等價 a經初等變換得到b,叫做a等價於b,記作 等價的性質 初等方陣 對單位陣e做乙個初等變換得到的矩陣就是初等方陣。初等...