mat实验7 数值微分和数值积分(2)

更新时间:2023-11-03 17:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB 程序设计实验7

数值微分和数值积分

姓名: 班级: 电信1105 学号: 14041107

2014.6.13

一、实验目的

1.掌握微分的数值计算方法。 2.掌握积分的数值计算方法。

二、实验内容

1、求定积分。

a)

I??20sinxdx x??11??6?dx b) I???220???x?0.3??0.01?x?0.9??0.04??1解:代码及结果如下:

function yp=test(x) yp=sin(x)./x;

>> [I,err]=quadgk(@test,0,2) I = 1.6054

err = 8.0491e-17

function yp=test(x)

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

>> [S,n]=quadl(@test,0,1,10^-10,0) S = 11.7006 n = 768

2、求二重定积分。

A)I?B)I????01100exp??x2?y2?dxdy cos?x?y?dxdy

?????0解:代码及结果如下:

>> fx=inline('exp(-(x.^2+y.^2))','x','y'); >> dblquad(fx,0,1,0,1,10^-10) ans = 0.5577

>> fx=inline('abs(cos(x+y))','x','y'); >> dblquad(fx,0,pi,0,pi,10^-10) ans = 6.2832

3、分别用矩形、梯形公式计算表1中数据给出的定积分,I??k xk f(xk) 1 0.3 0.3895 2 0.5 0.6598 3 0.7 0.9147 4 0.9 1.1611 5 1.1 1.3971 6 1.50.3f?x?dx。

7 1.5 1.8325 1.3 1.6212 解:代码及结果如下: >> x=0.3:0.2:1.5;

>> y=[0.3895 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325]; >> trapz(x,y) ans = 1.3730

设x由?0:2??区间内均匀分布的10个点组成,求向量sinx的1~3阶差分。

>> x=linspace(0,2*pi,10); >> y=sin(x); >> DX=diff(y,1) DX =

0.6428 0.3420 -0.1188 -0.5240 -0.6840 -0.5240 -0.1188 0.3420 0.6428 >> DX=diff(y,2) DX =

-0.3008 -0.4608 -0.4052 -0.1600 0.1600 0.4052 0.4608 0.3008 >> DX=diff(y,3) DX =

-0.1600 0.0556 0.2452 0.3201 0.2452 0.0556 -0.1600

4、设

f?x??sinx

x?cos2x用三种不同的方法求函数f?x?的数值导数,并在同一个坐标系中画出f'?x?的图像。 解:方法一:用一个5次多项式p(x)拟合函数p(x),并对p(x)求一般意义下的导数dp(x),求出dp(x)在假设点的值; 方法二:直接求f(x)在假设点的数值导数; 方法三:求出f'?x??设点的导数。 代码如下:

f=inline('sin(x)./(x+cos(2*x))','x');

g=inline('(cos(x).*(x+cos(2*x))-sin(x).*(1-2*sin(2*x)))./(x+cos(2*x)).^2','x'); x=-pi:0.1:pi;

cosx??x?cos2x??sinx??1?2sin2x?,然后直接求f’(x)在假

?x?cos2x?2

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);

plot(x,dpx,x,dx,'.',x,gx,'-');%作图

legend('多项式拟合法','直接求道法','导函数法');

6004002000-200-400-600-800-1000 -4多项式拟合法直接求道法导函数法 -3-2-101234

250多项式拟合法直接求道法导函数法200150100500-50 -1.5-1-0.500.5

图 导数曲线的局部

1?5、求三重定积分I??00???04xzexp??z2y?x2?dxdydz。

解:代码及结果如下:

>> fxyz=inline('4*x.*z.*exp(-z.^2.*y-x.^2)','x','y','z'); >> triplequad(fxyz,0,pi,0,pi,0,1)

ans = 1.7328

6、设f?x??sinx,

1)用一个5次多项式p?x?拟合函数f?x?,并对p?x?求一般意义下的导数dp?x?,求出dp?x?在假设点的值。 2)用diff函数直接求

f?x?在假设点的数值导数。

3)先求出导函数f'?x??cosx,然后直接求f'?x??cosx在假设点的导数。

解:代码及结果如下:

f=inline('sin(x)','x'); g=inline('cos(x)','x'); x=-pi:0.01:pi;

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);

plot(x,dpx,x,dx,'.',x,gx,'-');%作图

legend('多项式拟合法','直接求道法','导函数法');

1.5 多项式拟合法直接求道法导函数法10.50-0.5-1-1.5 -3-2-10123

0.99多项式拟合法直接求道法导函数法0.980.970.960.950.940.93 -0.34-0.32-0.3-0.28-0.26-0.24-0.22

本文来源:https://www.bwwdw.com/article/ifo2.html

Top