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做乙個初等變換得到的矩陣就是初等方陣。初等...