matlab数值计算.ppt

上传人:牧羊曲112 文档编号:5439125 上传时间:2023-07-07 格式:PPT 页数:23 大小:341.47KB
返回 下载 相关 举报
matlab数值计算.ppt_第1页
第1页 / 共23页
matlab数值计算.ppt_第2页
第2页 / 共23页
matlab数值计算.ppt_第3页
第3页 / 共23页
matlab数值计算.ppt_第4页
第4页 / 共23页
matlab数值计算.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《matlab数值计算.ppt》由会员分享,可在线阅读,更多相关《matlab数值计算.ppt(23页珍藏版)》请在三一办公上搜索。

1、第5讲MATLAB数值计算二,5.5 傅立叶分析5.6 数值微积分5.7 常微分方程的数值求解5.8 非线性方程的数值求解5.9 稀疏矩阵,5.1 傅立叶分析,MATLAB中,提供了对向量(或直接对矩阵的行或列)进行离散傅立叶变换的函数,其调用格式是:Y=fft(X,n,dim)(1)当X是一个向量时,返回对X的离散傅立叶变换。(2)当X是一个矩阵时,返回一个矩阵并送Y,其列(行)是对X的列(行)的离散傅立叶变换。,例5.1 求X=(1,0,-3,5,2)的离散傅立叶逆变换。在MATLAB命令窗口,输入命令:X=1,0,-3,5,2;Y=fft(X)%对X进行变换3.离散傅立叶变换的逆变换MA

2、TLAB中,对向量(或直接对矩阵的行或列)进行离散傅立叶逆变换的函数的调用方法是:Y=ifft(X,n,dim)函数对X进行离散傅立叶逆变换。其中X、n、dim的意义及用法和离散傅立叶变换函数fft完全相同。,例5.2 对矩阵A的列向量、行向量分别进行离散傅立叶变换、并对变换结果进行逆变换。命令如下:A=3,2,1,1;-5,1,0,1;3,2,1,5;fftA=fft(A)%求A的列向量的傅立叶变换fftA2=fft(A,4,2)%求A的行向量的傅立叶变换ifft(fftA)%对矩阵fftA的列向量进行傅立叶逆变换,结果应等于Aifft(fftA2,4,2)%对矩阵fftA2的行向量进行傅立

3、叶逆变换,其结果应等于A,5.2 数值微积分,5.2.1 数值微分MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数。DX=diff(X)计算向量X的向前差分,DX(i)=X(i+1)-X(i),0in。DX=diff(X,n)计算X的n阶向前差分,diff(X,2)=diff(diff(X)。DX=diff(A,n,dim)计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分,dim=2,按行计算差分。,例5.3 求向量sin(X)的13阶差分。设X由0,2间均匀分布的10个点组成。命令如下:X=linspace(0,2*pi,10);Y=sin(X);DY=dif

4、f(Y);%计算Y的一阶差分D2Y=diff(Y,2);%计算Y的二阶差分,也可用命令diff(DY)计算D3Y=diff(Y,3);%计算Y的三阶差分,也可用diff(D2Y)或diff(DY,2),例5.4 用不同的方法求函数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次

5、多项式p拟合f(x)dp=polyder(p);%对拟合多项式p求导数dpdpx=polyval(dp,x);%求dp在假设点的函数值dx=diff(f(x,3.01)/0.01;%直接对f(x)求数值导数gx=g(x);%求函数f的导函数g在假设点的导数plot(x,dpx,x,dx,g.,x,gx,r-);%作图,5.2.2数值积分(1)被积函数是一个解析式函数quad(f,a,b,tol,trace)用于求被积函数f(x)在a,b上的定积分,tol是计算精度,缺省值是0.001。trace非0时,画出积分图形。注意,调用quad函数时,先要建立一个描述被积函数f(x)的函数文件或语句函数

6、。当被积函数f含有一个以上的变量时,quad函数的调用格式为:quad(f,a,b,tol,trace,g1,g2)其中f,a,b,tol,trace等参数的含义同前。数值积分函数还有一种形式quad8,其用法与quad完全相同。,例5.5 用两种不同的方法求积分。先建立一个函数文件ex.m:function ex=ex(x)ex=exp(-x.2);%注意应用点运算return然后,在MATLAB命令窗口,输入命令:quad(ex,0,1,1e-6)%注意函数名应加字符引号quad8(ex,0,1,1e-6)%用另一函数求积分,例5.6用trapz函数计算积分。在MATLAB命令窗口,输入命

7、令:X=0:0.01:1;Y=exp(-X.2);trapz(X,Y)(2)被积函数由一个表格定义MATLAB中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。其中向量X、Y定义函数关系Y=f(X)。,(3)二重积分例5.8计算二重积分。建立一个函数文件fixy.m:function f=f(x,y)f=exp(-x.2-y.2);return建立一个命令文件ftxy1.m:for i=1:20 int2(i)=quad(fixy,0,1,x(i);%在二维函数fixy中以x=x(i)代入并对y积分。end在MATLAB命令窗口,输入命令:x=linspace(0,1,2

8、0);ftxy1trapz(x,int2),实际上,MATLAB提供了计算二重积分的函数:dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在a,bc,d区域上的二重积分。参数tol,trace的用法与函数quad完全相同。如果直接使用这里介绍的二重积分函数dblquad来求解本例就非常简单,命令如下:g=inline(exp(-x.2-y.2);dblquad(g,0,1,0,1)%直接调用二重积分函数求解,5.3 常微分方程的数值求解,基于龙格库塔法,MATLAB提供了求常微分方程数值解的函数,一般调用格式为:X,Y=ode23(f,x0,xn,y0)X,Y=od

9、e45(f,x0,xn,y0)其中X、Y是两个向量,X对应自变量x在求解区间x1,xn的一组采样点,其采样密度是自适应的,无需指定;Y是与X对应的一组解,f是一个函数,x0,xn代表自变量的求解区间,y0=y(x0),由方程的初值给定。函数在求解区间x0,xn内,自动设立采样点向量X,并求出解函数y在采样点X处的样本值。,例5.7 求微分方程初值问题在1,3区间内的数值解,并将结果与解析解进行比较。先建立一个该函数的m文件fxy1.m:function f=f(x,y)f=-2.*y./x+4*x%注意使用点运算符return再输入命令:X,Y=ode45(fxy1,1,3,2);X%显示自变

10、量的一组采样点Y%显示求解函数与采样点对应的一组数值解(X.2+1./X.2)%显示求解函数与采样点对应的一组解析解,例5.8 求解初值问题在区间0,2中的解。建立一个函数文件 fxy2.m:function f=f(x,y)f(2)=-x.*y(2)+x.2-5;f(1)=y(2);f=f;return在MATLAB命令窗口,输入命令:X,Y=ode45(fxy2,0,2,5,6);X,Y,5.4 非线性方程的数值求解,1单变量非线性方程求解MATLAB中,提供了求解单变量方程的函数fzero(f,x0,tol),该函数采用迭代法计算函数f(x)的一个零点,迭代初值为x0,当两次迭代结果小于

11、tol时停止迭代过程。tol的缺省值是eps。注意,在调用函数fzero 之前,要使用m文件建立自己要计算的函数f(x),只有定义了函数f(x)的m文件后,才能在fzero函数的参数中使用自定义函数名。,例5.9 求f(x)=x-+5 在x0=-5和x0=1作为迭代初值时的零点。先编制一个函数文件fz.m:function f=f(x)f=x-1/x+5;然后,在MATLAB命令窗口,输入命令:fzero(fz,-5)%以-5作为迭代初值Zero found in the interval:-4.8,-5.2.fzero(fz,1),2非线性方程组求解函数fsolve调用格式为:X=fsolv

12、e(F,X0)例5.10 求方程组在(1,1,1)附近的解并对结果进行验证。首先建立方程的函数文件fxyz1.m:function F=F(X)x=X(1);y=X(2);z=X(3);F(1)=sin(x)+y+z2*exp(x);F(2)=x+y*z;F(3)=x*y*z;在MATLAB命令窗口,输入命令:X=fsolve(fxyz1,1,1,1)%求解X的三个分量x、y、zY=fxyz1(X)%检验所求结果X是否满足原方程组norm(Y)%求Y向量的模,例5.11 求圆和直线的两个交点。建立方程组函数文件fxyz2.m:function F=F(X)x=X(1);y=X(2);z=X(3

13、);F(1)=x2+y2+z2-9;F(2)=3*x+5*y+6*z;F(3)=x-3*y-6*z-1;在MATLAB命令窗口,输入命令:X1=fsolve(fxyz2,-1,1,-1)%求直线与球面的第一个交点X2=fsolve(fxyz2,1,-1,1)%求直线与球面的第二个交点,5.5 稀疏矩阵,5.5.1 矩阵存储方式1.矩阵的完全存储模式2.稀疏矩阵的存储方式5.5.2 稀疏存储方式的产生与转化1.将一个完全存储方式的转化为稀疏存储方式函数B=sparse(A)将矩阵A转化为稀疏存储方式的矩阵B。sparse函数还有其他一些格式:sparse(m,n)生成一个mn的所有元素都是0的稀

14、疏矩阵。sparse(u,v,S)u、v、S是三个等长的向量。此外,还有一些和稀疏矩阵操作有关的函数。例如U,V,S=find(A)返回矩阵A中非0元素的下标和元素。这里产生的U、V、S可作为sparse(u,v,s)的参数。full(A)返回和稀疏存储矩阵A对应的完全存储方式矩阵。,2.产生一个稀疏矩阵把要建立的稀疏矩阵的非0元素及其所在行和列的位置表示出来后由MATLAB自己产生其稀疏存储方式,这需要使用spconvert函数。调用格式为:B=spconvert(A)其中A为一个m3或m4的矩阵,其每行表示一个非0元素,m是非0元素的个数。3.单位稀疏矩阵的产生单位矩阵只有对角线元素为1,其他元素都为0,是一种具有稀疏特征的矩阵。我们知道,函数eye产生一个完全存储方式的单位矩阵。MATLAB还有一个产生稀疏存储方式的单位矩阵的函数,这就是speye。函数speye(m,n)返回一个mn的稀疏存储单位矩阵。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号