当前位置:文档之家› 第06章_MATLAB数值计算_例题源程序汇总

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。

13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。

也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。

也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。

A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。

也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。

X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。

x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。

X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。

185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。

x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format longinterp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。

T=0:5:65; X=2:5:57;F=[3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,...6725.3,6848.3,6403.5,6824.7,7328.5,7857.6];F1=interp1(T,F,X) %用线性插值方法插值F1=interp1(T,F,X,'nearest') %用最近点插值方法插值F1=interp1(T,F,X,'spline') %用3次样条插值方法插值F1=interp1(T,F,X,'cubic') %用3次多项式插值方法插值例6.9设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行插值。

x=0:0.1:1;y=0:0.2:2;[X,Y]=meshgrid(x,y); %产生自变量网格坐标Z=X.^2+Y.^2; %求对应的函数值interp2(x,y,Z,0.5,0.5) %在(0.5,0.5)点插值interp2(x,y,Z,[0.5 0.6],0.4) %在(0.5,0.4)点和(0.6,0.4)点插值interp2(x,y,Z,[0.5 0.6],[0.4 0.5]) %在(0.5,0.4)点和(0.6,0.5)点插值%下一命令在(0.5,0.4),(0.6,0.4),(0.5,0.5)和(0.6,0.5)各点插值interp2(x,y,Z,[0.5 0.6]',[0.4 0.5])例6.10某实验对一根长10米的钢轨进行热源的温度传播测试。

用x表示测量点(米),用h表示测量时间(秒),用T表示测得各点的温度(℃),测量结果如表6.2所示。

试用3次多项式插值求出在一分钟内每隔10秒、钢轨每隔0.5米处的温度。

x=0:2.5:10;h=[0:30:60]';T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:0.5:10];hi=[0:10:60]';temps=interp2(x,h,T,xi,hi,'cubic');mesh(xi,hi,temps);例6.11 用一个3次多项式在区间[0,2π]内逼近函数x sin 。

X=linspace(0,2*pi,50); Y=sin(X);P=polyfit(X,Y,3) %得到3次多项式的系数和误差 X=linspace(0,2*pi,20); Y=sin(X); Y1=polyval(P,X) plot(X,Y,':o',X,Y1,'-*')例6.12 设54322()352756()353f x x x x x xg x x x =-+-++=+-(1) 求f (x )+g (x )、f (x )-g (x )。

(2) 求f (x )×g (x )、f (x )/g (x )。

f=[3,-5,2,-7,5,6];g=[3,5,-3];g1=[0,0,0,g]; f+g1 %求f(x)+g(x) f-g1 %求f(x)-g(x) conv(f,g) %求f(x)*g(x)[Q,r]=deconv(f,g) %求f(x)/g(x),商式送Q ,余式送r 。

例6.13 求有理分式的导数。

5421096323585()10567100x x x x f x x x x x x +-+-=+++-- P=[3,5,0,-8,1,-5];Q=[10,5,0,0,6,0,0,7,-1,0,-100]; [p,q]=polyder(P,Q)例6.14 已知多项式x 4+8x 3-10,分别取x =1.2和一个2×3矩阵为自变量计算该多项式的值。

A=[1,8,0,0,-10]; %4次多项式系数 x=1.2; %取自变量为一数值 y1=polyval(A,x)x=[-1,1.2,-1.4;2,-1.8,1.6] %给出一个矩阵xy2=polyval(A,x) % 分别计算矩阵x 中各元素为自变量的多项式之值例6.15 仍以多项式x 4+8x 3-10为例,取一个2×2矩阵为自变量分别用polyval 和polyvalm计算该多项式的值。

A=[1,8,0,0,-10]; %多项式系数 x=[-1,1.2;2,-1.8] %给出一个矩阵x y1=polyval(A,x) %计算代数多项式的值 y2=polyvalm(A,x) %计算矩阵多项式的值例6.16 求多项式x 4+8x 3-10的根。

A=[1,8,0,0,-10]; x=roots(A)例6.17 已知52.7543)(235+--+=x x x x x f(1) 计算f (x )=0的全部根。

(2) 由方程f (x )=0的根构造一个多项式g (x ),并与f (x )进行对比。

P=[3,0,4,-5,-7.2,5];X=roots(P) %求方程f(x)=0的根 G=poly(X) %求多项式g(x)例6.18 设x 由[0,2π]间均匀分布的10个点组成,求x sin 的1~3阶差分。

X=linspace(0,2*pi,10); Y=sin(X);DY=diff(Y); %计算Y 的一阶差分D2Y=diff(Y,2); %计算Y 的二阶差分,也可用命令diff(DY)计算 D3Y=diff(Y,3); %计算Y 的三阶差分,也可用diff(D2Y)或diff(DY,2)例6.19 设255122)(623+++++-+=x x x x x x f用不同的方法求函数f (x )的数值导数,并在同一个坐标系中做出f '(x )的图像。

f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+1/6./(x+5).^(5/6)+5'); x=-3:0.01:3;p=polyfit(x,f(x),5); %用5次多项式p 拟合f(x) dp=polyder(p); %对拟合多项式p 求导数dp dpx=polyval(dp,x); %求dp 在假设点的函数值 dx=diff(f([x,3.01]))/0.01; %直接对f(x)求数值导数gx=g(x); %求函数f 的导函数g 在假设点的导数plot(x,dpx,x,dx,'.',x,gx,'-'); %作图例6.20 用两种不同的方法求:210e d x I x -=⎰先建立一个函数文件ex.m :function ex=ex(x) ex=exp(-x.^2);然后在MATLAB 命令窗口,输入命令:format longI=quad('ex',0,1) %注意函数名应加字符引号 I=quadl('ex',0,1)例6.21 用trapz 函数计算:210ed x I x -=⎰X=0:0.01:1; Y=exp(-X.^2); trapz(X,Y)例6.22 计算二重定积分212/2212e sin()d d xI x y x y ---=+⎰⎰(1) 建立一个函数文件fxy.m :function f=fxy(x,y) global ki;ki=ki+1; %ki 用于统计被积函数的调用次数 f=exp(-x.^2/2).*sin(x.^2+y); (2) 调用dblquad 函数求解。

相关主题