MATLAB在数学中的应用

来源:互联网 发布:java中map 编辑:程序博客网 时间:2024/06/02 17:24

1、实验目的

1)掌握矩阵的分析方法

2)掌握多项式的运算规则

3)掌握数据的分析与统计

4)掌握函数分析与数值积分

 

2、实验内容 

2.1 矩阵分析

2.1.1 范数

 a=[1, 2, 3;  4, 3, 1;  5, 3, 8]

 n=norm(a)               %  n = 11.2269

 n=norm(a,2)             %  n = 11.2269

 b=[1 2 4 3 5]           %  1   2   4   3   5

 m=norm(b,2)             %  m = 7.4162

2.1.2 矩阵求逆inv(A),行列式值:det(A)

 a=[1,2,3;4,3,1;5,3,8]

 inv(a) 

 det(a)

 a*inv(a)

2.1.3 线性方程组的解

例1. m=n & det(A)≠0

A = [6 3 4;-2 5 7;8 -4 -3]

B = [3 -4 -7]'

X =  A\B

det(A)

 

例2. m>n, 超定方程组

A(4,:) = [1 5 -7]

B(4,:) = [9]

X =  A\B

 

例3. m<n, 解不唯一

A=[2,4,2,1;-1,2,0,2;3,5,2,1]

B=[1;4;6]

X =  A\B

2.1.4 矩阵分解-lu分解

 A=[2,4,1; -1,2,2;3,5,1]

 [L,U,P]=lu(A)

 [L,U]=lu(A)

试比较结果的不同及原因

2.1.5 矩阵特征值

 A=[0,-6,-1;6,2,-16;-5,20,-10]

 lanmuda=eig(A)

 [V,D]=eig(A)

2.1.6 矩阵的幂次运算

 A=[1 1 1;1 2 3;2 3 5]

 X=A^3

 Y=A^(-3)

 Z=A^(2/3)

 2^A

 exp(A)

2.2 多项式运算

2.2.1 多项式表示及其四则运算

 a=[1 2 3 4]

 b=[2 3]

 b=[0 0 b]

 c=a+b

 a=[1 2]; b=[1 3];

 c=conv(a,b)

[q,r]=deconv(c,a) 

2.2.2 多项式求导函数polyder

例1

 a=[1,4,3], b=[1,3]

 c=polyder(a)

 d=polyder(b)

例2

 a=[1,1]

 b=[1,2]

 c=polyder(a,b)

 conv(a,b)

2.2.3 多项式求根

 p =[  1   -12     0    25   116]

 r=roots(p)

由根求多项式:poly

 r = [-1,-2]’

 poly(r)

2.2.4 多项式求值

例1:利用m文件运行下列程序

% 求H(jw)并画图

figure(1)

a1=[2,4,6,8];b1=[3,6,9];

w=linspace(0,10);

A=polyval(a1,j*w);

B=polyval(b1,j*w);

subplot(2,1,1),

plot(w,abs(B./A))

subplot(2,1,2)

plot(w,angle(B./A)) 

例2:利用m文件运行下列程序

figure(2)

w1=logspace(-1,1);

H=polyval(b1,j*w1)./polyval(a1,j*w1);

subplot(2,1,1)

semilogx(w1,abs(H))

subplot(2,1,2)

semilogx(w1,angle(H))

例3:求的时域响应并画图。

num=[3,0.5,4]; 

den=[1,5,4,7];

[r,p,k]=residue(num,den)

clf

t=[0:0.2:10];

y=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);

plot(t,y)

2.2.5 多项式拟合

线性拟和

 x=[0:10]

 y=exp(-0.1*x)+0.5

 p=polyfit(x,y,1)

 z=p(1)*x+p(2);

 plot(x,y,x,z)

二次拟和

 x=[0:10]

 y=exp(-0.1*x)+0.5

 p=polyfit(x,y,3)

 z1=p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4);

 z2=p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4)+0.01;

 figure (1)

 plot(x,y,'r',x,z1,'bp')

 figure (2)

 plot(x,y,'r-',x,z2,'b-.')

2.2.6 多项式插值

x=0:9;

y=[0,1.8,2.1,0.9,0.2,-0.5,-0.2,-1.7,-0.9,-0.3];

x1=0:0.01:9;

y1=interp1(x,y,x1,'*nearset');

y2=interp1(x,y,x1,'*linear');

y3=interp1(x,y,x1,'spline');

y4=interp1(x,y,x1,'cubic');

plot(x,y,'ok',x1,y1,'-r',x1,y2,'-.b',x1,y3,':c',x1,y4,'--k')

legend('原始数据','最近点插值','线性插值','样条插值','立方插值')

 

2.3 数据的分析与统计

2.3.1 最大/小值函数

 clear x,y

 x=[1 2;3 4]

 y=[5 6;7 8]

 a=max(x)

 b=min(y)

2.3.2 平均值、中间值及元素和函数

 x=[3,4,1,7,8,9,6]

 N=mean(x)

 M=median(x)

 s=sum(x)

2.3.3 标准偏差函数

 x=[3,4,1,7,8,9,6]

 s1=std(x)

 s2=std(x, 0) 

 s3=std(x,1)

2.3.4 排序函数

 x=[3,4,1,7,8,9,6]

 A=sort(x)

 [B,index]=sort(x)

2.3.5 元素乘积函数

 x1=[3 2 4]

 y=prod(x1)

 x2=[1 2;3 4]

 y2=prod(x2)

 x3(:,:,1)=[1 2;3 4]

 x3(:,:,2)=[2 3;4 2]

 y3=prod(x3)

2.3.6 求元素之差

 x=[1 3 2]

 a=diff(x,1)

 b=diff(x,2)

2.4 函数分析与数值积分

2.4.1 函数的表示与调用

function y=humps(x)

y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6

% 以humps.m存放在当前目录中,以备调用。

调用:

 y=humps(0.5)

2.4.2 函数图形的绘制-1

 fplot('humps',[0,2])

 f='2*exp(-x)*sin(x)'

 fplot(f,[0,8]);

2.4.3 函数图形的绘制-2

% 李撒如图形

 x='sin(t)'

 y='cos(t)'

 z='sin(t+pi)'

 figure(1),ezplot(x,y,[0,2*pi])

 figure(2),ezplot(x,z,[0,2*pi])

2.4.4 数值积分

 x='sin(t)'

 q=quad(x,0,pi)

2.4.5 初始值的常微分方程求解

% 函数子程序,文件名:exampfun.m,单独存放

function y=exampfun(t,x)

u=1-(t.^2)/(pi^2);

y=[0,1;-1,0]*x+[0;1]*u;

 

% 主程序,单独存放,文件名不限

clf

t0=0;

tf=3*pi;

x0t=[0;0];

[t,x]=ode45('exampfun',[t0,tf],x0t);

y=x(:,1);

y2=[];

for i=1:length(t)

    y2(i)=(1+2/(pi^2))*(1-cos(t(i)))-t(i)^2/(pi^2);

end

u=1-(t.^2)/(pi^2);

plot(t,y,'-',t,u,'+',t,y2,'o')

legend('数值积分解','输入量','解析解');

1 0
原创粉丝点击