教 案
课题 名称 | 6.4 MATLAB 符 号 计 算 | 进 度 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
时 数 | 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学目标 | 应知 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
应会 | 会运用Matlab求符号微积分、符号方程、及级数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教材分析 | 重点 | MATLAB的符号微积分和符号方程求解 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
难点 | MATLAB的泰勒级数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学方法 | 讲授 | 教学资源 | 教材、网上资源 | 教具 | 投影仪 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学内容 | 时间分配 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一、符号对象 1、创建符号变量和符号矩阵 2、符号表达式的基本运算函数 3、符号表达式的化简函数 4、符号表达式的替换函数 二、符号微积分 1、符号极限 2、符号求导 3、符号积分 4、积分变换 三、符号方程求解 1、代数方程 2、符号微分方程求解 四、级数 1、级数的符号求和 2、函数的泰勒级数 | 10’ 5’ 5’ 5’ 5’ 5’ 10’ 10’ 10’ 10’ 10’ 5’ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
教学后记 | 作业 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
内容 | 备 注 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6.4 MATLAB 符 号 计 算 一、符号对象 1、创建符号变量和符号矩阵 MATLAB的符号数学工具箱提供了两个sym和syms基本函数,用来创建符号变量和符号矩阵。 ●函数sym的调用格式为: 符号变量名=sym(‘表达式’) 说明:函数sym可创建一个符号变量,表达式可以是字符、字符串、数学表达式或字符表达式等。 ●函数syms的调用格式: syms 符号变量名1 符号变量名2 符号变量名3 … 说明:函数syms可一次创建多个符号变量。 例6.25创建符号变量。 >> a=sym('matlab') a = matlab >> b=sym('3*x^2+4*x+7') b = 3*x^2+4*x+7 在工作空间浏览器上可以看到A、B、C三个符号变量。使用sym函数和syms函数也可以创建符号矩阵。符号矩阵是一个数组,它的元素是符号表达式。MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全像基本的MATLAB命令。 例6.26 创建符号矩阵。 >> e=[1 3 5;2 4 6;7 9 11]; %建立数值矩阵 >> m=sym(e) %创建符号矩阵 m = [ 1, 3, 5] [ 2, 4, 6] [ 7, 9, 11] 在命令窗口的显示中,数值矩阵只显示元素的数值,而符号矩阵的每行元素放在一对方括号内;在工作空间窗口显示的变量图标两者也不同,数值矩阵的图标为 ,符号矩阵(也称为符号对象)的图标为 ,二者很容易区分。 2、符号表达式的基本运算函数 符号表达式的运算与普通数值运算的方式不同,它的运算结果是符号表达式或符号矩阵。在MATLAB运算中,浮点运算速度最快,而符号计算占用时间和内存都比较多,但它的计算结果最精确。在默认情况下,当用函数sym生成符号变量后,MATLAB将对这些变量进行符号计算。在MATLAB符号计算工具箱中提供来了很多函数用于符号计算。下面将介绍一些常用的符号运算函数,如表6-6所示。 表6-6 常用的符号函数
例6.27 计算表达式x3-1与表达式x-1的和、差、积、商和乘方。 >> syms x >> s1=x^3-1; >> s2=x-1; >> symadd(s1,s2) ans = x^3-2+x >> symsub(s1,s2) ans = x^3-x >> symmul(s1,s2) ans = (x^3-1)*(x-1) >> symdiv(s1,s2) ans = (x^3-1)/(x-1) >> sympow(s1,s2) ans = (x^3-1)^(x-1) 3、符号表达式的化简函数 符号数学工具箱提供了符号表达式的因式分解、展开、合并、化简、通分等函数,见表6-7所示。 表6-7 符号表达式的化简函数
例6.28 对表达式 进行因式分解。 >> syms x %在命令窗口创建符号变量x >> f=factor(x^3-1) f = (x-1)*(x^2+x+1) 例6.29 展开三角表达式sin(a+b)。 >> s=sym('sin(a+b)'); %用sym函数创建符号变量 >> expand(s) ans = sin(a)*cos(b)+cos(a)*sin(b) 例6.30化简分式(4x2+8x+3)/(2x+1)。 >> syms x >> s=(4*x^2+8*x+3)/(2*x+1); >> simplify(s) ans = 2*x+3 4、符号表达式的替换函数 MATLAB的符号数学工具箱提供了两个符号表达式的替换函数subexpr和subs,可以通过符号替换使表达式的输出形式化简,得到一个简单的表达式。 ●函数Subexpr的调用格式为: [R,SYM]=subexpr(S,SYM) 说明:此函数用变量SYM(字符或字符串)的值代替符号表达式S中重复出现的字符串,R是返回替换后的结果。 ●函数subs的调用格式: R=subs(S,old,new) 说明:该函数是用新的符号变量new替换原来符号表达式S中的变量old,R是替换后的符号表达式。需要注意的,当变量new是数值形式时,显示的结果虽然是数值,但它事实上是符号变量。要强制地求值需要用vpa函数。 例6.31 求表达式在x=1时的代数值。 >>clear >>clc >> syms x >> s=(3*x^3+x^2-1)/(x^2+1); >> r=subs(s,'x','1') r = (3*(1)^3+(1)^2-1)/((1)^2+1) >> vpa(r) %强制求值 ans = 1.5000000000000000000000000000000 二、符号微积分 1、符号极限 极限是微积分的基础,在MATLAB中,极限的求解是由limit函数实现的,其主要格式如表6-8所示。 表6-8 符号极限的函数格式
例6.32 分别计算表达式、、、和。 先在命令窗口创建符号变量a和x,再分别计算上面各表达式的极限。 >>clear >>clc >> syms x a; >> limit(1/x,x,0, 'right') ans = inf >> limit(1/x,x,0, 'left' ) ans = -inf >> limit (sin(x)/x) ans = 1 >> limit((1+1/x)^x,x,inf,'left') ans = exp(1) >> limit(exp(-x),x,0,'left') ans = 1 2、符号求导 在符号数学工具箱中,表达式的导数由函数diff实现,其调用格式为: diff(s,x,n) 说明:其中s为符号表达式,x为自变量,n为求导的阶数。 例6.33 分别计算表达式x5的一阶导数和三阶导数。 >>clear >>clc >> syms x >> diff(x^5) ans = 5*x^4 >> diff(x^5,3) ans = 60*x^2 3、符号积分 积分算法是非结构性的,许多函数的原函数存在,但不可用有限解析式表达式表示,即使可以求积分的函数,其求积分过程也可能很复杂,但利用MATLAB求积分就非常容易。在MATLAB的符号数学工具箱中,表达式的积分由函数int实现,该函数可求不定积分和定积分,其调用格式如表6-9所示。 表6-9 符号积分的函数格式
例6.34 分别计算下列表达式的积分: (1) (2) (3) (4) 在命令窗口创建符号变量x和y,分别计算上面各表达式的积分。 >>clear >>clc >> syms x y >> s=(4-3*x^2)^2; >> int(s) ans = 9/5*x^5-8*x^3+16*x >> int(x/(x+y),x) ans = x-y*log(x+y) >> int(x/(x+y),y) ans = x*log(x+y) >> int(x^2/(x+2),x,1,3) ans = 4*log(5)-4*log(3) >> double(ans) ans = 2.0433 4、积分变换 积分变换就是通过积分运算把一个函数f(原函数)变成另外一个函数F(像函数)。变化的过程是: 其中二元函数称为变换的核,变换的核决定了变换的不同名称。在一定的条件下原函数和像函数之间是一一对应的,可以相互转化。积分变换的意义是换一个角度来认识函数,积分变换的一项基本应用是解微分方程,求解过程是基于这样一种想法:假如不容易从原方程直接求得解f,则对原方程进行变换,如果能从变换后的方程中求得解F,则对F进行逆变换,即可求得原方程的解f,当然,在选择变换的核时,应该使得变换以后的方程比原方程容易求解。MATLAB提供的变换函数如表6-10所示。 表6-10 常用的积分变换函数
例6.35 求函数的傅立叶变换及其逆变换。 >> syms x t >> y=exp(-x^2); >> Ft=fourier(y,x,t) %傅立叶变换 Ft = pi^(1/2)*exp(-1/4*t^2) >> fx=ifourier(Ft,t,x) %傅立叶逆变换 fx = 1/2*4^(1/2)*exp(-x^2) 三、符号方程求解 1、代数方程 代数方程是指未涉及微积分运算的方程,相对比较简单。在MATLAB符号数学工具箱中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式如表6-11所示。 表6-11 符号方程的函数
例6.36 分别求解代数方程ax2+bx+c=0。 在命令窗口创建符号变量a、b、c和x。 >>clear >>clc >> syms a b c x >> s=a*x^2+b*x+c; >> solve(s) ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] 例6.37 求解代数方程组: 在命令窗口创建符号变量x、y、z,求解方程组。 >> syms x y z >> s1=2*x^2+y^2-3*z-4; >> s2=y+z-3; >> s3=x-2*y-3*z; >> [x,y,z]=solve(s1,s2,s3) x = [ 7/2+1/6*i*699^(1/2)] [ 7/2-1/6*i*699^(1/2)] y = [ 11/2-1/6*i*699^(1/2)] [ 11/2+1/6*i*699^(1/2)] z = [ -5/2+1/6*i*699^(1/2)] [ -5/2-1/6*i*699^(1/2)] 2、符号微分方程求解 在MATLAB中,用大写字母D来表示微分方程的导数。例如:Dy表示,D2y表示。D2y+Dy+x-10=0表示微分方程。Dy(0)=3表示。 在符号数学工具箱中,求解表达式微分方程的符号解由函数dsolve实现,其调用格式为: ●r=dsolve(‘eq’,‘cond’, ‘var’) 说明:式中eq代表常微分方程,cond代表常微分方程的边界条件或初始条件,var代表自变量,缺省是按系统默认原则处理。该函数可求解微分方程的特解。 ●r=dsolve(‘eq1’, ‘eq2’…‘eqN’,‘cond1’, ‘cond2’…‘condN’, ‘var1’…‘varN’) 说明:该函数求解由eq1,eq2,…指定的常微分方程组在条件cond1,cond2,…,condN下的符号解,若不给出初始条件,则求方程组的通解。var1,…,varN为求解变量,如果不指定,将为默认自变量。 例6.38 求微分方程的通解。 在命令窗口分别输入表达式,求解方程。 >> y=dsolve('Dy-(t^2+y^2)/t^2/2','t') %方程右端的零可以不写 y = t*(-log(t)+2+C1)/(-log(t)+C1) %通解 例6.39 求微分方程的通解,和当y(0)=1时的特解。 在命令窗口输入表达式,求解方程。 >> y=dsolve('Dy=2*x*y^2','x') %求通解 y = -1/(x^2-C1) >> y=dsolve('Dy=2*x*y^2','y(0)=1','x') %求特解 y = -1/(x^2-1) 四、级数 1、级数的符号求和 数值级数和函数级数是高等数学的重点研究内容,也是物理学以及其他工程技术学科的重要理论基础和分析工具。在MATLAB符号数学工具中,级数表达式的求和由函数symsum实现,其调用格式如表6-12。 表6-12 级数求和函数
例6.40 分别计算表达式、、。 在命令窗口创建符号变量k和x,分别计算上面各表达式。 >>clear >>clc >> syms x k >> symsum(k) ans = 1/2*k^2-1/2*k >> symsum(k^2-3,0,10) ans = 352 >> symsum(x^k/k,k,1,inf) ans = -log(1-x) 2、函数的泰勒级数 泰勒级数可以将一个任意函数表示为一个幂级数,并且,在许多情况下,只需要取幂级数的前有限项来表示该函数,这对于大多数工程应用问题来说,精度已经足够。在MATLAB符号数学工具中,表达式的Taylor级数展开由函数taylor实现,其调用格式如表6-13所示。 表6-13 泰勒级数函数格式
例6.41 分别计算表达式的5阶泰勒级数展开式和12阶泰勒级数展开式。 在命令窗口创建符号变量,分别计算上面各表达式。 >>clear >>clc >> syms x >> s=(1-x+x^2)/(1+x+x^2); >> taylor(s) ans = 1-2*x+2*x^2-2*x^4+2*x^5 >> taylor(s,x,12) ans = 1-2*x+2*x^2-2*x^4+2*x^5-2*x^7+2*x^8-2*x^10+2*x^11 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发布评论