《matlab课件第二讲》由会员分享,可在线阅读,更多相关《matlab课件第二讲(35页珍藏版)》请在人人文库网上搜索。
1、第二讲 符号运算, matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox,一、符号运算入门,在matlab中利用命令 solve(a*x2+b*x+c=0) 可以计算出一元二次方程的解析解。 ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) 对于例1,可运行如下语句: solve(x2+5*x+2=0) 即可得到方程的根: ans = -5/2+1/2*17(1/2) -5/2-1/2*17(1/2),可以利用matlab求导数的命令diff来解决这个问题。
2、 syms x diff(cos(x)2) 得到结果: ans = -2*cos(x)*sin(x),可以运行以下两条matlab语句来求得此积分: syms x a b int(x2,a,b) 得到结果: ans = 1/3*b3-1/3*a3,可以运行以下matlab语句来求解这个微分方程: syms a y dsolve(Dy=a*y) 得到结果: ans = C1*exp(a*t),从上面的例子可以看出,matlab符号运算的主要对象是没有赋值的变量,得到的结果也是文字符号。符号运算是数学理论中的主要运算方式。 与数值运算的区别 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算。
3、无须事先对独立变量赋值,运算结果以标准的符号形式表达。,二、符号对象的创建,1、创建符号常量 符号常量是不含变量的符号表达式,用sym命令来创建符号常量。 语法:sym(常量) 例:a=sym(sin(2) a= sin(2),2、创建符号变量和表达式,(1)使用sym命令创建符号变量和表达式; 语法:创建符号变量:sym(arg,参数) 创建符号表达式:sym(表达式) 说明:参数用来设置限定符号变量的数学特性,可以选择为:positive,real,unreal表示:正,实和非实。不限定可以省略。,2、创建符号变量和表达式,例:x=sym(x,real) y=sym(y,real) z=x。
4、+i*y real(z) x=sym(x,unreal) real(z) 比较一下两个real(z)命令的结果有什么不同?为什么呢?,2、创建符号变量和表达式,例:f1=sym(a*x2+b*x+c) f1= a*x2+b*x+c 上面的语句只创建了f1的符号表达式,没有创建符号变量。 也可以用sym命令定义符号变量后,利用符号变量的计算来生成符号表达式。(怎么在matlab中实现?),2、创建符号变量和表达式,(2)使用syms命令创建符号变量和符号表达式: 语法:syms(arg1,arg2,参数) 也可以简写为:syms arg1 arg2 参数 说明:参数设置与sym命令相同。 该命令。
5、可以一次创建多个符号变量,2、创建符号变量和表达式,例:syms a b c x f2=a*x2+b*x+c syms(a,b,c,x) f3=a*x2+b*x+c 上面的语句即创建了符号变量a,b,c,x,又创建了符号表达式,f1,f2,f3符号表达式相同。,注:符号表达式中自由变量的确定,(1)小写字母i和j不能作为自由变量 (2)首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。 (3)大写字母比所有的小写字母都靠后。,3、符号矩阵,用sym和syms命令都可以创建符号矩阵: 例:A=sym(a,b;c,d)和 syms a b。
6、 c d A=a,b;c,d都可以得到下面的结果 A= a,b c,d,4、符号表达式的转化与化简,1、expand函数 将符号表达式展开成多项式形式: 2、factor函数 将符号表达式写成因式分解的形式; 例:f1=sym(x*(x*(x-6)+11)-6) f2=expand(f1) f3=factor(f2),3、simple函数 可以寻求包含最少数目字符的表示式简化形式: 例:y=sym(cos(x)2-sin(x)2) simple(y) 转化与化简命令中,比较常用的还有horner,collect,simplify等三个命令。请通过matlab帮助或网络查询它们的用法!,5、符号。
7、表达式的替换,利用subs函数可用来进行符号表达式中符号变量的替换。 语法:subs(s) %用给定的值替换符号表达式s中的所有变量。 subs(s,new) %用new替换符号表达式s中的自由变量。 subs(s,old,new) %用new替换符号表达式s中的old变量。,例:f=sym(x+y)2+3*(x+y)+5) x=5 f1=subs(f) f2=subs(f,3) f3=subs(f,x+y,s) f4=subs(f,x,z),四、符号极限、微积分和级数求和,1、符号极限 表达式: 函数格式 limit(f) limit(f,x,a) limit(f,x,a,left) lim。
8、it(f,x,a,right),2、符号导数,函数diff(f)用来求符号表达式的导数 语法: diff(f) 求f对自由变量的一阶导数 diff(f,t) 求f对变量t的一阶导数 diff(f,n) 求f对自由变量的n阶导数 diff(f,t,n) 求f对变量t的n阶导数,2、符号导数,函数diff也可以用于符号矩阵,其结果是矩阵的每一个元素进行求导运算。 例:,syms t x g=sym(2*t t2;tsin(x) exp(x) diff(f) diff(f,t),3、符号积分,函数int可以求符号表达式的积分 语法: int(f,t) 求符号变量t的不定积分 int(f,t,a,b)。
9、 求符号变量t的在a,b区间的定积分,a,b是具体的数值 int(f,t,m,n) 求符号变量t的在m,n区间的定积分,m,n是符号,3、符号积分,和微分一样,int对符号矩阵的积分也是将各个元素逐个进行积分。 例:syms t x g=sym(2*t t2;tsin(x) exp(x) int(g) int(g,t) int(g,a,b),4、符号级数,(1)symsum函数 语法:symsum(s,x,a,b) 说明:x为自变量,x省略则对默认的自由变量求和;s为符号表达式;a,b为参数x的取值范围。,4、符号级数,syms x k s1=symsum(1/k2,1,10) s2=syms。
10、um(1/k2,1,inf) s3=symsum(xk,k,1,inf),4、符号级数,(2)taylor函数 语法:taylor(F,x,n) 说明:x为自变量,F为符号表达式,n为展开的项数,默认为5项 例:syms x s1=taylor(exp(x),8) s2=taylor(exp(x),六、符号方程的求解,1、代数方程 语法:solve(eq,v) 求解方程关于变量v的解。 solve(eq1,eq2,v1,v2,.)求解方程组关于变量v1,v2,的解,1、代数方程,例:f1=sym(a*x2+b*x+c) solve(f1) solve(f1,a) f2=sym(sin(x) s。
11、olve(f2) 当方程有多个解时,只能得出0附近的有限几个解,例:求解方程lnx+x=2。 Sym x Solve(log(x)+x=2,x) 看看结果,分析原因!,1、代数方程,例:eq1=sym(x2+2*x+1) eq2=sym(x+3*z=4) eq3=sym(y*z=-1) x,y,z=solve(eq1,eq2,eq3) S=solve(eq1,eq2,eq3) 看看最后一句的结果?,2、符号常微分方程,语法:dsolve(eq,con,v) 说明:eq 为微分方程,con为微分初始条件,可省略;v为指定自由变量,省略时则默认为x或t; dsolve(eq1,eq2,con1,con2,v1,v2) 说明:求解微分方程组,变量意义与上一样。 y的一阶导数表示为Dy; y的n阶导数表示为Dny,2、符号常微分方程,例:y=dsolve(x*D2y-3*Dy=x2,x) y=dsolve(x*D2y-3*Dy=x2,y(1)=0,y(5)=0,x) x,y=dsolve(Dx=y,Dy=-x),matlab符号计算实验:,请编制一个程序,把一个周期为2l的函数展开成傅里叶级数。 给出下面函数的展开结果,作业:函数幂级数展开。