python可视化练习7

实验七 文本数据可视化—Numpy中求解线性方程组

1 矩阵的定义

2 矩阵的线性代数运算

2.1 矩阵的加法与减法
2.2 矩阵的数乘
2.3 矩阵的点乘
2.4 矩阵的转置
2.5 矩阵的求逆
2.6 矩阵的线性方程解
实例1:

1.定义一个3*3的矩阵,数据类型为int,元素从1-10

#1.定义一个3*3的矩阵,数据类型为int,元素从1-10
import numpy as np
A = np.mat(np.arange(1,10).reshape(3,3), int)
print(A)

运行结果:

2.定义一个3*3的矩阵,数据类型为int,元素全为1

#2.定义一个3*3的矩阵,数据类型为int,元素全为1
import numpy as np
A = np.mat(np.ones((3, 3)))
print(A)

运行结果:
在这里插入图片描述
3.定义一个3*3的单位矩阵

#3.定义一个3*3的单位矩阵
import numpy as np
A = np.mat(np.eye(3, 3), int)
print(A)

运行结果:
在这里插入图片描述
4.定义一个3*3的对角矩阵,主对角线的值为222,其他元素全为0。

#4.定义一个3*3的对角矩阵,主对角线的值为222,其他元素全为0。
import numpy as np
A = np.mat(np.diag([2, 2, 2]), int)
print(A)

运行结果:
在这里插入图片描述
实例2.1:创建一个3*5的矩阵,元素从0-15,取1-2行的2-4列作为矩阵A,取2-3行的3-5列作为矩阵B,分别进行矩阵的加法和减法运算。

#2.1实例:创建一个3*5的矩阵,元素从0-15,取1-2行的2-4列作为矩阵A,取2-3行的3-5列作为矩阵B,分别进行矩阵的加法和减法运算。
import numpy as np
X = np.mat(np.arange(0,15).reshape(3,5), int)
print(X)
print("\n")
A=X[0:2,1:4] 
B=X[1:3,2:5] 
print(A+B)
print(A-B)

在这里插入图片描述

实例2.2:创建形状为3*3的矩阵,元素全为0,使用数据1将全0矩阵包围作为矩阵A1,定义浮点数a1=0.5进行矩阵的数乘运算并输出结果。

import numpy as np
a =np.zeros((3, 3))
x=[1,1,1]
y=[1,1,1,1]
print(a)
a0=np.row_stack((x,a)) 
#print(a0)
a2=np.column_stack((y,a0)) 
#print(a2)
a3=np.row_stack((a2,[1,1,1,1]))
#print(a3)
A1=a4=np.column_stack((a3,[1,1,1,1,1]))
print(a4)
a1 = 0.5
print(a1*A1)

在这里插入图片描述
实例2.3:创建一个3-11的一维数组,并将[5,9)之间的数全部改为负数作为数组a输出,将数组a的元素作为24的矩阵A2,将数组a重新进行升序排列,排列后元素定义42的矩阵B2,将矩阵A2和B2使用两种方式进行矩阵的乘法运算。(numpy.dot())

#2.3实例:创建一个3-11的一维数组,并将[5,9)之间的数全部改为负数作为数组a输出,将数组a的元素作为2*4的矩阵A2,
#将数组a重新进行升序排列,排列后元素定义4*2的矩阵B2,将矩阵A2和B2使用两种方式进行矩阵的乘法运算。(numpy.dot())
import numpy as np
a=np.arange(3,11)
a[(5 <= a) &(a< 9)] =-1
#print(a)
A2= np.mat(a.reshape(2,4))
print(A2)
b=sorted(a)
B2=np.array(b).reshape(4,2)
print(B2)
print(A2*B2)  # 求矩阵相乘形式一
print(A2.dot(B2))  # 求矩阵相乘形式二
print(np.dot(A2, B2))  # 求矩阵相乘形式三

在这里插入图片描述
实例2.4:创建一个3*3的二维数组[[7,4,3],[3,1,2],[4,2,6]],将第一列按升序排序后作为矩阵A3,对矩阵A3进行转置运算并输出。

#2.4实例:创建一个3*3的二维数组[[7,4,3],[3,1,2],[4,2,6]],将第一列按升序排序后作为矩阵A3,对矩阵A3进行转置运算并输出。
import numpy as np
data=[[7,4,3],[3,1,2],[4,2,6]]
A=np.array(data)
# 只对每一行的第一列进行排序, 其余列保持不变。返回的还是原大小的列表
print(A)
A1=np.sort(A[:,0:1],axis=0)
A2=A[0:3,1:3]
#print(A1)
print(A2)
A3=np.column_stack((A1,A2)) 
#A3=A[:,0:1].sort(axis=0) 
print(A3.T)

在这里插入图片描述

实例2.5:创建一个3*3的二维数组,元素为1-10,将数组的前两行进行顺序交换作为矩阵A4,对矩阵A4进行求逆运算。np.linalg.inv(A)

#2.5实例:创建一个3*3的二维数组,元素为1-10,将数组的前两行进行顺序交换作为矩阵A4,对矩阵A4进行求逆运算。np.linalg.inv(A)
import numpy as np
A4 = np.mat(np.arange(1,10).reshape(3,3), int)
A4[[0,1],:]=A4[[1,0],:]
print(np.linalg.inv(A4))

在这里插入图片描述
实例2.6:求解如下线性方程组
x+y+z=3
3x+y+4z=8
8x+9y+5z=22
求解

#实例:求解如下线性方程组
#x+y+z=3
#3x+y+4z=8
#8x+9y+5z=22
#求解
import numpy as np
A = np.array([[1, 1, 1], [3,1,4], [8,9,5]])  # A为系数矩阵
b = np.array([3,8,22])  # b为常数列
B=np.column_stack((A,b))#增广矩阵
rA= np.linalg.matrix_rank(A)# 系数矩阵的秩
rB= np.linalg.matrix_rank(B)# 增广矩阵的秩
if (rA==rB==3):
    print("方程有唯一解")
    inv_A = np.linalg.inv(A)  # A的逆矩阵
    x = inv_A.dot(b)  # A的逆矩阵与b做点积运算( A^-1)*b
    x = np.linalg.solve(A, b) # 
    print(x)
elif(rA==rB<3):
    print("方程有无穷解")
    inv_A = np.linalg.inv(A)  # A的逆矩阵
    x = inv_A.dot(b)  # A的逆矩阵与b做点积运算( A^-1)*b
    x = np.linalg.solve(A, b) #
    print("其中一个特解是")
    print(x)
else:
    print("方程无解")

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值