数学软件提取数组下标Word文档格式.docx
《数学软件提取数组下标Word文档格式.docx》由会员分享,可在线阅读,更多相关《数学软件提取数组下标Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
计算结果的默认变量名。
ij:
基本虚数单位。
eps:
系统的浮点(F10a9Bg个oht):
inf:
无限大,例1/0
nanNaN:
非数值(N航anmnb谢)
pi:
圆周率n(n=3.1415926..)。
realmax:
系统所能表示的最大数值。
realmin:
系统所能表示的最小数值,
nargin:
函数的输入参数个数:
nargout:
函数的输出多数个数
①matlab的所有运算都定义在复数城上。
对于方根问题运算只返回处于第一象限的解。
⑦matlab分别用左斜/和右\来表示“左除和“右除”运算。
对于标量运算而言,这两者的作用没有区别:
但对于矩阵运算来说,二者将产生不同的结果。
多项式的表示方法和运算
p(x)=x^3-3x-5
可以表示为p=[10
–35],求x=5时的值用plotval(p,5)
也可以求向量:
a=[345],plotval(p,a)
函数roots求多项式的根
roots(p)
p=[10-35];
r=roots(p)
由根重组多项式poly(根)
q=poly(r)
real(q)
有时会产生虚根,这时用real抽取实根即可
conv(a,b)函数
多项式乘法(执行两个数组的卷积)
a=[1234];
b=[14916];
c=conv(a,b)
多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次
多项式除法
[q,r]=deconv(c,b)
表示b/cq为商多项式,r为余数
多项式的导数
polyder(f)
f=[245621];
s=polyder(f)
多项式的曲线拟合
x=[12345];
y=[5.640150250498.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);
gridon
最小二乘法
plot(x,y,’*’),lsline
多项式插值
(p158)
YI=interp1(x,y,XI,’method’)
一维插值
(XI为插值点的自变量坐标向量,可以为数组或单个数。
method为选择插值算法的方法,包括:
linear(线性插值)
cubic(立方插值)
spline(三次样条插值)
nearst(最近临插值)
例如:
人口预测
year=1900:
10:
1900;
number=[7891105
….每十年的人口数];
x=1900:
1:
2000;
y=interp1(year,number,x,’spline’);
plot(year,numeber,’*’,x,y);
一维博里叶变换插值使用函数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'
s=solve(x^3-x+c)
函数定积分
q=quadl(‘humps’,0,1)
求humps函数在01区间上的定积分,也可以用quad语句
二重积分
首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。
Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd为被积函数的名称字符串
符号积分运算int(f)
最精确的是符号积分法
计算s=∫12[∫01xydx]dy
symsxy
中间为空格,不能为逗号
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=[12333789];
b=diff(a)
一次微分
bb=diff(a,2)
二次微分
实际上diff(a)=[a
(2)-a
(1),a(3)-a
(2),……,a(n)-a(n-1)]
对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。
符号微分运算(diff)
symsxta
f=cos(a*x)
df=diff(f)
由findsym的规则,隐式的指定对x进行微分
dfa=diff(f,'
a'
)
指定对变量a进行微分
3)
三次微分
diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分
symsax
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.xs.ys.z3个方程,架构数组
dsolve('
Dx=-a*x'
结果:
C1*exp(-a*t)
没给定初值,所以结果中含参变量
x=dsolve('
x(0)=1'
s'
结果exp(-a*s)
给定了初值,独立变量设为s
计算多元函数的梯度
fx=gradient(f)f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。
[x,y]=meshgrid(-2:
.2:
2,-2:
2);
z=x.*exp(-x.^2-y.^2);
[px,py]=gradient(z,.2,.2);
contour(z),holdon
画等值线
quiver(px,py)
matlab字符串运算
利用sym命令创建表达式
f=sym(‘cos(x)+sin(x)’)或
symsx,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)
给出所有变量
符号表达式的化简和替换
collect函数
collect(f,v)表示将f表示为关于符号变量v的多项式形式,即关于v合并同类项,v缺省,则用findsym确定的缺省变量
f=x^2*y+y*x-x^2-2*x+1
collect(f)
得到(-1+y)*x^2+(y-2)*x+1
collect(f,y)
得到(x+x^2)*y+1-x^2-2*x
expand函数
expand(f)将f展开,写成和的形式
symsx
expand((x-1)^3)
得到x^3-3*x^2+3*x-1
horner函数
horner(f)将f写成镶嵌套形式
horner(x^3-6*x^2)
得到(-6+x)*x^2
factor函数
factor(f)将f转换成低阶有理多项式的乘积
f=x^3-6*x^2+11*x-6
factor(f)
得到
(x-1)*(x-2)*(x-3)
simplify(f)函数
综合化简
simple(f)
函数的最简形式
f=2*sin(x^2)+cos(3*x)
如果不想看到中间过程,可z=simple(f)
有时使用两次simple命令可以得到最简式
如果想知道哪个简化命令得到最后结果,可以加一个参数how
[z,how]=simple(f)
符号表达式的替换
subs(f,new,old)
f='
a*x^2+b*x+c'
subs(f,'
t'
得到a*(t)^2+b*(t)+csubs是一个符号函数,返回一个符号变量
subexpr函数
有时matlab返回的符号表达式难以理解,用subexpr函数,可以将表达式中重复出现的子式用一个符号表示,从而简化表达形式
a=subexpr(s)
得到sigma=-108*c+12*(-12+81*c^2)^(1/2)
a=
[1/6*sigma^(1/3)+2/sigma^(1/3)]
[-1/12*sigma^(1/3)-1/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]
[-1/12*sigma^(1/3)-1/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]
pretty函数有时也能起到同样的作用。
Pretty(f)
显示函数的习惯书写形式
线性方程组的求解
求解线性方程组,用反斜杠\
a=hilb(3)
b=[123]'
a\b
矩阵的特征值和特征向量
用eig(v,d)函数,[v,d]=eig(A);
其中d将返回特征值,v返回相应的特征向量,缺省第二个参数将只返回特征值
symsabcreal
A=[abc;
bca;
cab];
[v,d]=eig(A);
为了观察更清楚,使用以前学过的替换函数,这里不用默认的sigma,而改用M,显式的代替繁琐的表达子式
vv=subexpr(v);
vs=subs(vv,'
m'
sigma'
运行结果为
vs=
[1,1,1]
[-(c+(m)-a)/(c-b),-(c-(m)-a)/(c-b),1]
[-(a-(m)-b)/(c-b),-(a+(m)-b)/(c-b),1]
再用m替换d中的表达子式
dd=subexpr(d);
ds=subs(dd,’m’,’sigma’)
运行结果为ds=
[(m),0,0]
[0,-(m),0]
[0,0,c+a+b]
note
求特征值也可用以下命令
f=poly(A)poly函数
用来求A的特征多项式
d=solve(f)solve(f)函数用来求多项式的解
svd()函数
求矩阵的奇异值分解,将矩阵分解为两个正交矩阵和对角矩阵的乘积
a=sym(hilb
(2))
[u,s,v]=svd(a)
代数方程和方程组
代数方程的求解可用solve(f)命令,如果f不含=,matlab将给表达式置零。
方程的未知量在默认的情况下由findsym决定或显式指出
symsabcx
solve(a*x^2+b*x+c)
以x为默认变量
solve(a*x^2+b*x+c,a)
指定对a为变量
求含有等号的方程的解(一定要加单引号)
f=solve(‘cos(x)=sin(x)’)
x=solve('
exp(x)=tan(x)'
如果不能求得符号解,就计算可变精度解。
求解方程组与单方程类似
解一个三元一次方程
v=solve('
a*u^2+v^2'
u-v=1'
a^2-5*a+6'
结果为v=
a:
[4x1sym]u:
[4x1sym]v:
[4x1sym]
一些常用的符号运算
极限运算limit
limit(f)
求x到0的极限
limit(f,x,a)或limit(f,a)
求x到a的极限
limit(f,a,’left’)limit(f,a,’right’)
求x到a的左极限和右极限
limit(f,inf)
求x趋于无穷的极限
符号求和symsum(s)
symsum(s)
以默认的findsym决定的变量求和
symsum(s,v)
以s中指定的变量v求和
symsum(s,a,b)symsum(s,v,a,b)
从a到b的有限项求和
symskn
symsum(k)
从0到k求和
symsum(k,0,n-1)
从0到n-1求和
symsum(1/k^2,1,inf)
无限项求和
泰勒级数taylor(f)
taylor(f)表示求f的5阶talor展开,可以增加参数指定展开的阶数(默认式5),也可以对于多元函数指定展开的变量,还可以指定在哪个点展开
symsxt
taylor(exp(-x))
taylor(log(x),6,1)
在1点的6阶taylor展开
taylor(x^t,3,t)
对t的3阶taylor展开
积分变换
fourier变换和逆变换fourier(f)
fourier分析可以将信号转换为不同频率的正弦曲线。
可对离散数据进行分析,也可对连续时间系统进行分析,特别在信号和图形处理领域。
离散变换(DFT)作用于有限数据的采集,最有效的是快速fourier变换(FFT)
F=fourier(f)
独立变量x,返回关于参数w的函数
F=fourier(f,v)
返回函数F关于符号对象v的函数
F=fourier(f,u,v)
对关于u的函数f进行变换,而不是缺省的w,返回函数F是关于v的函数
symstvwx
fourier(1/t)
fourier(exp(-t)*sym('
Heaviside(t)'
),v)
fourier(diff(sym('
F(x)'
)),x,w)
Fourier逆变换
f=ifourier(F)
缺省独立变量w,返回关于x的函数对w进行积分
f=ifourier(F,v)
返回函数f是关于符号对象v的函数,而不是缺省的x
f=ifourier(F,u,v)
是关于u的函数f进行变换,而不是缺省的x,返回函数f是关于v的函数
Laplace变换和逆变换laplace(f)
应用于连续系统(微分方程)中,可以用来求解微分方程的初值问题
laplace(F)
缺省独立变量t,缺省返回关于s的函数L
laplace(F,t)
返回关于t的函数L,而不是缺省的s
laplace(F,w,z)
对函数F的自变量w积分,返回关于z的函数L
逆变换
F=ilaplace(L)
缺省独立变量s,返回关于t的函数F
F=ilaplace(L,y)
返回关于y的函数F,而不是缺省的t
F=ilaplace(L,y,x)
对函数L的自变量y积分,返回关于x的函数F
Z-变换和逆变换ztrans(f)
标量符号f的Z-变换
F=ztrans(f)
缺省独立变量n,返回关于z的函数
F=ztrans(f,w)
返回关于符号变量w的函数F,而不是缺省的z
F=ztrans(f,k,w)
关于k的符号变量作Z-变换返回关于符号变量w的函数
逆变换iztrans(F)
f=iztrans(F)
或(F,k)或
(F,w,k)
符号绘图函数
符号函数简易绘图函数ezplot(f)
f可以包含单个符号变量x的字符串或表达式,默认画图区间(-2pi,2pi),如果f包含x和y,画出的图像是f(x,y)=0的图像,缺省区间是-2pi<
x<
2pi,-2pi<
y<
2pi。
Ezplot(f,xmin,xmax)或ezplot(f,[xmin,xmax])绘制在xmin<
xmax区间上图像
ezplot('
t*cos(t)'
t*sin(t)'
[0,4*pi])
绘制符号图像函数fplot(fun,lims,tol,’linespec’,n)
其中lims=[xmin,xmax]或[xmin,xmax,ymin,ymax]tol为指定相对误差,默认0.001
‘linespec’指定绘图的线型
n指定最少以n+1个点绘图
[x,y]=fplot(fun,lims,…)
只返回用来绘图的点,并不绘图,可以自己调用plot(x,y)来绘制图形。
subplot(2,2,1),fplot('
[0,1])
abs(exp(x*(0:
9))*ones(10,1))'
subplot(2,2,2),fplot(f,[0,2*pi])
subplot(2,2,3),fplot('
sin