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,:)=[];