实验四 数值积分和数值微分
在实际问题中我们常常需要计算定积分。但在很多情况下,并不能利用牛顿-莱布尼兹公式方便地计算函数的定积分,因此,有必要研究定积分的数值计算问题。牛顿-科特斯公式是在等距节点情形下的插值型求积公式,其简单情形如梯形公式、抛物线公式等。复化求积公式是改善求积公式精度的一种行之有效的方法,特别是复化梯形公式、复化抛物线公式,使用方便,在实际计算中常常使用。龙贝格求积公式是在区间逐次分半过程中,对用梯形法所得的近似值进行多级"修正",而获得的准确程度较高的求积分近似值的一种方法。当然,对具体实际问题而言,一个公式使用的效果如何,与被积分的函数性态及计算结果的精度要求等有关,我们要根据具体问题,选择合适的公式进行计算。
微分是高等数学中的基本运算。一方面它是一些非常重要的数学工具(微分方程、概率论等)的基础,另一方面它在实际问题中也有着许多直接的应用。
一、实验目的
1、理解数值积分的概念,掌握各种数值积分方法,包括梯形公式、抛物线公式、复化求积公式等;
2、通过实际计算体会各种数值积分方法的精确度;
3、理解数值求导的概念,掌握各种数值求导的方法。
二、算法实例
1.梯形公式的 MATLAB 程序
function T=rctrap(fun,a,b,m)
n=1;h=b-a; T=zeros(1,m+1); x=a;
T(1)=h*(feval(fun,a)+feval(fun,b))/2;
for i=1:m
h=h/2; n=2*n; s=0;
for k=1:n/2
x=a+h*(2*k-1); s=s+feval(fun,x);
end
T(i+1)=T(i)/2+h*s;
end
T=T(1+m)
例 4.1
用 rctrap 计算 I = 1 2 π ∫ 0 π 2 e − x 2 2 d x I = \frac { 1 } { \sqrt { 2 \pi } } \int _ { 0 } ^ { \frac { \pi } { 2 } } e ^ { - \frac { x ^ { 2 } } { 2 } } d x I=2π1∫02πe−2x2dx,递归 14 次,并将计算结果与精确值比较.
fun=@(t)exp((-t^2)/2)/(sqrt(2*pi)); T=rctrap(fun,0,pi/2,14), syms t fi=int(exp((-t^2)/2)/(sqrt(2*pi)),t,0, pi/2); Fs= double(fi), wT= double(abs(fi-T)) % 运行后屏幕显示I精确值Fs,用rctrap 计算I的递归值T和T与精确值Fs的绝对误差wT
2.复合辛普森(Simpson)数值积分的 MATLAB 主程序
function y=comsimpson(fun,a,b,n)
z1=feval (fun,a)+ feval (fun,b);m=n/2;
h=(b-a)/(2*m); x=a;
z2=0; z3=0; x2=0; x3=0;
for k=2:2:2*m
x2=x+k*h; z2= z2+2*feval (fun,x2);
end
for k=3:2:2*m
x3=x+k*h; z3= z3+4*feval (fun,x3);
end
y=(z1+z2+z3)*h/3;
例 4.2
用 comsimpson.m 和 quad.m 分别计算定积分 I = 1 2 π ∫ 0 1 e − x 2 2 d x I = \frac { 1 } { \sqrt { 2 \pi } } \int _ { 0 } ^ { 1 } e ^ { - \frac { x ^ { 2 } } { 2 } } d x I=2π