matlab基础使用(更新中)


Matlab基础使用

写在前面

和之前那篇不同的是,这篇文章记录了matlab基础使用的方法,总共也就那么几个部分

  • 向量运算
  • 多项式运算
  • 矩阵运算
  • 符号运算
  • 数列求和与函数极限与导数操作
  • 函数积分
  • 方程求解
  • 微分方程//曲线方程
  • 拟合插值(这个我更倾向于excel)
  • 程序设计
  • 二维绘图
  • 三维绘图

大概基础就这么多了,之前知识都是散的于是来个汇总。真·边复习高数线代边用matlab解高数线代题。

向量操作

向量:行矩阵列矩阵,秩数为1

向量创建

  • 直接创建:a=[1,2,3,4]
  • 步距创建:a=1:4
  • 函数生成:a=linspace(0,10,6),从0到10共六个数的向量,自动求步距
  • 对数分割:a=logspace(1,3,3),表示三个数,10的1次到10的3次

向量运算

- 加法
- 减法
- 数乘
- 求内积:dot(a,b)
- 求外积:cross(a,b)
- 混合积:dot(a,cross(b,c))

特殊变量

单元型变量

  • 类似于结构体
  • cell来表示,排列方式又类似于矩阵

结构体变量

  • struct创建
  • 要求键值对对应:struct(‘a’,{A});

多项式操作

多项式创建

  • 直接创建:’ax+bx^n’
  • 向量加函数创建:ploy2sym(p),p中元素按照顺序分别为n次到0次的系数

多项式运算

  • 乘法:conv(a,b),ab分别为向量
  • 除法:decov(a,b),同上

多项式求导

​ 步骤:

- 先向量创建成多项式符号函数
- 利用polyder()给多项式求导,得出导数的系数向量
- 然后在系数向量创建

矩阵操作

基础操作:

矩阵创建:

  • rand()
  • zeros()
  • ones()
  • eye()

主要就是这些

矩阵运算

修改

  • 删除元素:将某一行设置为空列表,例如:a(m;:)=[]
  • 元素赋值,a(m,n)=b
  • 组合矩阵

变维变向抽取

  • 变维:reshape():根据顺序以列的顺序上下重排元素
  • 变向:翻转,基本上不用
  • 抽取元素:
    • diag()
    • tril(),下三角
    • triu(),上三角

数学运算

  • 加法
  • 减法
  • 数乘
  • 乘法
  • 点乘,A.*B
  • 除法,记得区分左除\和一般除法/(右除)
  • 幂运算:A^n, A.^n
  • 求逆:inv(A),pinv(A)
  • 求秩:rank(A)
  • 转置:s’
  • 求行列式det(C)

符号运算

符号与数值转换

  • sym():数值转换成分数

  • eval():分数转化为小数(同时也可以用vpa()对某个表达式求数值解)

  • 设置表达式数值精度:digits(D)//d为有效数字个数->vpa(s)或者vpa(s,d)

符号创建

  • x=sym(‘x’)创建符号变量
  • syms x 进行定义
  • 矩阵创建sym(‘a’,n);

数值带入表达式

  • sub(f,x,c):f为表达式,x是变量,c是数值

符号运算

  • 因式分解:factor(f):f是表达式,或者用sym()转化的数值,转化为质数乘积表达式
  • 幂函数展开:expand(f):比如展开x(x+1)
  • 求通分后的分子分母:[n,m]=numden(F),n是分子,m是分母

数列求和求积与函数极限与导数操作与级数求和

数列求和

sum

  • sum(1:n)返回1到n的累加和
  • sun(a),a是矩阵,返回各个列的累加和,结果组成行矩阵
  • sum(a,1or2),1表示不求和,2表示求和结果等于原来数列的和,若a是矩阵,啧1对列求和2对行求和
  • nansum(),忽略累加中的nan

cumsum

  • 求该元素前的累积和加上该元素的和

数列求积(数值求和)

prod

  • 用法同sum,但是是求积

cumprod

  • 用法同cumsum,但是求积

求极限

limit

默认求极小值

使用步骤:

1.定义变量syms x

2.带入limit(f,范围),例子:limit((1+1/n)^n,inf)

多元求极限

syms x y

f=(exp(x+exp(y))/(cos(x)-sin(y))

limit(limit(f,x,0),y,0)

求导

diff

diff(f,x,n):求f函数关于x的n阶数导

diff(f,n):求n阶导数

可知可以通过这种方式求偏导

级数求和(符号求和)

symsum

  • symsum(f,x,a,b),f关于x从a到b的所有和
  • 结果用vpa()转换
  • 无穷级数symsum(f,0,inf)表示,结果用vpa转换

函数积分

定积分和不定积分

int

  • int(f,x,a,b):求f关于x在a到b上的定积分,然后用vpa表示数值
  • int(f,x,0,inf):求反常积分
  • 不定积分就相对于定积分少一个范围参数

重积分

dblquad(二重积分求解快捷方式)

  • dblquad(f,xm,xM,ym,yM)

    或者也可以用int来求解,int()通过调换参数可以实现多元积分

泰勒展开

taylor()

  • taylor(f,m,a),求f以x0=a,的情况下的m阶泰勒展开,当a舍去的时候,求麦克劳林展开
  • taylor(f,’order’,n)求n阶麦克劳林展开

傅里叶展开

Fourierzpi()

  • [a0,an,bn]=Fourierzpi(f)直接出表达式

方程求解

线性方程求解

  • 除法求解:(当解唯一时)

    ​ X=A\B 注意是左除即左乘上A的逆矩阵

  • 求齐次通解:

    ​ 1 判断是否是:唯一解,无穷解,有解

    ​ 2 null函数求通解:X=null(A,’r’),A是齐次方程的系数矩阵,’r’表示有理数形式返回

  • 求非齐次通解:

    ​ 1 先用伪逆求特解:x0=pinv(A)*B,不用A满秩

    ​ 2 然后求同届 null(A,’r’);

  • 将增广矩阵化为行阶梯型,求行阶梯型矩阵,

    ​ 1x=rref(AB);AB是增广矩阵

    ​ 2解为曾广矩阵最后一列

非线性方程求解

  • x=fzero(f,x0)

非线性方程组求解

  • x=fsolve(f,x0)

微分方程求解

  • dsolve

    • 示例:

      y=dsolve(‘(Dy)^2-x*Dy+y=0’,’x);

微分方程求特解

示例:y=dsolve(‘(D2y)*x-5Dy=-x^3’,’y(1)=0,y(5)=0’,x)

线性回归

建议excel

曲线拟合

polyfit

y=polyfit(x,y,n),用n阶多项式来拟合x,y数据

注意,最后呈现的不是一个曲线形式而是求出一个多项式的系数向量;

linefit

顾名思义,直线拟合,基于最小二乘法

[k,b]=linefit(x,y),求出系数和截距

然后用y1=polyval([k,b],x);生成多项式函数

作业1

设A为3行4列的矩阵,B为一个行数大于3的矩阵,写出MATLAB命令。
(1)删除A的第1、3两列。
(2)删除B的倒数第3行。

>> A=zeros(3,4);
>> A(:,1)=[];
>> A(:,3)=[];
>> B=zeros(4,3);
>> B(-3,:)=[];
位置 1 处的索引无效。数组索引必须为正整数或逻辑值。
>> B(end-3,:)=[];

文章作者: 晓沐
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓沐 !
评论
 上一篇
pandaa&&numpy学习笔记 pandaa&&numpy学习笔记
numpy,matplotlib,pandas以及文件批量操作写在前面,由于自己python基础能力有点菜,并且基本上每上手一个框架都需要这四方面的操作以及掌握,所以我决定恶补这方面的不足,故有了这样一篇博客,持续更新中~ 环境:cond
下一篇 
蒟蒻的matlab实战笔记(更新中) 蒟蒻的matlab实战笔记(更新中)
Matlab 实战笔记写在前面暑假为了参加国赛学习了matlab(白给的可能性比较大毕竟第一次参加比赛还撞上开学考试),看了也快有半月多一点了,之前基本上就是看书,会了点线性规划图论微分方程积分等等,然而实践出真知,具体问题还得具体分析。于
2020-08-15
  目录