第三章 微积分问题的计算机求解 微积分问题的解析解 函数的级数展开与级数求和问题求解 数值微分 数值积分问题 曲线积分与曲面积分的计算.

Slides:



Advertisements
Similar presentations
数值分析 第五节 数值微分 在实际问题中,往往会遇到某函数 f(x) 是用表格 表示的, 用通常的导数定义无法求导, 因此要寻求其他 方法近似求导。常用的数值微分方法有 : 一. 运用差商求数值微分 二.运用插值函数求数值微分 三. 运用样条插值函数求数值微分 四. 运用数值积分求数值微分.
Advertisements

高等数学( XJD ) 第二章 导数与微分 返回 高等数学( XAUAT ) 高等数学( XJD ) 求导法则 基本公式 导 数 导 数 微 分微 分 微 分微 分 求导方法 高阶导数 微分法则 导数与微分关系图导数与微分关系图.
第一节 不定积分的概念及其 计算法概述 一、原函数与不定积分的概念 二、基本积分表 三、不定积分的性质及简单计算 四、小结.
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
第二章 导数与微分 习题课 主要内容 典型例题 测验题. 求 导 法 则求 导 法 则 求 导 法 则求 导 法 则 基本公式 导 数 导 数 微 分微 分 微 分微 分 高阶导数 高阶微分 一、主要内容.
目录 上页 下页 返回 结束 习题课 一、导数和微分的概念及应用 二、导数和微分的求法 导数与微分 第二章.
第九章 常微分方程数值解法 §1 、引言. 微分方程的数值解:设方程问题的解 y(x) 的存在区间是 [a,b] ,令 a= x 0 < x 1
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
高 等 数 学高 等 数 学 内蒙古科技大学公共数学教学部 主编:李淑俊. 引言 第一章 函数与极限 第二章 导数与微分 第三章 微分中值定理与导数的应用 第四章 不定积分 第五章 定积分 第六章 定积分的应用 目 录 目录 下一页 目录 下一页.
高等数学一 主讲 杨俊 演示文稿制作 杨俊. 高等数学一 第 3 章 一元函数微分学的应用 第 4 章 一元函数 积分学及应用 第 1 章 函数、极限与连续 第 2 章 导数与微分.
第 4 章 不定积分 4.1 不定积分的概念与基本积分公式 4.2 换元积分法 4.3 分部积分法.
第 4 章 数值微积分. 4.1 内插求积 Newton-Cotes 公式 第 4 章 数值微积分 4.1 内插求积 Newton-Cotes 公式.
1 、牛顿 - 莱布尼兹公式 另外若给出的函数 f(x) 是数据表,也不好求函数的积分。 计算定积分的方法: 但是求函数 f(x) 的原函数 F(x) 不一定比计算积分容易, 例如函数 找不到用初等函数表示的原函数。 一、数值求积的基本思想 实验 4 数值积分与微分 主讲人:魏志强.
第二章 导数与微分 一. 内 容 要 点 二. 重 点 难 点 三. 主 要 内 容 四. 例 题与习题.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
第三节 微分 3.1 、微分的概念 3.2 、微分的计算 3.3 、微分的应用. 一、问题的提出 实例 : 正方形金属薄片受热后面积的改变量.
8.1 不定积分的概念和基本积分公式  原函数和不定积分  基本积分公式表  不定积分的线性运算法则 第八章 不定积分.
高等数学 重庆交通学院 (下册总复习) 冯春 第八章 多元函数微分学 第九章 重 积 分 第十 章 曲线与曲面积分 第十一章 无穷级数 第七章 空间解析几何 第十二章 微分方程 目 录.
例题 教学目的: 微积分基本公式 教学重点: 牛顿----莱布尼兹公式 教学难点: 变上限积分的性质与应用.
恰当方程(全微分方程) 一、概念 二、全微分方程的解法.
高等数学电子教案 第五章 定积分 第三节 微积分基本定理.
第二部分 微积分问题的计算机求解 《数学分析》实验课.
第五节 微积分基本公式 、变速直线运动中位置函数与速度 函数的联系 二、积分上限函数及其导数 三、牛顿—莱布尼茨公式.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第二节 微积分基本公式 1、问题的提出 2、积分上限函数及其导数 3、牛顿—莱布尼茨公式 4、小结.
第四章 定积分及其应用 4.3 定积分的概念与性质 微积分基本公式 定积分的换元积分法与分部积分法 4.5 广义积分
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
9.1 数值积分基本方法 9.2 梯形积分 9.3 Simpson积分 9.4 Newton-Cotes积分 9.5 Romberg积分
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
第四章 一元函数的积分 §4.1 不定积分的概念与性质 §4.2 换元积分法 §4.3 分部积分法 §4.4 有理函数的积分
第四章 数值积分与数值微分 — 基本概念 — Newton-Cotes 公式.
计算方法 第2章 数值微分与数值积分 2.1 数值微分.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
利用定积分求平面图形的面积.
定积分习题课.
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
1.5 场函数的高阶微分运算 1、场函数的三种基本微分运算 标量场的梯度f ,矢量场的散度F 和F 旋度简称 “三度” 运算。
全 微 分 欧阳顺湘 北京师范大学珠海分校
第三章 导数与微分 习 题 课 主要内容 典型例题.
2-7、函数的微分 教学要求 教学要点.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
Application of Matlab Language
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
数学模型实验课(三) 插值与三维图形.
高等数学 西华大学应用数学系朱雯.
1.函数 2.程序 3.图形 目的:掌握Matlab作平面曲线图的方法与技巧
第6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解
二元一次聯立方程式 代入消去法 加減消去法 自我評量.
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
第三单元 第3课 实验 多元函数的积分 实验目的:掌握matlab计算二重积分与三重积分的方法,提高应用重积分解决有关应用问题的能力。
实验一 计算复变函数极限、微分、积分、 留数、泰勒级数展开式 (一) 实验类型:验证性 (二) 实验类别:基础实验
第五节 对坐标的曲面积分 一、 对坐标的曲面积分的概念与性质 二、对坐标的曲面积分的计算法 三、两类曲面积分的联系.
作业 P158 习题 2 1(2)(4) (5). 2(1). 预习 P156— /5/2.
第三单元 第2课 实验 一元函数的积分 实验目的:掌握matlab求解有关不定积分和定积分的问题,深入理解定积分的概念和几何意义。
第一节 不定积分的概念与性质 一、原函数与不定积分的概念 二、不定积分的几何意义 三、基本积分表 四、不定积分的性质 五、小结 思考题.
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
建模常见问题MATLAB求解  .
高中数学选修 导数的计算.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
第三部分 积分(不定积分 + 定积分) 在课程简介中已经谈到, 高等数学就是微积分(微分 + 积分). 第二部分已经学习了函数的导数和微分, 这一部分内容是“积分”. 由此可见,这一部分内容在本课程中的重要地位. 积分就是讨论导数的逆问题: 给定了函数f(x),哪些函数的导数就是f(x)? “积分”包括了不定积分和定积分,它们也是每个学习高等数学的人必须掌握的内容.
§3 函数的单调性.
第四章 函数的 积分学 第七节 定积分的换元积分法     与分部积分法 一、定积分的换元积分法 二、定积分的分部积分法.
教学大纲(甲型,54学时 ) 教学大纲(乙型, 36学时 )
§ 9.1常用数学软件简介及MATLAB基础知识
第一节 不定积分的概念与性质 原函数与不定积分的概念 基本积分表 不定积分的性质 小结、作业 1/22.
实验二 定积分的近似计算.
Presentation transcript:

第三章 微积分问题的计算机求解 微积分问题的解析解 函数的级数展开与级数求和问题求解 数值微分 数值积分问题 曲线积分与曲面积分的计算

3.1 微积分问题的解析解 3.1.1 极限问题的解析解 单变量函数的极限 格式1: L= limit( fun, x, x0) 3.1 微积分问题的解析解 3.1.1 极限问题的解析解 单变量函数的极限 格式1: L= limit( fun, x, x0) 格式2: L= limit( fun, x, x0, ‘left’ 或 ‘right’)

例: 试求解极限问题 例:求解单边极限问题 >> syms x a b; >> f=x*(1+a/x)^x*sin(b/x); >> L=limit(f,x,inf) L = exp(a)*b 例:求解单边极限问题 >> syms x; >> limit((exp(x^3)-1)/(1-cos(sqrt(x-sin(x)))),x,0,'right') ans = 12

在(-0.1,0.1)区间绘制出函数曲线: >> x=-0.1:0.001:0.1; >> y=(exp(x.^3)-1)./(1-cos(sqrt(x-sin(x)))); Warning: Divide by zero. (Type "warning off MATLAB: divideByZero" to suppress this warning.) >> plot(x,y,'-',[0], [12],'o')

多变量函数的极限: 格式: L1=limit(limit(f,x,x0),y,y0) 或 L1=limit(limit(f,y,y0), x,x0) 如果x0 或y0不是确定的值,而是另一个变量的函数,如x->g(y),则上述的极限求取顺序不能交换。

例:求出二元函数极限值 >> syms x y a; >> f=exp(-1/(y^2+x^2)) … *sin(x)^2/x^2*(1+1/y^2)^(x+a^2*y^2); >> L=limit(limit(f,x,1/sqrt(y)),y,inf) L = exp(a^2)

3.1.2 函数导数的解析解 函数的导数和高阶导数 例: 格式: y=diff(fun,x) %求导数 y= diff(fun,x,n) %求n阶导数 例: 一阶导数: >> syms x; f=sin(x)/(x^2+4*x+3); >> f1=diff(f); pretty(f1)

--------------- - ------------------- 2 2 2 x + 4 x + 3 (x + 4 x + 3) cos(x) sin(x) (2 x + 4) --------------- - ------------------- 2 2 2 x + 4 x + 3 (x + 4 x + 3) 原函数及一阶导数图: >> x1=0:.01:5; >> y=subs(f, x, x1); >> y1=subs(f1, x, x1); >> plot(x1,y,x1,y1,‘:’) 更高阶导数: >> tic, diff(f,x,100); toc elapsed_time = 4.6860

原函数4阶导数 >> f4=diff(f,x,4); pretty(f4) 2 sin(x) cos(x) (2 x + 4) sin(x) (2 x + 4) ------------ + 4 ------------------- - 12 ----------------- 2 2 2 2 3 x + 4 x + 3 (x + 4 x + 3) (x + 4 x + 3) 3 sin(x) cos(x) (2 x + 4) cos(x) (2 x + 4) + 12 --------------- - 24 ----------------- + 48 ---------------- 2 2 2 4 2 3 (x + 4 x + 3) (x + 4 x + 3) (x + 4 x + 3) 4 2 sin(x) (2 x + 4) sin(x) (2 x + 4) sin(x) + 24 ----------------- - 72 ----------------- + 24 --------------- 2 5 2 4 2 3 (x + 4 x + 3) (x + 4 x + 3) (x + 4 x + 3)

多元函数的偏导: 例: 求其偏导数并用图表示。 格式: f=diff(diff(f,x,m),y,n) 或 f=diff(diff(f,y,n),x,m) 例: 求其偏导数并用图表示。 >> syms x y z=(x^2-2*x)*exp(-x^2-y^2-x*y); >> zx=simple(diff(z,x)) zx = -exp(-x^2-y^2-x*y)*(-2*x+2+2*x^3+x^2*y-4*x^2-2*x*y)

直接绘制三维曲面 >> zy=diff(z,y) zy = (x^2-2*x)*(-2*y-x)*exp(-x^2-y^2-x*y) 直接绘制三维曲面 >> [x,y]=meshgrid(-3:.2:3,-2:.2:2); >> z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); >> surf(x,y,z), axis([-3 3 -2 2 -0.7 1.5])

>> contour(x,y,z,30), hold on % 绘制等值线 >> zx=-exp(-x.^2-y.^2-x.*y).*(-2*x+2+2*x.^3+x.^2.*y-4*x.^2-2*x.*y); >> zy=-x.*(x-2).*(2*y+x).*exp(-x.^2-y.^2-x.*y); % 偏导的数值解 >> quiver(x,y,zx,zy) % 绘制引力线

>> syms x y z; f=sin(x^2*y)*exp(-x^2*y-z^2); 例 >> syms x y z; f=sin(x^2*y)*exp(-x^2*y-z^2); >> df=diff(diff(diff(f,x,2),y),z); df=simple(df); >> pretty(df) 2 2 2 2 2 -4 z exp(-x y - z ) (cos(x y) - 10 cos(x y) y x + 4 2 4 2 2 4 2 2 sin(x y) x y+ 4 cos(x y) x y - sin(x y))

多元函数的Jacobi矩阵: 格式:J=jacobian(Y,X) 其中,X是自变量构成的向量,Y是由各个函数构成的向量。

例: 试推导其 Jacobi 矩阵 >> syms r theta phi; >> x=r*sin(theta)*cos(phi); >> y=r*sin(theta)*sin(phi); >> z=r*cos(theta); >> J=jacobian([x; y; z],[r theta phi]) J = [ sin(theta)*cos(phi), r*cos(theta)*cos(phi), -r*sin(theta)*sin(phi)] [ sin(theta)*sin(phi), r*cos(theta)*sin(phi), r*sin(theta)*cos(phi)] [ cos(theta), -r*sin(theta), 0 ]

隐函数的偏导数: 格式:F=-diff(f,xj)/diff(f,xi)

例: >> syms x y; f=(x^2-2*x)*exp(-x^2-y^2-x*y); >> pretty(-simple(diff(f,x)/diff(f,y))) 3 2 2 -2 x + 2 + 2 x + x y - 4 x - 2 x y - ----------------------------------------- x (x - 2) (2 y + x)

3.1.3 积分问题的解析解 不定积分的推导: 例: 用diff() 函数求其一阶导数,再积分,检验是否可以得出一致的结果。 格式: F=int(fun,x) 例: 用diff() 函数求其一阶导数,再积分,检验是否可以得出一致的结果。 >> syms x; y=sin(x)/(x^2+4*x+3); y1=diff(y); >> y0=int(y1); pretty(y0) % 对导数积分 sin(x) sin(x) - 1/2 ------ + 1/2 ------ x + 3 x + 1

对原函数求4 阶导数,再对结果进行4次积分 >> y4=diff(y,4); >> y0=int(int(int(int(y4)))); >> pretty(simple(y0)) sin(x) ------------ 2 x + 4 x + 3

例:证明 >> syms a x; f=simple(int(x^3*cos(a*x)^2,x)) f = 1/16*(4*a^3*x^3*sin(2*a*x)+2*a^4 *x^4+6*a^2*x^2*cos(2*a*x)-6*a*x*sin(2*a*x)-3*cos(2*a*x)-3)/a^4 >> f1=x^4/8+(x^3/(4*a)-3*x/(8*a^3))*sin(2*a*x)+... (3*x^2/(8*a^2)-3/(16*a^4))*cos(2*a*x); >> simple(f-f1) % 求两个结果的差 ans = -3/16/a^4

定积分与无穷积分计算: 格式: I=int(f,x,a,b) 格式: I=int(f,x,a,inf)

例: >> syms x; I1=int(exp(-x^2/2),x,0,1.5) %无解 I1 = 1/2*erf(3/4*2^(1/2))*2^(1/2)*pi^(1/2) >> vpa(I1,70) ans = 1.085853317666016569702419076542265042534236293532156326729917229308528 >> I2=int(exp(-x^2/2),x,0,inf) I2 = 1/2*2^(1/2)*pi^(1/2)

多重积分问题的MATLAB求解 例: >> syms x y z; f0=-4*z*exp(-x^2*y-z^2)*(cos(x^2*y)-10*cos(x^2*y)*y*x^2+... 4*sin(x^2*y)*x^4*y^2+4*cos(x^2*y)*x^4*y^2-sin(x^2*y)); >> f1=int(f0,z);f1=int(f1,y);f1=int(f1,x); >> f1=simple(int(f1,x)) f1 = exp(-x^2*y-z^2)*sin(x^2*y)

顺序的改变使化简结果不同于原函数,但其误差为0,表明二者实际完全一致。这是由于积分顺序不同,得不出实际的最简形式。 >> f2=int(f0,z); f2=int(f2,x); f2=int(f2,x); >> f2=simple(int(f2,y)) f2 = 2*exp(-x^2*y-z^2)*tan(1/2*x^2*y)/(1+tan(1/2*x^2*y)^2) >> simple(f1-f2) ans = 顺序的改变使化简结果不同于原函数,但其误差为0,表明二者实际完全一致。这是由于积分顺序不同,得不出实际的最简形式。

例: >> syms x y z >> int(int(int(4*x*z*exp(-x^2*y-z^2),x,0,1),y,0,pi),z,0,pi) ans = (Ei(1,4*pi)+log(pi)+eulergamma+2*log(2))*pi^2*hypergeom([1],[2],-pi^2) Ei(n,z)为指数积分,无解析解,但可求其数值解: >> vpa(ans,60) 3.10807940208541272283461464767138521019142306317021863483588

3.2 函数的级数展开与 级数求和问题求解 3.2.1 Taylor 幂级数展开 3.2.2 Fourier 级数展开 3.2 函数的级数展开与 级数求和问题求解 3.2.1 Taylor 幂级数展开 3.2.2 Fourier 级数展开 3.2.3 级数求和的计算

3.2.1 Taylor 幂级数展开 3.2.1.1 单变量函数的 Taylor 幂级数展开

>> syms x; f=sin(x)/(x^2+4*x+3); 例: >> syms x; f=sin(x)/(x^2+4*x+3); >> y1=taylor(f,x,9); pretty(y1) 2 23 3 34 4 4087 5 3067 6 515273 7 386459 8 1/3 x - 4/9 x + -- x - ---- x + ------x - ------ x +---------- x - --------- x 54 81 9720 7290 1224720 918540

>> taylor(f,x,9,2) >> syms a; taylor(f,x,5,a) % 结果较冗长,显示从略 ans = 1/15*sin(2)+(1/15*cos(2)-8/225*sin(2))*(x-2)+ (-127/6750*sin(2)-8/225*cos(2))*(x-2)^2 +(23/6750*cos(2)+628/50625*sin(2))*(x-2)^3 +(-15697/6075000*sin(2)+28/50625*cos(2))*(x-2)^4 +(203/6075000*cos(2)+6277/11390625*sin(2))*(x-2)^5 +(-585671/2733750000*sin(2)-623/11390625*cos(2))*(x-2)^6 +(262453/19136250000*cos(2)+397361/5125781250*sin(2))*(x-2)^7 +(-875225059/34445250000000*sin(2)-131623/35880468750*cos(2))*(x-2)^8 >> syms a; taylor(f,x,5,a) % 结果较冗长,显示从略 sin(a)/(a^2+3+4*a) +(cos(a)-sin(a)/(a^2+3+4*a)*(4+2*a))/(a^2+3+4*a)*(x-a) +(-sin(a)/(a^2+3+4*a)-1/2*sin(a)-(cos(a)*a^2+3*cos(a)+4*cos(a)*a-4*sin(a)-2*sin(a)*a)/(a^2+3+4*a)^2*(4+2*a))/(a^2+3+4*a)*(x-a)^2+…

例:对y=sinx进行Taylor幂级数展开,并观察不同阶次的近似效果。 >> x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x); >> plot(x0,y0,'r-.'), axis([-2*pi,2*pi,-1.5,1.5]); hold on >> for n=[8:2:16] p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1) end p = x-1/6*x^3+1/120*x^5-1/5040*x^7 x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9 x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9-1/39916800*x^11 x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9-1/39916800*x^11+1/6227020800*x^13

p = x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9-1/39916800*x^11+1/6227020800*x^13-1/1307674368000*x^15

3.2.1.2 多变量函数的Taylor 幂级数展开 多变量函数 在 的Taylor幂级数的展开

例:??? >> syms x y; f=(x^2-2*x)*exp(-x^2-y^2-x*y); >> F=maple('mtaylor',f,'[x,y]',8) F = mtaylor((x^2-2*x)*exp(-x^2-y^2-x*y),[x, y],8)

>> maple(‘readlib(mtaylor)’);%读库,把函数调入内存 >> F=maple('mtaylor',f,'[x,y]',8) F = -2*x+x^2+2*x^3-x^4-x^5+1/2*x^6+1/3*x^7+2*y*x^2+2*y^2*x-y*x^3-y^2*x^2-2*y*x^4-3*y^2*x^3-2*y^3*x^2-y^4*x+y*x^5+3/2*y^2*x^4+y^3*x^3+1/2*y^4*x^2+y*x^6+2*y^2*x^5+7/3*y^3*x^4+2*y^4*x^3+y^5*x^2+1/3*y^6*x >> syms a; F=maple('mtaylor',f,'[x=1,y=a]',3); >> F=maple('mtaylor',f,'[x=a]',3) (a^2-2*a)*exp(-a^2-y^2-a*y)+((a^2-2*a)*exp(-a^2-y^2-a*y)*(-2*a-y)+(2*a-2)*exp(-a^2-y^2-a*y))*(x-a)+((a^2-2*a)*exp(-a^2-y^2-a*y)*(-1+2*a^2+2*a*y+1/2*y^2)+exp(-a^2-y^2-a*y)+(2*a-2)*exp(-a^2-y^2-a*y)*(-2*a-y))*(x-a)^2

3.2.2 Fourier 级数展开

function [A,B,F]=fseries(f,x,n,a,b) if nargin==3, a=-pi; b=pi; end L=(b-a)/2; if a+b, f=subs(f,x,x+L+a); end%变量区域互换 A=int(f,x,-L,L)/L; B=[]; F=A/2; %计算a0 for i=1:n an=int(f*cos(i*pi*x/L),x,-L,L)/L; bn=int(f*sin(i*pi*x/L),x,-L,L)/L; A=[A, an]; B=[B,bn]; F=F+an*cos(i*pi*x/L)+bn*sin(i*pi*x/L); end if a+b, F=subs(F,x,x-L-a); end %换回变量区域

>> syms x; f=x*(x-pi)*(x-2*pi); 例: >> syms x; f=x*(x-pi)*(x-2*pi); >> [A,B,F]=fseries(f,x,6,0,2*pi) A = [ 0, 0, 0, 0, 0, 0, 0] B = [ -12, 3/2, -4/9, 3/16, -12/125, 1/18] F = 12*sin(x)+3/2*sin(2*x)+4/9*sin(3*x)+3/16*sin(4*x)+12/125*sin(5*x)+1/18*sin(6*x)

例: >> syms x; f=abs(x)/x; % 定义方波信号 >> xx=[-pi:pi/200:pi]; xx=xx(xx~=0); xx=sort([xx,-eps,eps]); % 剔除零点 >> yy=subs(f,x,xx); plot(xx,yy,'r-.'), hold on % 绘制出理论值并保持坐标系 >> for n=2:20 [a,b,f1]=fseries(f,x,n), y1=subs(f1,x,xx); plot(xx,y1) end

a = [ 0, 0, 0] b = [ 4/pi, 0] f1 = 4/pi*sin(x) [ 0, 0, 0, 0] [ 4/pi, 0, 4/3/pi] 4/pi*sin(x)+4/3/pi*sin(3*x) ……

3.2.3 级数求和的计算 是在符号工具箱中提供的

>> format long; sum(2.^[0:63]) %数值计算 例:计算 >> format long; sum(2.^[0:63]) %数值计算 ans = 1.844674407370955e+019 >> sum(sym(2).^[0:200]) % 或 syms k; symsum(2^k,0,200) %把2定义为符号量可使计算更精确 3213876088517980551083924184682325205044405987565585670602751 >> syms k; symsum(2^k,0,200)

例:试求解无穷级数的和 >> syms n; s=symsum(1/((3*n-2)*(3*n+1)),n,1,inf) %采用符号运算工具箱 s = 1/3 >> m=1:10000000; s1=sum(1./((3*m-2).*(3*m+1)));%数值计算方法,双精度有效位16,“大数吃小数”,无法精确 >> format long; s1 % 以长型方式显示得出的结果 s1 = 0.33333332222165

例:求解 >> syms n x >> s1=symsum(2/((2*n+1)*(2*x+1)^(2*n+1)),n, 0,inf); >> simple(s1) % 对结果进行化简,MATLAB 6.5 及以前版本因本身 bug 化简很麻烦 ans = log((((2*x+1)^2)^(1/2)+1)/(((2*x+1)^2)^(1/2)-1)) %实际应为log((x+1)/x)

例:求 >> syms m n; limit(symsum(1/m,m,1,n)-log(n),n,inf) ans = eulergamma >> vpa(ans, 70) % 显示 70 位有效数字 .5772156649015328606065120900824024310421593359399235988057672348848677

3.3 数值微分 x-h x x+h B C A T f(x)

3.3.1 数值微分算法 向前差商公式: 向后差商公式

两种中心公式:

3.3.2 中心差分方法及其 MATLAB 实现 function [dy,dx]=diff_ctr(y, Dt, n) yx1=[y 0 0 0 0 0]; yx2=[0 y 0 0 0 0]; yx3=[0 0 y 0 0 0]; yx4=[0 0 0 y 0 0]; yx5=[0 0 0 0 y 0]; yx6=[0 0 0 0 0 y]; switch n case 1 dy = (-diff(yx1)+7*diff(yx2)+7*diff(yx3)- … diff(yx4))/(12*Dt); L0=3; case 2 dy=(-diff(yx1)+15*diff(yx2)- 15*diff(yx3)… +diff(yx4))/(12*Dt^2);L0=3; %数值计算diff(X)表示数组X相邻两数的差

case 3 dy=(-diff(yx1)+7*diff(yx2)-6*diff(yx3)-6*diff(yx4)+... 7*diff(yx5)-diff(yx6))/(8*Dt^3); L0=5; case 4 dy = (-diff(yx1)+11*diff(yx2)-28*diff(yx3)+28*… diff(yx4)-11*diff(yx5)+diff(yx6))/(6*Dt^4); L0=5; end dy=dy(L0+1:end-L0); dx=([1:length(dy)]+L0-2-(n>2))*Dt; 调用格式: y为 等距实测数据, dy为得出的导数向量, dx为相应的自变量向量,dy、dx的数据比y短 。

求导数的解析解,再用数值微分求取原函数的1~4 阶导数,并和解析解比较精度。 例: 求导数的解析解,再用数值微分求取原函数的1~4 阶导数,并和解析解比较精度。 >> h=0.05; x=0:h:pi; >> syms x1; y=sin(x1)/(x1^2+4*x1+3); % 求各阶导数的解析解与对照数据 >> yy1=diff(y); f1=subs(yy1,x1,x); >> yy2=diff(yy1); f2=subs(yy2,x1,x); >> yy3=diff(yy2); f3=subs(yy3,x1,x); >> yy4=diff(yy3); f4=subs(yy4,x1,x);

>> y=sin(x)./(x.^2+4*x+3); % 生成已知数据点 >> [y1,dx1]=diff_ctr(y,h,1); subplot(221),plot(x,f1,dx1,y1,':'); >> [y2,dx2]=diff_ctr(y,h,2); subplot(222),plot(x,f2,dx2,y2,':') >> [y3,dx3]=diff_ctr(y,h,3); subplot(223),plot(x,f3,dx3,y3,':'); >> [y4,dx4]=diff_ctr(y,h,4); subplot(224),plot(x,f4,dx4,y4,':') 求最大相对误差: >> norm((y4-… f4(4:60))./f4(4:60)) ans = 3.5025e-004

3.3.3 用插值、拟合多项式的求导数 基本思想:当已知函数在一些离散点上的函数值时,该函数可用插值或拟合多项式来近似,然后对多项式进行微分求得导数。 选取x=0附近的少量点 进行多项式拟合或插值 g(x)在x=0处的k阶导数为

通过坐标变换用上述方法计算任意x点处的导数值 令 将g(x)写成z的表达式 导数为 可直接用 拟合节点 得到系数 d=polyfit(x-a,y,length(xd)-1)

例:数据集合如下: xd: 0 0.2000 0.4000 0.6000 0.8000 1.000 yd: 0.3927 0.5672 0.6982 0.7941 0.8614 0.9053 计算x=a=0.3处的各阶导数。 >> xd=[ 0 0.2000 0.4000 0.6000 0.8000 1.000]; >> yd=[0.3927 0.5672 0.6982 0.7941 0.8614 0.9053]; >> a=0.3;L=length(xd); >> d=polyfit(xd-a,yd,L-1);fact=[1]; >> for k=1:L-1;fact=[factorial(k),fact];end >> deriv=d.*fact deriv = 1.8750 -1.3750 1.0406 -0.9710 0.6533 0.6376

建立用拟合(插值)多项式计算各阶导数的poly_drv.m function der=poly_drv(xd,yd,a) m=length(xd)-1; d=polyfit(xd-a,yd,m); c=d(m:-1:1); %去掉常数项 fact(1)=1;for i=2:m; fact(i)=i*fact(i-1);end der=c.*fact; 例: >> xd=[ 0 0.2000 0.4000 0.6000 0.8000 1.000]; >> yd=[0.3927 0.5672 0.6982 0.7941 0.8614 0.9053]; >> a=0.3; der=poly_drv(xd,yd,a) der = 0.6533 -0.9710 1.0406 -1.3750 1.8750

3.3.4 二元函数的梯度计算 格式: 若z矩阵是建立在等间距的形式生成的网格基础上,则实际梯度为

例: 计算梯度,绘制引力线图: >> [x,y]=meshgrid(-3:.2:3,-2:.2:2); z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); >> [fx,fy]=gradient(z); >> fx=fx/0.2; fy=fy/0.2; >> contour(x,y,z,30); >> hold on; >> quiver(x,y,fx,fy) %绘制等高线与 引力线图

绘制误差曲面: >> zx=-exp(-x.^2-y.^2-x.*y).*(-2*x+2+2*x.^3+x.^2.*y-4*x.^2-2*x.*y); >> zy=-x.*(x-2).*(2*y+x).*exp(-x.^2-y.^2-x.*y); >> surf(x,y,abs(fx-zx)); axis([-3 3 -2 2 0,0.08]) >> figure; surf(x,y,abs(fy-zy)); axis([-3 3 -2 2 0,0.11]) %建立一个新图形窗口

为减少误差,对网格加密一倍: >> [x,y]=meshgrid(-3:.1:3,-2:.1:2); z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); >> [fx,fy]=gradient(z); fx=fx/0.1; fy=fy/0.1; >> zx=-exp(-x.^2-y.^2-x.*y).*(-2*x+2+2*x.^3+x.^2.*y-4*x.^2-2*x.*y); >> zy=-x.*(x-2).*(2*y+x).*exp(-x.^2-y.^2-x.*y); >> surf(x,y,abs(fx-zx)); axis([-3 3 -2 2 0,0.02]) >> figure; surf(x,y,abs(fy-zy)); axis([-3 3 -2 2 0,0.06])

3.4 数值积分问题 4.3.1 由给定数据进行梯形求积

Sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2

格式: S=trapz(x,y) 例: >> x1=[0:pi/30:pi]'; y=[sin(x1) cos(x1) sin(x1/2)]; >> x=[x1 x1 x1]; S=sum((2*y(1:end-1,:)+diff(y)).*diff(x))/2 S = 1.9982 0.0000 1.9995 >> S1=trapz(x1,y) % 得出和上述完全一致的结果 S1 =

例: 画图 >> x=[0:0.01:3*pi/2, 3*pi/2]; % 这样赋值能确保 3*pi/2点被包含在内 >> y=cos(15*x); plot(x,y) % 求取理论值 >> syms x, A=int(cos… (15*x),0,3*pi/2) A = 1/15

随着步距h的减小,计算精度逐渐增加: >> h0=[0.1,0.01,0.001,0.0001,0.00001,0.000001]; v=[]; >> for h=h0, x=[0:h:3*pi/2, 3*pi/2]; y=cos(15*x); I=trapz(x,y); v=[v; h, I, 1/15-I ]; end >> v v = 0.1000 0.0539 0.0128 0.0100 0.0665 0.0001 0.0010 0.0667 0.0000 0.0001 0.0667 0.0000 0.0000 0.0667 0.0000 >> format long,v

3.4.2 单变量数值积分问题求解 梯形公式 格式:(变步长) y=quad(Fun,a,b) y=quadl(Fun,a,b) % 求定积分 y=quad(Fun,a,b, ) y=quadl(Fun,a,b, ) %限定精度的定积分求解,默认精度为10-6。后面函数算法更精确,精度更高。

例: 第一种,一般函数方法 第二种:inline 函数 第三种:匿名函数(MATLAB 7.0)

>> y=quad('c3ffun',0,1.5) 函数定义被积函数: >> y=quad('c3ffun',0,1.5) y = 0.9661 用 inline 函数定义被积函数: >> f=inline('2/sqrt(pi)*exp(-x.^2)','x'); >> y=quad(f,0,1.5) 运用符号工具箱: >> syms x, y0=vpa(int(2/sqrt(pi)*exp(-x^2),0,1.5),60) y0 = .966105146475310713936933729949905794996224943257461473285749 >> y=quad(f,0,1.5,1e-20) % 设置高精度,但该方法失效

例: 提高求解精度: >> y=quadl(f,0,1.5,1e-20) y = 0.9661 >> abs(y-y0) ans = .6402522848913892e-16 >> format long %16位精度 0.96610514647531

例:求解 绘制函数: >> x=[0:0.01:2, 2+eps:0.01:4,4]; >> y=exp(x.^2).*(x<=2)+80./(4-sin(16*pi*x)).*(x>2); >> y(end)=0; >> x=[eps, x]; >> y=[0,y]; >> fill(x,y,'g') %为减少视觉上的误 差,对端点与间断点 (有跳跃)进行处理。

调用quad( ): >> f=inline('exp(x.^2).*(x<=2)+80*(x>2)./(4-sin(16*pi*x))','x'); >> I1=quad(f,0,4) I1 = 57.76435412500863 调用quadl( ): >> I2=quadl(f,0,4) I2 = 57.76445016946768 >> syms x; I=vpa(int(exp(x^2),0,2)+int(80/(4-sin(16*pi*x)),2,4)) I = 57.764450125053010333315235385182

3.4.3 Gauss求积公式 为使求积公式得到较高的代数精度 对求积区间[a,b],通过变换 有

以n=2的高斯公式为例: function g=gauss2(fun,a,b) h=(b-a)/2; c=(a+b)/2; x=[h*(-0.7745967)+c, c, h*0.7745967+c]; g=h*(0.55555556*(gaussf(x(1))+gaussf(x(3)))+0.88888889*gaussf(x(2))); function y=gaussf(x) y=cos(x); >> gauss2('gaussf',0,1) ans = 0.8415

3.4.4 基于样条插值的数值微积分运算 基于样条插值的数值微分运算 格式: Sd=fnder(S,k) 该函数可以求取S的k阶导数。 Sd=fnder(S,[k1,…,kn]) 可以求取多变量函数的偏导数

例: >> syms x; f=(x^2-3*x+5)*exp(-5*x)*sin(x); >> ezplot(diff(f),[0,1]), hold on >> x=0:.12:1; y=(x.^2-3*x+5).*exp(-5*x).*sin(x); >> sp1=csapi(x,y);%建立三次样条函数 >> dsp1=fnder(sp1,1); >> fnplt(dsp1,‘--’)%绘制样条图 >> sp2=spapi(5,x,y);%5阶次B样条 >> dsp2=fnder(sp2,1); >> fnplt(dsp2,':'); >> axis([0,1,-0.8,5])

例: 拟合曲面 >> x0=-3:.3:3; y0=-2:.2:2; [x,y]=ndgrid(x0,y0); >> z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); >> sp=spapi({5,5},… {x0,y0},z); %B样条 >>dspxy=fnder(sp,[1,1]); >> fnplt(dspxy) %生成样条图

理论方法: >> syms x y; z=(x^2-2*x)*exp(-x^2-y^2-x*y); >> ezsurf(diff(diff(z,x),y),[-3 3],[-2 2]) %对符号变量表达式做三维表面图

例:考虑 中较稀疏的样本点,用样条积分的方式求出定积分及积分函数。 基于样条插值的数值积分运算 格式: f=fnint(S) 其中S为样条函数。 例:考虑 中较稀疏的样本点,用样条积分的方式求出定积分及积分函数。 >> x=[0,0.4,1 2,pi]; y=sin(x); >> sp1=csapi(x,y); a=fnint(sp1,1); %建立三次样条函数并积分 >> xx=fnval(a,[0,pi]); xx(2)-xx(1) ans = 2.0191

>> sp2=spapi(5,x,y); b=fnint(sp2,1); >> xx=fnval(b,[0,pi]); xx(2)-xx(1) ans = 1.9999 绘制曲线 >> ezplot('-cos(t)+2',[0,pi]); hold on %不定积分可上下平移 >> fnplt(a,'--'); >> fnplt(b,':')

3.4.5 双重积分问题的数值解 矩形区域上的二重积分的数值计算 格式: 矩形区域的双重积分: y=dblquad(Fun,xm,xM,ym,yM) 限定精度的双重积分: y=dblquad(Fun,xm,xM,ym,yM, )

例:求解 >> f=inline('exp(-x.^2/2).*sin(x.^2+y)','x','y'); >> y=dblquad(f,-2,2,-1,1) y = 1.57449318974494

任意区域上二元函数的数值积分 (调用工具箱NIT),该函数指定顺序先x后y.

>> fh=inline('sqrt(1-x.^2/2)','x'); % 内积分上限 例 >> fh=inline('sqrt(1-x.^2/2)','x'); % 内积分上限 >> fl=inline('-sqrt(1-x.^2/2)','x'); % 内积分下限 >> f=inline('exp(-x.^2/2).*sin(x.^2+y)','y','x'); % 交换顺序的被积函数 >> y=quad2dggen(f,fl,fh,-1/2,1,eps) y = 0.41192954617630

解析解方法: >> syms x y >> i1=int(exp(-x^2/2)*sin(x^2+y), y, -sqrt(1-x^2/2), sqrt(1-x^2/2)); >> int(i1, x, -1/2, 1) Warning: Explicit integral could not be found. > In D:\MATLAB6p5\toolbox\symbolic\@sym\int.m at line 58 ans = int(2*exp(-1/2*x^2)*sin(x^2)*sin(1/2*(4-2*x^2)^(1/2)), x = -1/2 .. 1) >> vpa(ans) .41192954617629511965175994017601

例:计算单位圆域上的积分: 先把二重积分转化: >> syms x y i1=int(exp(-x^2/2)*sin(x^2+y), x, -sqrt(1-y.^2), sqrt(1-y.^2)); Warning: Explicit integral could not be found. > In D:\MATLAB6p5\toolbox\symbolic\@sym\int.m at line 58

对x是不可积的,故调用解析解方法不会得出结果,而数值解求解不受此影响。 >> fh=inline('sqrt(1-y.^2)','y'); % 内积分上限 >> fl=inline('-sqrt(1-y.^2)','y'); % 内积分下限 >> f=inline('exp(-x.^2/2).*sin(x.^2+y)','x','y'); %交换顺序的被积函数 >> I=quad2dggen(f,fl,fh,-1,1,eps) Integral did not converge--singularity likely I = 0.53686038269795

3.4.6 三重定积分的数值求解 格式: I=triplequad(Fun,xm,xM,ym,yM, zm,zM, ,@quadl) 其中@quadl为具体求解一元积分的数值函数,也可选用@quad或自编积分函数,但调用格式要与quadl一致。

例: >> triplequad(inline('4*x.*z.*exp(-x.*x.*y-z.*z)', … 'x','y','z'), 0, 1, 0, pi, 0, pi,1e-7,@quadl) ans = 1.7328

3.5 曲线积分与曲面积分的计算 3.5.1 曲线积分及MATLAB求解 第一类曲线积分 起源于对不均匀分布的空间曲线总质量的求取.设空间曲线L的密度函数为f(x,y,z),则其总质量 其中s为曲线上某点的弧长,又称这类曲线积分为对弧长的曲线积分.

数学表示 若 弧长表示为

例: >> syms t; syms a positive; x=a*cos(t); y=a*sin(t); z=a*t; >> I=int(z^2/(x^2+y^2)*sqrt(diff(x,t)^2+diff(y,t)^2+ diff(z,t)^2),t,0,2*pi) I = 8/3*pi^3*a*2^(1/2) >> pretty(I) 3 1/2 8/3 pi a 2

例: >> x=0:.001:1.2; y1=x; y2=x.^2; plot(x,y1,x,y2) %绘出两条曲线 >> syms x; y1=x; y2=x^2; I1=int((x^2+y2^2)*sqrt(1+diff(y2,x)^2),x,0,1); >> I2=int((x^2+y1^2)*sqrt(1+diff(y1,x)^2),x,1,0); I=I2+I1 I = -2/3*2^(1/2)+349/768*5^(1/2)+7/512*log(-2+5^(1/2))

3.5.1.2 第二类曲线积分 又称对坐标的曲线积分,起源于变力 沿曲线 移动时作功的研究 曲线 亦为向量,若曲线可以由参数方程表示 沿曲线 移动时作功的研究 曲线 亦为向量,若曲线可以由参数方程表示 则两个向量的点乘可由这两个向量直接得出.

例:求曲线积分 >> syms t; syms a positive; x=a*cos(t); y=a*sin(t); >> F=[(x+y)/(x^2+y^2),-(x-y)/(x^2+y^2)]; ds=[diff(x,t);diff(y,t)]; >> I=int(F*ds,t,2*pi,0) % 正向圆周 I = 2*pi

例: >> syms x; y=x^2; F=[x^2-2*x*y,y^2-2*x*y]; ds=[1; diff(y,x)]; >> I=int(F*ds,x,-1,1) I = -14/15

3.5.2曲面积分与MATLAB语言求解 3.5.2.1 第一类曲面积分 其中 为小区域的面积,故又称为对面积的曲面积分。曲面 由 给出,则该积分可转换成x-y平面的二重积分为

例: %四个平面,其中三个被积函数的值为0,只须计算一个即可。 >> syms x y; syms a positive; z=a-x-y; >> I=int(int(x*y*z*sqrt(1+diff(z,x)^2+ diff(z,y)^2),y,0,a-x),x,0,a) I = 1/120*3^(1/2)*a^5

若曲面由参数方程 曲面积分

例: >> syms u v; syms a positive; >> x=u*cos(v); y=u*sin(v); z=v;f=x^2*y+z*y^2; >> E=simple(diff(x,u)^2+diff(y,u)^2+diff(z,u)^2); >> F=diff(x,u)*diff(x,v)+diff(y,u)*diff(y,v)+diff(z,u)* diff(z,v); >> G=simple(diff(x,v)^2+diff(y,v)^2+diff(z,v)^2); >> I=int(int(f*sqrt(E*G-F^2),u,0,a),v,0,2*pi) I = 1/4*a*(a^2+1)^(3/2)*pi^2+1/8*log(-a+(a^2+1)^(1/2)) *pi^2-1/8*(a^2+1)^(1/2)*a*pi^2

3.5.2.2 第二类曲面积分 又称对坐标的曲面积分 可转化成第一类曲面积分

若曲面由参数方程给出

例: 的上半部,且积分沿椭球面的上面。 %引入参数方程 x=a*sin(u)*cos(v); y=b*sin(u)*sin(v); z=c*cos(u), u[0,pi/2], v[0,2*pi]. >> syms u v; syms a b c positive; >> x=a*sin(u)*cos(v); y=b*sin(u)*sin(v); z=c*cos(u); >> A=diff(y,u)*diff(z,v)-diff(z,u)*diff(y,v); >> I=int(int(x^3*A,u,0,pi/2),v,0,2*pi) I = 2/5*pi*a^3*c*b