当前位置:文档之家› matlab实现数值计算功能源程序(个人整理)

matlab实现数值计算功能源程序(个人整理)

matlab数值计算功能
1,基础运算
(1)多项式的创建与表达
将多项式(x-6)(x-3)(x-8)表示为系数形式
a=[6 3 8] % 写成根矢量
pa=poly(a)% 求出系数矢量
ppa=poly2sym(pa,'x') % 表示成符号形式
ezplot(ppa,[-50,50])
求3介方阵A的特征多项式
a=[6 2 4;7 5 6;1 3 6 ];
pa=poly(a)% 写出系数矢量
ppa=poly2sym(pa) %表示成符号形式
ezplot(ppa,[-50,50]) % 绘图
求x^3-6x^2-72x-27的根。

a=[1,-6,-72,-85]; % 写出多项式系数矢量
r=roots(a) % 求多项式的根
(2)多项式的乘除运算
c=conv(a,b) %乘法
[q,r]=deconv(c,a)% 除法
求a(s)=s^2+2s+3乘以b(s)=4s^2+5s+6的乘积
a=[1 2 3]
b=[4 5 6] % 写出系数矢量
c=conv(a,b)
c=poly2sym(c,'s') % 写成符号形式的多项式
展开(s^2+2s+2)(s+4)(s+1)并验证结果被(s+4),(s+3)除后的结果。

c=conv([1,2,2],conv([1,4],[1,1]))
cs=poly2sym(c,'s')
c=[1 7 16 18 8]
[q1,r1]=deconv(c,[1,4])
[q2,r2]=deconv(c,[1,3])
cc=conv(q2,[1,3])
test=((c-r2)==cc)
其他常用的多项式运算命令
pa=polyval(p,s) % 按数组规则计算给定s时多项式的值
pm=polyvalm(p,s)% 按矩阵规则计算给定s时多项式的值
[r,p,k]=residue(b,a) % 部分分式展开,b,a分别是分子,分母多项式系数矢量。

r,p,k分别是留数,极点和值项矢量。

p=poly(x,y,n) % 用n介多项式拟合给定的数据
polyder(p) %多项式微分
x=[1 2 3 4 5];
y=[5.5 43.1 128 290.7 498.4];
p=polyfit(x,y,3)
x2=1:0.1:5;
y2=polyval(p,x2);
plot(x,y,'o',x2,y2)
2,线性代数
1,求解方程的根
t=[0 0.3 0.8 1.1 1.6 2.3]';
y=[0.82 0.72 0.63 0.60 0.55 0.50]';
e=[ones(size(t)) exp(-t)]
c=e\y
t1=[0:0.1:2.5]';
y1=[ones(size(t1)),exp(-t1)]*c;
plot(t1,y1,'b',t,y,'ro')
2,逆矩阵及行列式
inv(a)
det(a)
pinv(a)
3,矩阵分解(略)
4,数据分析
max(x)求x各列的最大元素
mean(x)求x各列的平均值
median(x)找出x各列的中位元素
min(x)求出x各列的最小元素
S=cumsum(x)求x各列元素累计和
sort(x)使x的各列元素按递增排序。

std(x)求x各列的标准差。

sum(x)求x各列元素之和
prod(x)求x各列元素之积
cumprod(x)求x各列元素累计积
5,协方差和相关系数
C=cov(x) % 求协方差阵
C=cov(x,y)% 求两组随机变量的协方差
P=corrcorf(x)% 求相关阵
P=corrcorf(x,y)% 求两组随机变量的相关阵
6,微分与梯度
DX=diff(X,k) % 对x的列求k介微分矩阵
V=del2(U)% 求矩阵U的五点差分矩阵
dyx=diff(Y)./diff(X) % X,Y为同阶矩阵,差分计算按列进行
dyx=gradient(Y,dx) % Y是矢量,dx是X的梯度值
[GX,GY]=gradient(Z,dx,dy)% GX,GY分别为二元函数Z对x,y的偏导求x的微分
x=[1 ,10 ,20;2 ,12, 23;3, 14, 26;3 ,14 ,29]
diff(x)
二元函数的偏导数和梯度
x=-2:0.2:2;y=-2:0.2:2;
[xx,yy]=meshgrid(x,y);
Z=xx.*exp(-xx.^2-yy.^2);
[GX,GY]=gradient(Z,0.2,0.2);
contour(x,y,Z,'k'),hold on,
quiver(xx,yy,GX,GY,'r'),hold off
7,插值
编辑命令函数,计算四种插值函数,并用图形显示
x=0:10;y=sin(x);xi=0:.25:10;
%将插值方法定义为单元数组
strmod={'nearest','linear','spline','cubic'}
%将图标定义为单元数组
strlb={'(a) method=nearest','(b) method=linear','(c) method=spline','(d) method=cubic'};
for i=1:4
yi=interp1(x,y,xi,strmod{i});
subplot(2,2,i)
plot(x,y,'ro',xi,yi,'b'),xlabel(strlb(i))
end
x0=0:10;y0=sin(x0);
x=0:.25:10;
y=spline(x0,y0,x);
plot(x0,y0,'ro',x,y,'k')
在命令窗口中输入命令,计算四种二维插值结果,并用图形显示[x,y,z]=peaks(7);mesh(x,y,z)
[xi,yi]=meshgrid(-3:0.2:3,-3:0.2:3);
z1=interp2(x,y,z,xi,yi,'nearest');
z2=interp2(x,y,z,xi,yi,'linear');
z3=interp2(x,y,z,xi,yi,'spline');
z4=interp2(x,y,z,xi,yi,'cubic');
subplot(2,2,1)
mesh(xi,yi,z1)
subplot(2,2,2)
mesh(xi,yi,z2)
subplot(2,2,3)
mesh(xi,yi,z3)
subplot(2,2,4)
mesh(xi,yi,z4)。

相关主题