matlab基础 三、数值微分与积分

1、数值微分
有两种方式计算任意函数f(x)在给定点x的数值导数。第一种方式是用多项式或样条函数g(x)对f(x)进行逼近(插值或拟合),然后用逼近函数g(x)在点x处的导数作为f(x)在点x处的导数。第二种方式是用f(x)在点x处的某种差商作为其导数。在这里插入图片描述
在MATLAB中,只有计算向前差分函数diff,其调用格式为:
DX=diff(X)计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1。
DX=diff(X,n)计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。
DX=diff(A,n,dim) 计算矩阵A的n阶差分。
dim=1(默认状态),按列计算差分;dim=2,按行计算差分。

例题:设f(x) = sqrt(x^3 + 2*x^2 - x + 12)+(x+5)^(1/6)+5x+2
用不同的方法求函数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,'-');	%作图
	

在这里插入图片描述
2、数值积分
被积函数一般是用一个解析式给出,但也有很多情况下用一个表格形式给出。
在MATLAB中,对这两种给定被奇函数的方法,提供了不同的数值积分函数。
1)被积函数是一个解析式
MATLAB提供了quad函数和quadl函数来求定积分。它的调用格式为:
quad(filename,a,b,tol,trace)
quadl(filename,a,b,tol,trace)
其中filename是被积函数名。a和b分别是定积分的下限和上限。
tol用来控制积分精度,默认时取tol=10-6。trace控制是否展现积分过程,
若取非0则展现积分过程,取0则不展现,默认时取trace=0。
2)被积函数有一个表格定义
在科学试验和工程应用中,函数关系往往是不知道的,只有试验测定的一组样本点和样本值,这时,就无法使用quad函数计算其定积分。在MATLAB中,对由表格形式定义的函数关系的求定积分问题使用trapz(X,Y)函数。其中向量X、Y定义函数关系Y=f(X)。X、Y是两个等长的向量:X=(x1,x2…,xn).Y=(y1,y2…,yn),并且x1<x2<…<xn,积分区间是[x1,xn]。

例题:用trapz函数计算:
I=∫(0,1) e^(-x ^ 2) dx
在MATLAB命令窗口,输入命令:

X=0:0.01:1;
Y=exp(-X.^2);
trapz(X,Y)

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值