《程序员数学:用Python学透线性代数和微积分》

一、线形代数理论基础

pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso
提取码:jqso

    线形代数(linear algebra)是数学的一个分支,研究矩阵理论、向量空间、线性变换和有限维线形方程组等内容。

    比较重要的思想有:1.线性代数的核心内容是研究有限维线性空间的结构和线性空间的线性变换;2.向量的线性相关性是研究线性空间结构与线性变换理论的基础;3.矩阵是有限维线性空间的线性变换的表示形式;4.线性方程组的求解问题是n维空间到m维空间线性映射求核和全体原象的问题;5.行列式是研究这些问题的一个工具。

    主要内容有:1.矩阵运算:加减乘除、转置、逆矩阵、行列式、矩阵的幂、伴随矩阵;2.矩阵分块、秩、迹;3.解方程;4.线性相关;5.向量空间;6.特征值和特征向量;7.对称、相似;8.二次标准型;9.线性空间和基变换;10.正交空间;11.矩阵对角化;13.矩阵分解;14.重要数字特征。

二、MATLAB的处理

1.建立矩阵

MATLAB中,矩阵是默认的数据类型。它把向量看做1×N或者N×1的矩阵。

%建立了一个行向量,不同元素之间使用空格或者逗号分开都是可以的。

A=[1,2,3]   或者  A=[1 2 3]

%建立一个矩阵,使用分号隔开不同的行。

A=[1,2,3;4,5,6]

%那么,建立一个列向量就好办了。每行一个元素,分号分开即可。当然也可以使用行向量的转置(一个撇号表示转置)。

A=[1;2;3]   或者   A=[1,2,3]’

MATLAB内置了很多特殊的矩阵生成函数,建立特殊矩阵十分方便。

i)第一组用来生成特殊规则的矩阵。如全零、全一、随机、等步长等形式。

X=zeros(m,n)   

%生成一个m*n的全0矩阵。同理,ones(m,n)生成一个全1矩阵;eye(m,n)生成一个单位阵。它们的重要作用在于预先分配矩阵空间,所以,在预知矩阵规模但是不知道矩阵具体数据的情况下,先用这几个函数生成一个矩阵,对提高运算速度十分有用。

X=rand(m,n)  

%生成一个平均分布的随机矩阵,数值区间[0,1]。同理,randn(m,n)生成一个服从正态分布的随机矩阵。注意,这些所谓的随机实际上都是伪随机。

v=linspace(a,b,n)   

%产生线性空间矢量。a和b分别是起点和终点,n是本区间内的点数,默认100个点。同理,logspace(a,b,n)产生对数空间矢量。不过它默认点数是50个。

v=1:0.1:10   

%产生一个线性的矢量。规格是---起点:步长值:终点

ii)第二组用来在原有矩阵基础上获得一个具有某些特征的矩阵。

X=diag(v,k)v=diag(X,k) 

%前者用矢量v中的元素生成一个对角矩阵,k是对角移位因子,默认为0,即主对角。k>0,对角线右移。后者返回矩阵X的对角元素,存在矢量v中。k的意义相同。

X1=triu(X,k)和X1=tril(X,k)  

 %分别产生矩阵X的上三角矩阵和下三角矩阵。

fliplr(X)/flipud(X)/rot90(X)   

%这都是对矩阵的翻转操作,获得新的矩阵。分别是左右翻转(left-right)、上下翻转(up-down)和逆时针旋转90°操作。

iii)第三组用来生成一些具有理论价值的,往往是以数学家命名的矩阵。

magic(n)生成行列相加均为同一个数字的方阵。pascal(n)生成帕斯卡尔矩阵。hilb(n)生成希尔伯特矩阵。vander(v)生成范德蒙德矩阵。等等。

这些矩阵一般都有相应的学术背景,用到的时候,可以用命令help elmat在最后一个栏目中看看有没有自己要找的特殊矩阵,如果有,点进去进一步研究即可。

2.矩阵的特征信息

size(X)  %获得矩阵X的行、列数。比如,X是一个3*5的矩阵,p=size(X)返回p=[3 5]

length()   %对于矢量,返回的是矢量的长度;对数组,返回的是数组最长的那一个维度的长度。

ndims()   %相当于length(size(x))。

numel()   %数组中元素的个数。

isempty()isequal()is*型函数    %测试矩阵是否满足某些条件

[V,D] = eig(A)  %矩阵A的特征值D和特征向量V。

k = rank(A)   %矩阵A的秩

b = trace(A)  %矩阵A的迹,即对角线元素之和

d = det(X)    %方阵A的行列式

Y = inv(X)   %矩阵X的逆矩阵

n = norm(X,option)   %矩阵或者向量的范数,具体使用用到再说

c = cond(X)    %矩阵X的条件数

3.矩阵分解

矩阵分解是矩阵论的重要内容。常用的分解形式在MATLAB中都有函数予以实现,并且有些分解考虑了多种情况。常见的如:eig()、qr()、schur()、svd()、chol()、lu()等。具体使用的时候

4.矩阵运算

MATLAB默认的是矩阵运算,所以如果想要按元素依次计算,在原来运算符前加一个.号。比如.*表示按元素相乘。

每一个运算符都有一个对应的函数。如:

A+B=plus(A,B)、A-B=minus(A,B)

A*B=mtimes(A,B)、A.*B=times(A,B)

A/B=mrdivide(A,B)、A./B=rdivide(A,B)、A\B=mldivide(A,B)、A.\B=ldivide(A,B)

A^B=mpower(A,B)、A.^B=power(A,B)

A'=ctranspose(A)、A.'=transpose(A)

其中的前缀m自然是表示matrix的意思。没有m前缀的就是按元素进行的意思。最后那个转置操作,c前缀表示的是按照复数操作进行转置。

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性代数微积分程序员数学上的两个基础学科,而Python是一种功能强大且易于学习和使用的编程语言。对于程序员来说,学习线性代数微积分对于理解和应用许多计算机科学领域中的问题非常有帮助。使用Python来学习这些数学领域,具有以下几个优势。 首先,Python提供了许多用于线性代数微积分的库,如NumPy和SciPy。这些库使得进行矩阵运算、求解方程组、计算向量的导数等操作变得非常简单。通过使用这些库,可以以简洁而高效的方式实现诸如线性回归、图像处理和机器学习等任务。 其次,Python具有直观的语法和易于理解的代码结构,这使得学习和编写数学算法变得更加容易。与其他编程语言相比,Python的代码可读性更高,这对于初学者来说是一个重要的优势。通过编写Python代码,程序员可以更好地理解线性代数微积分的概念和原理。 最后,Python是一种跨平台的语言,可以在各种操作系统上运行。无论是在Windows、Mac还是Linux系统上,程序员都可以使用Python来学习和实践线性代数微积分。这种灵活性使得学习过程更加方便,并且可以在不同的开发环境中进行代码编写和调试。 总之,使用Python学习和应用线性代数微积分对于程序员来说是一种高效和实用的选择。Python的库和语法使得数学问题的求解更加容易,同时也提高了代码的可读性和可移植性。通过深入学习这些数学领域,程序员可以在算法设计和问题解决方面进行更加丰富和高效的工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值