基于python的线性代数运算

这篇具有很好参考价值的文章主要介绍了基于python的线性代数运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:这是学校多元统计分析课程布置的实验(包括基于python的线性代数运算、线性回归分析实验、聚类分析、因子分析和主成分分析),这里分享出来,注解标注的比较全,供大家参考。

使用Python语言开发完成以下运算。

1、已知有两个矩阵A和B,如下所示:

基于python的线性代数运算

①求A+B、A-B;

import numpy as np
import pandas as pd
from fractions import Fraction

# 这里定义一个单位矩阵,作为结果判断依据
temp = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
# 定义矩阵A
A = np.array([[-1, 3, 2],
              [5, 7, -2],
              [-3, 0, 1]])
# 定义矩阵B
B = np.array([[8, 2, -1],
              [6, 4, 0],
              [-2, 3, 5]])
# A+B
print(A+B)
# A-B
print(A-B)

②求A和B的叉乘、A和B的点乘;

# 两个矩阵的叉乘
AXB = np.cross(A, B)
print(AXB)
# 两个矩阵的点乘
AB = np.dot(A, B)
print(AB)

③令C=A*B,求C的逆矩阵、行列式;

# np.linalg.inv求矩阵的逆矩阵
C = np.linalg.inv(AB)
# np.linalg.det求矩阵的行列式
CH = np.linalg.det(AB)

④验证C和C的逆矩阵之积是否为单位矩阵;

print(np.array(C.dot(AB), dtype=int))

2、读取文件“test1-2.csv”,获取25*4的矩阵D:

①求矩阵D的转置矩阵G;

# 设置矩阵元素输出用分数表示
np.set_printoptions(formatter={'all': lambda x: str(Fraction(x).limit_denominator())})
# 这里如果不设置header=None默认就将数据第一行当作数据头
df = pd.read_csv("test1-2.csv", header=None)
# 转置矩阵
G = np.mat(df.T)

②求矩阵G的相关系数矩阵(4*4)E;

# 平均值
mean = df.mean()
# 标准差
std = df.std()
# 协方差
F = np.mat(df.cov())
# 相关系数
# E = np.mat(F/np.mat(std))
E = np.corrcoef(G)

③求矩阵G的协方差矩阵(4*4)F;

# 协方差
F = np.mat(df.cov())

④求解矩阵E和矩阵F的特征值和特征向量;

# 矩阵E的特征值a,特征向量b
a, b = np.linalg.eig(E)
# 矩阵F同理

⑤验证矩阵E的特征向量间的正交性;

'''
验证矩阵E的特征向量间的正交性
https://www.cnpython.com/qa/139953
'''
print(b.dot(b.T))

⑥验证矩阵E的特征值之和是否等于E的迹;

# 矩阵E的迹
traceE = np.trace(E)
# 矩阵E的特征值a
a, b = np.linalg.eig(E)
# 矩阵E的特征值之和sumE
sumE = round(sum(a), 8)
print(sumE == traceE)

⑦对矩阵D的做奇异值分解,输出左奇异矩阵、奇异值和右奇异矩阵,并查看左奇异矩阵和右奇异矩阵是否为正交矩阵;

'''
对矩阵D的做奇异值分解,输出左奇异矩阵、奇异值和右奇异矩阵,并查看左奇异矩阵和右奇异矩阵是否为正交矩阵。
https://jingyan.baidu.com/article/e75057f2385f34ebc81a8944.html
'''
# u - ;v - 奇异值;w -
u, v, w = np.linalg.svd(df)
print(u)
# 左奇异矩阵
print(u)
# 奇异值
print(v)
# 右奇异矩阵
print(w)
# 将v转化为对角矩阵
v = np.diag(v)
print(u)
# 查看左奇异矩阵和右奇异矩阵是否为正交矩阵。
u = u.dot(u.T)
w = w.dot(w.T)
print(u)
'''
将矩阵与单位矩阵比较np.allclose(w, np.eye(4))
np.eye()中的参数按照生成的矩阵的格式
https://www.cnpython.com/qa/164423
'''
print(np.allclose(u, np.eye(25)))
print(np.allclose(w, np.eye(4)))

tips:

q1:在验证一个矩阵和其逆矩阵相乘时是否等于单位矩阵,发现结果包含许多接近于0但不等于0的科学计数法的数字。

a1:网上说因为矩阵接近奇异值,也就是在我们求其逆矩阵时会出现伪逆,或者无穷小数,那么我们在求逆矩阵时就不要使用pinv求逆矩阵,因为此方法会把矩阵的伪逆求出来如果逆不存在的话,第二就是输出结果转换为int类型,去掉小数即可。

q2:进行验证矩阵E的特征值之和是否等于E的迹时,发现矩阵E的特征值之和不为期望结果。

a2:从输出的特征值可以看出所有数值都是8位小数,所以在使用函数计算时可能有小数的四舍五入。那么他们之间的和有出入是必然的,但是结果的误差非常小,所以只需对结果取整即可。

源码
基于python的线性代数运算

实验所用到的所有文件获取1

实验所用到的所有文件获取2,提取码:uj7m文章来源地址https://www.toymoban.com/news/detail-402973.html

到了这里,关于基于python的线性代数运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【理解线性代数】(四)线性运算的推广与矩阵基础

    工业生产的发展趋势总是从单件生产到批量生产。科学技术研究也是一样,总是从简单计算到复合运算、批量运算。批量意味着生产能力、处理能力的提升。计算机从16位发展到64位,从单核发展到多核;计算机从CPU处理数据发展到GPU处理数据;大数据、人工智能领域的大模型

    2024年02月09日
    浏览(52)
  • 线性代数|分块矩阵的运算规则

    定理 1 设矩阵 A boldsymbol{A} A 与 B boldsymbol{B} B 的行数相同、列数相同,采用相同的分块法,有 A = ( A 11 ⋯ A 1 r ⋮ ⋮ A s 1 ⋯ A s r ) , B = ( B 11 ⋯ B 1 r ⋮ ⋮ B s 1 ⋯ B s r ) boldsymbol{A} = begin{pmatrix} boldsymbol{A}_{11} cdots boldsymbol{A}_{1r} \\\\ vdots vdots \\\\ boldsymbol{A}_{s1} cdots boldsymbol{

    2024年02月07日
    浏览(50)
  • 线性代数 | 矩阵运算 加减 数乘 矩阵的幂运算

    《线性代数》中会有较多陌生的概念,如矩阵的逆,线性相关线性无关等,具有一定的难度。因而本系列尽量会以不同于课本的视角去学习线性代数,有些可以做类比记忆的我们会去做一些类比记忆,比如矩阵的逆类比于我们数的除法,有一些比如线性相关和无关会尽量以几

    2024年02月04日
    浏览(51)
  • 0203逆矩阵-矩阵及其运算-线性代数

    定义7 对于 n n n 阶矩阵A,如果有一个 n n n 阶矩阵B,使 A B = B A = E AB=BA=E A B = B A = E 则说矩阵A是可逆的,并把矩阵B称为A的逆矩阵,简称逆阵。 定理1 若矩阵A可逆,则 ∣ A ∣ ≠ 0 vert Avert not = 0 ∣ A ∣  = 0 证明: A 可逆,即有 A − 1 ,使得 A A − 1 = E ∣ A A − 1 ∣ = ∣ A

    2024年04月13日
    浏览(60)
  • 线性代数第二章矩阵及其运算详解

    一.线性方程组和矩阵 1.概念 如图所示,该矩阵称为 m行n列矩阵 若行数和列数都等于n,则该矩阵称为 n阶方阵 两个矩阵的行数相等,列数也相等,就称它们为 同型矩阵 若A=(aij)和B=(bij)是同型矩阵,且aij=bij(i=1,2,...,m;j=1,2,...,n),则称 矩阵A与矩阵B相等 ,记作 A=B 2.特殊

    2024年01月25日
    浏览(53)
  • 0205矩阵分块法-矩阵及其运算-线性代数

    1 分块矩阵的定义 将矩阵A用若干条纵线和横线分成许多个小矩阵,每一个小矩阵称为A的子快,以子块为元素的形式上的矩阵称为分块矩阵。 2 分块矩阵的运算(性质) 设矩阵A与B的行数相同,列数相同,采用相同的分块法,有 A = ( A 11 ⋯ A 1 r ⋮ ⋮ A s 1 ⋯ A s r ) , B = ( B 11 ⋯

    2024年04月26日
    浏览(39)
  • 线性代数:矩阵运算(加减、数乘、乘法、幂、除、转置)

    目录 加减 数乘  矩阵与矩阵相乘  矩阵的幂 矩阵转置  方阵的行列式  方阵的行列式,证明:|AB| = |A| |B|        

    2024年01月22日
    浏览(51)
  • 矩阵运算之外积:解决线性代数问题的关键技巧

    线性代数是数学的一个分支,主要研究的是线性方程组和矩阵。线性方程组是指每个变量的方程都是线性的方程组,矩阵是一种数学结构,可以用来表示和解决线性方程组。在现实生活中,线性方程组和矩阵广泛应用于各个领域,如物理学、生物学、经济学、计算机科学等。

    2024年02月21日
    浏览(43)
  • 线性代数中涉及到的matlab命令-第二章:矩阵及其运算

    目录 1,矩阵定义 2,矩阵的运算 3,方阵的行列式和伴随矩阵  4,矩阵的逆  5,克莱默法则  6,矩阵分块  矩阵与行列式的区别: (1)形式上行列式是数表加两个竖线,矩阵是数表加大括号或中括号; (2)行列式可计算得到一个值,矩阵不能; (3)两个行列式相加与两

    2024年02月08日
    浏览(51)
  • 【课后习题】 线性代数第六版第二章 矩阵及其运算 习题二

    习题二 1. 计算下列乘积: (1) ( 4 3 1 1 − 2 3 5 7 0 ) ( 7 2 1 ) left(begin{array}{rrr}4 3 1 \\\\ 1 -2 3 \\\\ 5 7 0end{array}right)left(begin{array}{l}7 \\\\ 2 \\\\ 1end{array}right) ⎝ ⎛ ​ 4 1 5 ​ 3 − 2 7 ​ 1 3 0 ​ ⎠ ⎞ ​ ⎝ ⎛ ​ 7 2 1 ​ ⎠ ⎞ ​ ; (2) ( 1 , 2 , 3 ) ( 3 2 1 ) (1,2,3)left(begin{array}{l}3 \\\\ 2 \\\\ 1end{ar

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包