数学实验

田颢

目录

  • 1 第1章 课程概论
    • 1.1 数学实验课程概论
    • 1.2 为什么要学习数学实验课程
    • 1.3 如何学习数学实验课程
    • 1.4 数学实验课程与其他课程的关系
    • 1.5 课程教材简介
    • 1.6 参考书目
  • 2 第二章 MATLAB软件概览
    • 2.1 第一课: MATLAB简介
    • 2.2 第二课:MATLAB的安装与启动
    • 2.3 第三课 常用命令与技巧
    • 2.4 第四课 程序设计基础
  • 3 第三章 微积分实验
    • 3.1 第一课 函数的图像
    • 3.2 第二课 极限的计算
    • 3.3 第三课 导数
    • 3.4 第四课 积分
    • 3.5 第五课 级数
    • 3.6 第六课 微分方程
  • 4 第四章 线性代数实验
    • 4.1 第一课 多项式的计算
    • 4.2 第二课 矩阵计算
    • 4.3 第三课 线性方程
  • 5 第五章 概率统计实验
    • 5.1 第一课 统计数据
    • 5.2 第二课 参数估计
    • 5.3 第三课 随机模拟
  • 6 第六章 综合实验
    • 6.1 第一课 二分法
    • 6.2 第二课 斐波那契序列
    • 6.3 第三课 数独游戏问题
第四课 积分

积分的计算

学习目标

学习和掌握用MATLAB工具求解有关不定积分和定积分的问题,深入理解定积分的概念和几何意义.

学习内容

1 学习MATLAB命令

有关积分的MATLAB命令有:

  1. int(s)  返回符号表达式s的不定积分,默认变量为t.

  2. int(s,x)  返回符号表达式s关于指定变量x的不定积分.

  3. int(s,x,a,b)  返回符号表达式s关于指定变量x的定积分,a、b为积分上、下限.

  4. quad(Fun,a,b,tol)  抛物线积分法(simpson)返回积分值,Fun为被积函数,a,b为积分上、下限,tol为积分精度,缺省值1e-3即1×10-3.

  5. quadl(Fun,a,b,tol)  NewtonCotes积分法返回积分值,Fun为被积函数,a,b为积分上、下限.tol为积分精度,缺省值1e-6.

  6. trapz(x,y)  梯形积分法返回积分值,x为积分区间离散化变量,y表示被积函数,是与x同维数的向量.

对于符号积分,都是用int的命令,通常在前面先用syms来定义表达式中所涉及的变量.int计算出来的值是符号解,是精确值.quad,qual,trapz是数值积分运算命令,不用syms来定义,计算出来的值是近似值.

2 实验内容

2.1 计算不定积分

【例1】 求不定积分.

输入:

  clear
syms x y;
y=exp(2*x)*sin(3*x);
f=int(y,x)

输出为

f =-(exp(2x)(3cos(3x) - 2sin(3x)))/13

运算符int和运算符diff是一对互逆运算,读者可以进行检验.必须指出的是,在初等函数范围内,有些函数是初等不可积的.例如 为初等函数,而却 不能用初等函数表示出来.比如输入命令

例  

syms x

int(sin(x)/x,x)

结果为

ans=sinint(x)

该结果是一个非初等函数sinint(x),称为积分正弦函数.在使用int函数求不定积分时,读者应注意到这种情况.

2.2 计算定积分

【例2】 分别求定积分,,,.

输入:

  clear
syms x a b
y1=int(cos(a*x),x,0,b)
y2=int(1/(x^2+2*x-3),x,2,inf)
y3=int(1/sin(x),x,0,1)
y4=int(sin(x-1)/x-1,x,1,2)

输出为:

y1 =sin(a*b)/a

y2 =log(5)/4

y3 =Inf

y4 =cosint(1)sin(1) - cosint(2)sin(1) - sinint(1)cos(1) + sinint(2)cos(1) - 1

第一个积分表明积分上、下限可以是符号,第二个积分表明可以将int函数推广到广义积分上去.此处,在MATLAB中的log(5)就是ln 5,在MATLAB中,就是用log表示自然对数函数ln.显然,第三个积分表示该广义积分是发散到无穷大,第四个积分表明该广义积分收敛于sinint(1),只是无法用初等函数表示,如果想得到它的一个10位有效数字的近似值,可以输入命令

vpa(y4,10)

 得到

0.946083 0704

该积分约等于0.946 083 0704.

【例3】 计算积分.

输入

  syms x
format long
t=-1:0.1:1;
y=t.^(1/3);
f=@(x)(x.^(1/3));
y1=trapz(t,y)
y2=quadl(f,-1,1)
y3=vpa(int(x^(1/3),-1,1),15)

输出为

y1 =1.106106903775610 + 0.638611118647352i

y2 =1.124999836303145 + 0.649518958327905i

y3 =1.125 + 0.649519052838329i

显然,上述结果是错误的,无论是用trapz函数,quadl函数,还是用int函数.众所周知积分.为何会出现这样的错误呢?这是由于数值计算的方法造成的.数值方法对x是通过 计算,当x≤0时,就会出现复数,这种情况称为假奇异积分.要避免出现这种情况,当x≤0时,就用..编写jifen2.m文件:

  clear;
function y=jifen2(x)
y=x.^(1/3);
if x<0
y=-(-x).^(1/3);
end

得到

clear;

y1=quadl('jifen2',-1,1)

y1=1.236le-006+7.1365e-007i

结果虽然不是零,但是非常接近,可以近似认为是零.使用数值方法计算,有时简单的问题反而得不到理想的结果,请读者碰到具体问题时具体分析.

2.3 计算广义积分

【例4】 计算广义积分.

输入

  format long
ff=@(x)(exp(cos(x)-x.^2))
y1=quadl(ff,-100,100)
y2=quadl(ff,-1e10,1e10)
y3=quadl(ff,-1e20,1e20)
y4=quadl(ff,-1e30,1e30)
y5=quadl(ff,-inf,inf)
y6=vpa(int(exp((cos(x))-x^2),-inf,inf),15)

输出为

y1 =3.989812277383166

y2 =3.989812272585851

Warning: Minimum step size reached; singularity possible.

In quadl (line 96)

y3 =25.814543367399441

Warning: Minimum step size reached; singularity possible.

In quadl (line 96)

y4 =2.581454336739941e+11

Warning: Infinite or Not-a-Number function value encountered.

In quadl (line 100)

y5 =NaN

y6 =3.989812272586

由上面可以看出,本题的广义积分区间 算到得到的y1的答案就已足够满足一般的要求了,当然,算到 得到y2更精确一点.但是把区间算到 得到的y3,y4的答案很显然是错误的,y5干脆是无法算出的,这就说明,并不是区间越大越好.可以取一个适当的区间计算积分值,然后让区间按照某种规律扩大,直至前、后两个积分值的差小于给定精度为止,具体可以参见下面的程序.一般地说,y6这样用符号积分命令int计算出来的答案在其中相对来说应该是最精确的.输入命令

  clear;
ff=@(x)(exp(cos(x)-x.^2));
n=10;
m=2;
c=1e-6;
a=inf;
b=quadl(ff,-n,n);
while abs(a-b)>c
a=b;
n=n*m;
b=quadl(ff,-n,n)
end

结果为

b =3.989812272587003

2.4 计算瑕积分

【例5】 计算瑕积分.

输入

  clc
clear
format long
ff=@(x)(1./(1+cos(x))./sqrt(x));
y1=quadl(ff,1e-5,1)
y2=quadl(ff,1e-10,1)
y3=quadl(ff,1e-100,1)
y4=quadl(ff,0,1)
syms t
y5=vpa(int(1/(1+cos(t))/sqrt(t),0,1),16)

结果为

y1=1.051971682435839

y2=1.055123961405538

y3=5.308783031002335e+30

y4=1.055134167548272

y5=1.055133956869226

上例瑕积分中的0是瑕点,在积分时,为了避免分母为零,常常用很小的数字代替,这里用了le-5,le-10,le-100,太小的数显然超过了计算机的最小步长,在计算y4时,干脆直接用了零,计算机警告分母为零,但是在MATLAB 7.0版本最后都计算出了它们的近似值,也是可以满足一般要求的.当然,还是y5的数值相对来说较好.