53 实验二 定积分的近似计算 一、问题背景与实验目的 利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分. 本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab 有专门函数可用. 二、相关函数(命令)及简介 1.sum(a):求数组 a 的和. 2.format long:长格式,即屏幕显示 15 位有效数字. (注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度). 3.double():若输入的是字符则转化为相应的ASCII 码;若输入的是整型数值则转化为相应的实型数值. 4.quad():抛物线法求数值积分. 格式: quad(fun,a,b) ,注意此处的fun 是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等. 例:Q = quad('1./(x.^3-2*x-5)',0,2); 5.trapz():梯形法求数值积分. 格式:trapz(x,y) 其中 x 为带有步长的积分区间;y 为数值形式的运算(相当于上面介绍的函数 fun) 例:计算 0sin( )dxx x=0:pi/100:pi;y=sin(x); trapz(x,y) 6.dblquad():抛物线法求二重数值积分. 格式:dblquad(fun,xmin,xmax,ymin,ymax),fun 可以用inline 定义,也可以通过某个函数文件的句柄传递. 例 1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi) 顺便计算下面的Q2,通过计算,比较 Q1 与Q2 结果(或加上手工验算),找出积分变量 x、y 的上下限的函数代入方法. Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi) 例 2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi) 这时必须存在一个函数文件 integrnd.m: 54 function z = integrnd(x, y) z = y*sin(x); 7.fprintf(文件地址,格式,写入的变量):把数据写入指定文件. 例:x = 0:.1:1; y = [x; exp(x)]; fid = fopen('exp.txt','w'); %打开文件 fprintf(fid,'%6.2f %12.8f\n',y); %写入 fclose(fid) %关闭文件 8.syms 变量1 变量2 …:定义变量为符号. 9.sym('表达式'):将表达式定义为符号. 解释:M...