版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章符号运算
(symbolicmathtoolbox)4.1符号对象的创建和使用4.2符号对象的运算4.3符号表达式的变换4.4符号微积分、极限和级数4.5符号积分变换4.6符号方程的求解4.7符号函数的可视化4.8综合举例4.9绘图函数本章小结和练习符号运算的对象是非数值的符号对象,对于像公式推导和因式分解等抽象的运算都可以通过符号运算来解决。MATLAB具有专用的符号数学工具箱(SymbolicMathToolbox)进行符号运算,由MATLAB实时编辑器(LivescriptEditor)代替了原来的Mupadnotebook,可以创建、运行和共享符号表达式,直接生成MATLAB函数、Simulink函数块和Simscape方程,使符号运算的功能有了很大的扩展。符号工具箱能够实现微积分运算、线性代数、表达式的化简、求解代数方程和微分方程、积分变换和不同精度转换,符号计算的结果可以以图形化显示。例如:计算a*x^2+b*x+c的根计算f=sin(ax)+cos(x)的微分计算符号运算的特点:
(1)符号运算以推理解析的方式进行,计算的结果不受计算累积误差影响;(2)符号计算可以得出完全正确的封闭解和任意精度的运算;(3)符号计算命令调用简单与数值计算命令基本一致。4.1符号对象的创建和使用创建符号对象可以使用sym和syms函数实现。1.sym函数S=sym(s,参数) %由数值创建符号对象S=sym(‘s’,参数)%由字符串创建符号对象例,>>x=sym('x');参数作用实例d返回最接近的小数(默认位数为32位)
>>x=sym(pi,‘d‘)
x=3.1415926535897931159979634685442f返回浮点型数值
>>x=sym(pi,‘f‘)
x=884279719003555/281474976710656r返回最接近的有理数型数值(为系统默认方式)
>>x=sym(pi,‘r‘)
x=pie返回最接近的带浮点估计误差的有理数型
>>x=sym(pi,‘e‘)
x=pi-(198*eps)/3592.syms函数syms(s1,s2,s3,…,参数) %创建多个符号变量symss1s2s3…参数 %创建多个符号变量,由空格分开变量
symsf(x1,x2,x3)%创建符号变量和符号函数例:>>symsf(x,y)>>symsabc>>B=sym(‘b’,‘real’)%限定b为实数4.1.2符号常量和符号变量符号常量是不含变量的符号表达式,用sym函数来创建;符号变量使用sym和syms函数来创建。【例4-1】在实时编辑器中创建Livescript文件,编写并运行创建符号常量和符号变量。4.1.2符号常量和符号变量设置假设条件的命令格式如下:assume(condition) %假设条件assume(expr,set) %对符号表达式设置条件assumptions(var) %变量的假设条件【例4-2】使用字符串创建符号变量,并使用假设条件。>>symsx;>>assume(x>5); %设置假设条件>>assumeAlso(x<10)>>assumptions %显示假设条件ans=[5<x,x<10]4.1.3符号表达式符号表达式是由符号常量和符号变量等构成的表达式,使用sym和syms函数来创建。例4-3
分别使用sym和syms函数创建符号表达式。>>symsabcx>>f1=a*x^2+b*x+cf1=a*x^2+b*x+c>>symsf2(z);>>f2=sin(z)^2+cos(z)^2==1 %创建符号方程f2=sin(z)^2+cos(z)^2=14.1.4符号矩阵符号矩阵的元素是符号对象,符号矩阵可以用sym和syms函数来创建。>>symsabcd;A3=[a,b;c,d]%创建符号矩阵A3=[a,b][c,d]>>B=sym('b',[2,3])B=[b1_1,b1_2,b1_3][b2_1,b2_2,b2_3]4.2符号对象的运算
4.2.1符号运算的类型转换1.符号变量与数值变量的相互转换d=double(s) %转换为双精度型数据c=sym2cell(s) %转换为元胞数值sym、syms、str2sym和cell2sym,可以将数值、字符串和元胞数组转换为符号对象。>>S1=sym([sqrt(2),pi]);>>d=double(S1) %转换为双精度型数据d=1.41423.1416>>s3='[a,b;c,d]';S3=str2sym(s3)S3=[a,b][c,d]2.任意精度符号变量的转换VPA型(variable-precisionfloating-pointarithmetic)是指任意精度运算,这种运算比较灵活,可以设置任意有效精度。digits(n) %设定n位有效位数的精度S=vpa(s,n) %将s按n位有效位数计算得出符号对象S不同类型对象转换关系4.2.2符号对象的基本运算1.算术运算(1)“+”,“-”,“*”,“\”,“/”,“^”(2)“.*”,“./”,“.\”,“.^”(3)“′”,“.′”2.符号矩阵运算函数符号运算中的矩阵代数命令有diag、triu、inv、det、rank、qr、eig、svd和expm、logm等。3.关系运算包括“>”、“>=”、“<”、“<=”、“==”、“~=”,可以结合assume等函数使用。。符号矩阵运算:>>symsabcd>>C=[a,b;c,d];>>detC=det(C)%求行列式>>invC=inv(C)%求逆阵>>rotC=rot90(B)>>logC=log(C)>>D=sin(C).*cos(C)4.逻辑运算包括“&”、“|”和xor,可以对关系表达式进行逻辑运算,函数all、any、in、isinf、isnan等也进行逻辑运算。5.算术运算函数三角函数包括sin、cos、sinc、cot和tan,双曲函数包括sinh、cosh和tanh,三角反函数包括asin、acos和atan函数等。指数函数sqrt、exp和expm的使用方法与数值运算的完全相同;对数函数有自然对数log(表示ln)、log2和log10。复数的共轭conj、实部real、虚部imag、角度angle和求模abs等函数,与数值计算中的使用方法相同。算术运算的统计函数max、min、mod和rem等。例:>>symsabcd>>A=[a,b;c,d];>>B=[1,2;3,4];>>C=A+B*i %C是符号变量C=[a+1i,b+2i][c+3i,d+4i]>>e=logical(A==B)>>conj(C) %求共轭ans=[conj(a)-1i,conj(b)-2i][conj(c)-3i,conj(d)-4i]4.3符号表达式的变换
4.3.1符号表达式中的自由符号变量1.自由符号变量的确定以下原则来选择一个自由符号变量:符号表达式中的多个符号变量,按以下顺序来选择自由符号变量:首先选择x,如果没有x,则选择在字母表顺序中最接近x的字符变量,如果字母与x的距离相同,则在x后面的优先;字母pi、i和j不能作为自由符号变量;大写字母比所有的小写字母都靠后。例如,在符号表达式“ax2+bx+c”中,自由符号变量的顺序为x
c
b
a。练习:确定下面各符号表达式中的自由符号变量:1/(log(t)+log10(w*t)) sqrt(t)/y 10*i+x*j exp(-a*result)答案:wyxresult
4.3.2符号表达式的化简多项式的符号表达式有多种形式,例如,f(x)=x3-6x2+11x-6可以表示为:>>symsf(x)>>f=x^3-6*x^2+11*x-6合并同类项形式:f(x)=x3-6x2+11x-6
collectexpand因式分解形式:f(x)=(x-1)(x-2)(x-3)
factor
嵌套形式:f(x)=x(x(x-6)+11)-6
horner例:>>symsf(x)>>f=x^3-6*x^2+11*x-6>>factor(f)>>g=(x-1)*(x-2)*(x-3)>>f=collect(g)>>pretty(f)例:>>symsf(x,y)>>f=cos(x-y)>>g=expand(f)>>p=sym(120)>>factor(p)simplify函数simplify函数是一个功能强大的函数,利用各种形式的代数恒等式对符号表达式进行化简,包括求和、分解、积分、幂、三角、指数、对数、Bessel以及超越函数等方法来简化表达式。例:>>symsxy>>f2=cos(x)^2+sin(x)^2;>>g2=simplify(f2)g2=1练习:对符号表达式,进行化简。答案:symsxf1=cos(x)+sqrt(-sin(x)^2)F11=simplify(f1)f2=(x^2-1)/(x+1)f21=expand(f2)f22=collect(f2)4.3.3符号表达式的替换1.subexpr函数subexpr函数用来替换符号表达式中重复出现的子表达式,通过替换子表达式来化简。2.subs函数subs函数用来对符号表达式中某个特定符号进行替换,命令格式如下:subs(s,old,new)%用new替换符号表达式s中的old例如:>>f1=subs(f,x-y,S)例:
将符号表达式f=(x-y)(x+y)+(x-y)2+2(x-y)中的特定符号使用subs函数替换。>>symsxyzS>>f=(x-y)*(x+y)+(x-y)^2+2*(x-y);>>f1=subs(f,x-y,S)>>x=5;>>y=3;>>f2=subs(f)4.3.4计算反函数和复合函数1.反函数函数f(x)存在一个反函数g(.),g(f(x))=x,则g和f互为反函数g=finverse(f,v)%对f(v)按指定自变量v求反函数例4-12:>>symsxy>>f=5*sin(x)+y;>>g=finverse(f) %对默认自由变量求反函数>>g1=finverse(f,y) %对y求反函数2.复合函数MATLAB提供了compose函数可以求出f(x)和g(y)的复合函数f(g(y))。compose(f,g,x,y,z) %计算f和g的复合函数例:>>symsxytvn>>f=x+y;>>g=t*v;>>y1=compose(f,g) %以x为符号变量求复合函数y1=t*v+y>>y4=compose(f,g,y,t,'n')%以n代替t求复合函数f(g(n))y4=x+n*v4.3.5多项式符号表达式1.多项式符号表达式的运算函数root求多项式的根,resultant计算两个多项式合成,numden进行多项式分母通分,ploynomialDegree计算多项式最高阶次。例,已知多项式为>>symsxs;f1=sym(1/(x-1)+1/(x+1)+3);>>[N1,D1]=numden(f1)N1=2*x+3*x^2-3D1=(x-1)*(x+1)>>deg=polynomialDegree(N1) %求多项式的阶次deg=22.符号表达式与多项式的互换sym2poly(s)和poly2sym将符号表达式与行向量互相转换例:将多项式表达式转换成>>n1=sym2poly(N1)n1=32-3>>d1=sym2poly(D1);>>f2=poly2sym(n1,s)/poly2sym(d1,s) %转换为以s为符号变量的表达式f2=(3*s^2+2*s-3)/(s^2-1)4.4符号微积分、极限和级数
4.4.1符号表达式的微积分1.微分diff(f,t,n)%计算f对符号变量t的n阶微分例
计算符号表达式f=sin(ax)+y2cos(x)的微分。>>symsaxy>>f=sin(a*x)+y^2*cos(x);>>dfdx=diff(f) %对默认自由变量x求一阶微分dfdx=cos(a*x)*a-y^2*sin(x)>>dfdy2=diff(f,y,2) %对符号变量y求二阶微分dfdy2=2*cos(x)2.积分int(f,t,a,b) %计算符号变量t的积分说明:f为符号表达式;t为积分符号变量,可以省略,当t省略时则指默认自由符号变量;a和b是为积分上下限[ab],可以省略,省略时计算的是不定积分。例:>>symsarphi>>g=r^2*(sin(phi))^2;>>f=int(int(g,r,0,a),phi,0,2*pi)f=(pi*a^3)/34.4.2符号表达式的极限limit(f,x,a)%求符号表达式f对x趋近于a的极限例4-22
使用limit函数计算符号表达式的极限,和>>symst>>f1=exp(-t)*sin(t);>>ess=limit(f1,t,inf) %计算趋向无穷大的极限ess=0>>f2=1/t;>>limitf2_l=limit(f2,'t','0','left') %计算趋向0的左极限>>limitf2_r=limit(f2,'t','0','right') %计算趋向0的右极限>>limitf2=limit(f2) %计算趋向0的极限limitf2=NaN 左右极限不相等,极限不存在表示为NaN
4.4.3符号表达式的级数1.级数求和symsum(s,x,a,b) %计算表达式s当x从a到b的级数和例
使用symsum函数对符号表达式进行级数求和,已知符号表达式。>>symsk>>f2=1/k;>>limitf1=symsum(f2,k,0,inf)%计算无穷级数和Limitf1=Inf>>symsum(f2,k,1,10)ans=7381/25202.taylor级数taylor(f,x,x0,’Order’,n) %求泰勒级数以符号变量x在x0点展开n项例
使用taylor函数对符号表达式cos(x)
进行泰勒级数展开。>>symsx>>f1=cos(x);>>taylorf1=taylor(f1,x,1,’order’,3) %计算x=1级数展开前3项taylorf1=cos(1)-sin(1)*(x-1)-1/2*cos(1)*(x-1)^24.5符号积分变换
4.5.1Fourier变换F=fourier(f,t,w)%求f的fourier变换Ff=ifourier(F,w,t)%求F的fourier反变换f例
使用fourier函数和ifourier函数对符号表达式cos(2t)进行积分变换。>>symst;f1=cos(2*t);>>ff1=fourier(f1) %fourier变换ff1=pi*(dirac(w-2)+dirac(w+2))>>if1=ifourier(ff1) %fourier反变换if1=exp(-x*2i)/2+exp(x*2i)/2>>if2=simplify(if1) %化简if2=cos(2*x)dirac4.5.2Laplace变换F=laplace(f,t,s)%求以t为变量f的Laplace变换Ff=ilaplace(F,s,t)%求F的Laplace反变换f例:计算表达式的拉式变换。>>symsABat>>lf1=laplace(heaviside(t))%单位阶跃函数求拉式变换lf1=1/s>>f1=A*t^3+B*exp(a*t)>>F1=laplace(f1)F1=6*A/s^4+B/(s-a)Heaviside例
根据图形计算函数的laplace变换波形表示为:f(t)=u(t)-u(t-τ)>>symsAt>>tou=sym('tou','positive’);%定义tao为正实型符号变量>>f1=A*heaviside(t)-A*heaviside(t-tou);>>F1=laplace(f1)F1=A/s-A*exp(-s*tou)/s4.5.3Z变换F=ztrans(f,n,z) %求以n为变量的f的Z变换Ff=iztrans(F,z,n)%求以z为变量的F的z反变换f例:>>symsknzt>>zf1=ztrans(heaviside(t),n,z)%对单位阶跃函数求Z变换zf1=heaviside(t)*z/(z-1)>>zf12=symsum(heaviside(t)/z^n,n,0,inf) %使用级数求和求Z变换zf12=heaviside(t)*z/(z-1)4.5.4傅里叶分析和滤波在信号处理应用和计算数学中,傅里叶变换和滤波器是用于处理和分析离散数据的工具。1.快速傅里叶变换Y=fft(X,n)%用快速傅里叶变换算法计算X的离散傅里叶变换DFTX=ifft(Y,n)%使用快速傅里叶逆变换计算Y的逆离散傅里叶变换例:>>Fs=1000; %采样频率
>>T=1/Fs;L=100; %信号长度>>t=(0:L-1)*T;>>x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);>>z1=0.5*randn(size(t)); %白噪声>>Y=fft(x+z1); %快速傅里叶变换>>N=L/2;f=Fs*(0:(N))/L;>>stem(f(1:N),abs(Y(1:N))) %火柴杆图2.滤波函数filter和filter2函数为一维和二维数组滤波器:y=filter(b,a,x) %由有理传递函数对x滤波
说明:a和b是有理传递函数的分母和分子系数。例:对信号进行移动平均滤波。移动平均滤波器是用于对含噪数据进行平滑处理的常用方法,沿数据移动长度为windowSize的窗口,计算每个窗口中包含的数据的平均值。>>figure(3);windowSize=2; %窗口长度>>b=(1/windowSize)*ones(1,windowSize);a=1;>>y=filter(b,a,x+z1); %移动平均滤波>>plot(t,x+z1,t,y);legend('x+z1','y')4.6符号方程的求解
4.6.1代数方程的求解一般的代数方程包括线性方程、非线性方程和超越方程。当方程不存在解析解又无其他自由参数时,MATLAB提供了solve函数得出方程的数值解。solve(eqn,var) %求方程关于指定变量v的解solve(eqns,vars) %求方程组关于指定变量解例:解方程>>symsx>>assume(x<0)>>x1=solve(x^2-1==0)x1=-1例:解方程组例:>>symsxyzabc;>>f=solve(x^2+x*y+y,x^2-4*x+3)
%解方程组输出一个结果f=x:[1x1sym]y:[1x1sym]>>f.xans=13(x>1)
增加条件x>1>>assume(x>0)>>f=solve(x^2+x*y+y,x^2-4*x+3)>>x=double(f.x)练习:采用两种方法解方程组。4.6.2微分方程的求解dsolve(eqn,cond,var) %求解微分方程说明:先使用syms对变量var和函数进行定义,var省略则默认为自由符号变量;eqn是符号常微分方程,方程中diff表示微分;cond是初始条件,可省略,当初始条件少于微分方程数时,在所得解中将出现任意常数符C1,C2……,解中任意常数符的数目等于所缺少的初始条件数,是微分方程的通解。例
使用dsolve求解微分方程和方程组,微分方程为>>symsc(t)xyx(t)y(t)>>eqn1=diff(c,t,2)+1.414*diff(c,t)+c==1;>>cond1=[c(0)==0,c(1)==0];>>c=dsolve(eqn1,cond1); %解微分方程>>digits8;ct=vpa(c)>>[x,y]=dsolve(diff(x,t)==y,diff(y,t)==-x) %解微分方程组练习:求符号微分方程的通解和当y(0)=2的特解。>>symsxyy(x)>>y=dsolve(diff(y,x)==sin(x))
>>y=dsolve(diff(y,x)==sin(x),y(0)==2)4.7符号函数的可视化
4.7.1符号函数计算器在命令窗口中输入命令“funtool”,就会出现该符号函数计算器,由两个图形窗口(Figure1、Figure2)和一个函数运算控制窗口(Figur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 定制商品定金合同范例
- 项目策划 合同范例
- 五年级上册数学教案-8.2《钉子板上的多边形》 |苏教版
- 商铺转让转租合同范例
- 道路施工材料合同范例
- 餐饮供应酱料合同范例
- 蔬菜用工合同范例
- 剪辑运营员工合同范例
- 本田买车合同范例
- 防盗窗合同范例
- 浙江省绍兴市2025届高三上学期一模地理试题 含解析
- 安全与急救学习通超星期末考试答案章节答案2024年
- 人教 九下 历史 第五单元《社会主义的发展与挫折》课件
- 医疗器械注册专员培训
- 金属冶炼知识培训
- 2024-2025学年度广东省春季高考英语模拟试卷(解析版) - 副本
- 新疆喀什地区八年级上学期期末英语试题(含答案)
- 商会内部管理制度
- 2024年物业转让协议书范本格式
- 《建筑力学》期末机考资料
- 南水北调江苏水源公司2024年校园招聘高频难、易错点500题模拟试题附带答案详解
评论
0/150
提交评论