Interval[{min, max}] 区间[min, max](* Solve[3 x+2==Interval[{-2,5}],x]*)
IntervalMemberQ[interval, x] x在区间内吗? IntervalMemberQ[interval1,interval2] 区间2在区间1内吗? IntervalUnion[intv1,intv2...] 区间的并 IntervalIntersection[intv1,intv2...] 区间的交
十二、矩阵操作
a.b.c 或 Dot[a, b, c] 矩阵、向量、张量的点积 Inverse[m] 矩阵的逆 Transpose[list] 矩阵的转置
Transpose[list,{n1,n2..}]将矩阵list 第k行与第nk列交换 Det[m] 矩阵的行列式 Eigenvalues[m] 特征值 Eigenvectors[m] 特征向量
Eigensystem[m] 特征系统,返回{eigvalues,eigvectors} LinearSolve[m, b] 解线性方程组m.x==b
NullSpace[m] 矩阵m的零空间,即m.NullSpace[m]==零向量
RowReduce[m] m化简为阶梯矩阵
Minors[m, k] m的所有k*k阶子矩阵的行列式的值(伴随阵,好像是)
MatrixPower[mat, n] 阵mat自乘n次
Outer[f,list1,list2..] listi中各个元之间相互组合,并作为f的参数的到的矩阵
Outer[Times,list1,list2]给出矩阵的外积
SingularValues[m] m的奇异值,结果为{u,w,v}, m=Conjugate[Transpose[u]].DiagonalMatrix[w].v PseudoInverse[m] m的广义逆 QRDecomposition[m] QR分解 SchurDecomposition[m] Schur分解 LUDecomposition[m] LU分解 matlab常用到的永久变量。
ans:计算结果的默认变量名。 i j:基本虚数单位。
eps:系统的浮点(F10a9Bg个oht): inf: 无限大,例1/0
nan NaN:非数值(N航a nmnb谢) pi:圆周率n(n=3.1415926..)。 realmax:系统所能表示的最大数值。 realmin: 系统所能表示的最小数值, nargin: 函数的输入参数个数: nargout:函数的输出多数个数
①matlab的所有运算都定义在复数城上。对于方根问题运算只返回处于第一象限的解。
⑦matlab分别用左斜/和右\\来表示―左除和―右除‖运算。对于标量运算而言,这两者的作用没有区别:但对于矩阵运算来说,二者将产生不同的结果。
多项式的表示方法和运算
p(x)=x^3-3x-5 可以表示为p=[1 0 –3 5],求x=5时的值用plotval(p,5) 也可以求向量:a=[3 4 5],plotval(p,a) 函数roots求多项式的根 roots(p) p=[1 0 -3 5]; r=roots(p)
由根重组多项式poly(根) q=poly(r)
real(q) 有时会产生虚根,这时用real抽取实根即可 conv(a,b)函数多项式乘法(执行两个数组的卷积) a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b)
多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次 多项式除法 [q , r]=deconv(c , b) 表示b/c q为商多项式,r为余数
多项式的导数 polyder(f) f=[ 2 4 5 6 2 1]; s=polyder(f)
多项式的曲线拟合 x=[1 2 3 4 5];
y=[5.6 40 150 250 498.9];
p=polyfit(x,y,n) 数据的n次多项式拟合 poly:矩阵的特征多项式、根集对应的多项式 x2=1:0.1:5; n取1时,即为最小二乘法
y2=polyval(p,x2); 计算多项式的值(polyvalm计算矩阵多项式) plot(x,y,'*',x2,y2);grid on 最小二乘法 x=[1 2 3 4 5];
y=[5.6 40 150 250 498.9]; plot(x,y,‘*‘),lsline
多项式插值(p158)
YI=interp1(x,y,XI,‘method‘) 一维插值
(XI为插值点的自变量坐标向量,可以为数组或单个数。 method为选择插值算法的方法,包括: linear(线性插值) cubic(立方插值) spline(三次样条插值) nearst(最近临插值)
例如:人口预测 year=1900:10:1900;
number=[78 91 105 ….每十年的人口数]; x=1900:1:2000;
y=interp1(year,number,x,‘spline‘); plot(year,numeber,‘*‘,x,y);grid on
一维博里叶变换插值使用函数interpft实现,计算含有周期函数值的矢量的傅里叶变换
然后使用更多的点进行傅里叶变换的逆变换,函数的使用格式如下:y=interpft(x,n) 其中x是含有周期函数值的矢量,并为等距的点,n为返同等间距点的个数。
求解一元函数的最小值
y=fminbnd('humps',0.3,1) humps为一内置函数 求解多元函数的最小值
函数fminserch用于求多元函数的最小值。它可以指定一个开始的矢量,并非指定一个区间。此函数返回一个矢量为此多元函数局部最小函数值对应的自变量
纹理成图功能
由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示。
将文件名为flowers.tif的图像分别投影到圆柱形和球星表面上 i=imread('flowers.tif'); [x,y,z]=cylinder;
subplot(1,2,1),warp(x,y,z,i); [x,y,z]=sphere(50);
subplot(1,2,2),warp(x,y,z,i); warp(x,y,z,i);
求函数的零点
求函数humps在[1,2]区间上的零点 fzero(?humps‘,[1,2]); 也可以给一个初始值 fzero(?humps‘,0.9);
对于多项式可直接由roots求其根 roots(?4*x^3+……‘); 也可以用solve c=sym('c','real'); x=sym('x','real'); s=solve(x^3-x+c)
函数定积分
q=quadl(?humps‘,0,1) 求humps函数在0 1区间上的定积分,也可以用quad语句
二重积分首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。 Result=dblquad(?integrnd‘,xin,xmax.,ymin,ymax) integrnd为被积函数的名称字符串
符号积分运算int(f) 最精确的是符号积分法 计算s=∫12[∫01xydx]dy syms x y 中间为空格,不能为逗号
s=int(int(?x^y‘,‘x‘,0,1),‘y‘,1,2) 引号可省略 vpa(s) 显示s的值 内积分限为函数的二重积分 I=∫14[∫√y2(x2+y2)dx]dy
符号法I=vpa(int(int(?x^2+y^2‘,‘x‘,sqrt(y),2),‘y‘,1,4)
微分运算(diff)
微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。—个函数的小的变化,容易产生相邻点的斜率的大的改变。由干微分这个固有的困难.所以尽可能避免数值微分.特别是对实验获得的数据进行微分。在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免的,在MATLAB中.用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。
a=[1 2 3 3 3 7 8 9]; b=diff(a) 一次微分 bb=diff(a,2) 二次微分
实际上diff(a)=[a(2)-a(1),a(3)-a(2),……,a(n)-a(n-1)]
对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。 符号微分运算(diff) syms x t a f =cos(a*x)
df =diff(f) 由findsym的规则,隐式的指定对x进行微分 dfa=diff(f,'a') 指定对变量a进行微分 dfa=diff(f,'a',3) 三次微分
diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分 syms a x
A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)]; dA=diff(A) 微分方程dsolve
在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2 把t缺省了
y=dsolve(?Dy=f(y)‘) 单个方程,单个输出
[u,v]=dsolve(?Du=f(u,v)‘,‘Dv=g(u,v)‘) 2个方程,2个输出 s=dsolve(?Dx=f(x,y,z)‘,‘Dy=g(x,y,z)‘,‘Dz=k(x,y,z)‘) s.x s.y s.z 3个方程,架构数组
dsolve('Dx=-a*x') 结果:C1*exp(-a*t) 没给定初值,所以结果中含参变量 x=dsolve('Dx=-a*x','x(0)=1','s') 结果exp(-a*s) 给定了初值,独立变量设为s 计算多元函数的梯度
fx=gradient(f) f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。
[x,y]=meshgrid(-2:.2:2,-2:.2:2); z=x.*exp(-x.^2-y.^2); [px,py]=gradient(z,.2,.2); contour(z),hold on 画等值线 quiver(px,py)
matlab字符串运算 利用sym命令创建表达式
f=sym(?cos(x)+sin(x)‘)或 syms x , f=cos(x)+sin(x) diff(f) 求其导数
(也可直接用命令f=diff(?cos(x)+cos(y)‘)
当字符表达式中含有多于一个的变量时,只有—个变量是独立变量。如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问 利用findsym命令查询独立变量 f=sym('sin(a*x)+b')
findsym(f,1) 给出独立变量(一个变量,如果为2则给出2个变量) findsym(f) 给出所有变量