1. 用python实现三阶矩阵的求逆
你好,下面是一个对应的三阶矩阵求逆的代码
importwarnings
warnings.filterwarnings("ignore")
matrix1=[
[1,2,0,0],
[3,4,0,0],
[0,0,4,1],
[0,0,3,2],
]
matrix2=[
[1,0,-1,2,1],
[3,2,-3,5,-3],
[2,2,1,4,-2],
[0,4,3,3,1],
[1,0,8,-11,4],
]
matrix3=[
[1,0,-1,2,1,0,2],
[1,2,-1,3,1,-1,4],
[2,2,1,6,2,1,6],
[-1,4,1,4,0,0,0],
[4,0,-1,21,9,9,9],
[2,4,4,12,5,6,11],
[7,-1,-4,22,7,8,18],
]
defstep0(m):
n=len(m)
l=[]
foriinrange(0,n):
l.append([])
forjinrange(0,n):
ifi==j:
l[i].append(1)
else:
l[i].append(0)
returnl
defstep1(m):
n=len(m)
"""交换操作记录数组swap"""
swap=[]
l=[]
foriinrange(0,n):
swap.append(i)
l.append([])
forjinrange(0,n):
l[i].append(0)
"""对每一列进行操作"""
foriinrange(0,n):
max_row=m[i][i]
row=i
forjinrange(i,n):
ifm[j][i]>=max_row:
max_row=m[j][i]
#globalrow
row=j
swap[i]=row
"""交换"""
ifrow!=i:
forjinrange(0,n):
m[i][j],m[row][j]=m[row][j],m[i][j]
"""消元"""
forjinrange(i+1,n):
ifm[j][i]!=0:
l[j][i]=m[j][i]/m[i][i]
forkinrange(0,n):
m[j][k]=m[j][k]-(l[j][i]*m[i][k])
return(swap,m,l)
defstep2(m):
n=len(m)
long=len(m)-1
l=[]
foriinrange(0,n):
l.append([])
forjinrange(0,n):
l[i].append(0)
foriinrange(0,n-1):
forjinrange(0,long-i):
ifm[long-i-j-1][long-i]!=0andm[long-i][long-i]!=0:
l[long-i-j-1][long-i]=m[long-i-j-1][long-i]/m[long-i][long-i]
forkinrange(0,n):
m[long-i-j-1][k]=m[long-i-j-1][k]-l[long-i-j-1][long-i]*m[long-i][k]
return(m,l)
defstep3(m):
n=len(m)
l=[]
foriinrange(0,n):
l.append(m[i][i])
returnl
defgauss(matrix):
n=len(matrix)
new=step0(matrix)
(swap,matrix1,l1)=step1(matrix)
(matrix2,l2)=step2(matrix1)
l3=step3(matrix2)
foriinrange(0,n):
ifswap[i]!=i:
new[i],new[swap[i]]=new[swap[i]],new[i]
forjinrange(i+1,n):
forkinrange(0,n):
ifl1[j][i]!=0:
new[j][k]=new[j][k]-l1[j][i]*new[i][k]
foriinrange(0,n-1):
forjinrange(0,n-i-1):
ifl2[n-1-i-j-1][n-1-i]!=0:
forkinrange(0,n):
new[n-1-i-j-1][k]=new[n-1-i-j-1][k]-l2[n-1-i-j-1][n-i-1]*new[n-1-i][k]
foriinrange(0,n):
forjinrange(0,n):
new[i][j]=new[i][j]/l3[i]
returnnew
x1=gauss(matrix1)
x2=gauss(matrix2)
x3=gauss(matrix3)
print(x1)
print(x2)
print(x3)
2. 逆矩阵怎么求
013. 求逆矩阵怎么用python源代码实现
加上头文件
fromnumpyimport*
矩阵有几个特有的属性:
(a).T--返回自身的转置
(b).H--返回自身的共轭转置
(c).I--返回自身的逆矩阵
(d).A--返回自身数据的2维数组的一个视图
4. 求解答,带小数点的矩阵的逆矩阵怎么算
只帮你算一个,其它自己算。先写出增广矩阵,再行行变换: 1 2 2 1 0 0 (1) 2 1 -2 0 1 0 2 -2 1 0 0 1 1 2 2 1 0 0 上一个矩阵 --> 0 -3 -6 -2 1 0 第一行×(-2)+第二行 0 -6 -3 -2 0 1 第一行×(-2)+第三行, 1 2 2 1 0 0 上一个矩阵 --> 0 1 2 2/3 -1/3 0 第二行×(-1/3) 0 2 1 2/3 0 -1/3 第三行×(-1/3) 1 2 2 1 0 0 --> 0 1 2 2/3 -1/3 0 上一个矩阵 0 0 -3 -2/3 2/3 -1/3 第二行×(-2)+第三行 1 2 2 1 0 0 --> 0 1 2 -2/3 1/3 0 上一个矩阵 0 0 1 2/9 -2/9 1/9 第三行×(-1/3) 1 2 2 1 0 0 上一个矩阵 --> 0 1 0 -10/9 7/9 -2/9 第三行×(-2) +第二行 0 0 1 2/9 -2/9 1/9 1 0 0 25/9 -10/9 2/9 第三行×(-2) +第二行×(-2) +第一行 --> 0 1 0 -10/9 7/9 -2/9 0 0 1 2/9 -2/9 1/9因此,矩阵(1)的逆矩阵是(增广部分变换后所得) 25/9 -10/9 2/9 -10/9 7/9 -2/9 2/9 -2/9 1/9
5. python 矩阵的问题
这个只是为了声明数值的具体类型。
注意看,直接写1,就是int数值型,写1.那就是float型
6. python怎么实现矩阵的除法
1、首先打开pycharm软件,新建一个python文件并导入numpy库。
7. 求逆矩阵的方法
求矩阵的逆的三种方法:1.待定系数法、2.伴随矩阵求逆矩阵、3.初等变换求逆矩阵。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。
矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考《矩阵理论》。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。
8. 矩阵求逆,请问这段代码有什么问题为什么对于数据比较奇怪的6X6矩阵,算不出正确的逆矩阵
我没细看你的代码
首先,第一组循环(先确保增广矩阵前半部分对角线上所有元素都不为0)应该放到初等变换的过程中,因为变换过程中对角元会变化,不能事先预判
然后,行交换时不应该等到出现零对角元了才交换,而应该总是把模最大的元素换到对角元(这个称为选主元),因为你这里的数都是浮点数,需要考虑数值稳定性
别的没看,你先把这两点改一下再说
再给你个参考程序( MATLAB),是按同一种思路写的
http://..com/question/874769421823864732