[工学]3:Matlab的符号运算功能.ppt_第1页
[工学]3:Matlab的符号运算功能.ppt_第2页
[工学]3:Matlab的符号运算功能.ppt_第3页
[工学]3:Matlab的符号运算功能.ppt_第4页
[工学]3:Matlab的符号运算功能.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

符号运算的基本概念 符号运算功能 符号函数及运算 符号矩阵及运算 符号微积分 符号微分方程求解 符号代数方程求解 MatLab的符号运算工具箱(symbolic Toolbox),可以提供150多个函数,基本 上可以实现常用的各种符号计算功能;同时 具有与Maple的接口,以实现更多的功能 。(Matlab的 符号运算功能是从Maple引 入的。) 符号运算的基本概念 字符串和字符串函数 一、字符串的约定 以单引号设定输入或赋值; 例:s=matrix laboratory 注:每个字符都是矩阵s的一个元素,包括空格。 字符串和字符矩阵基本等价。 试比较: A1=a b;c d A2=a b; c d 字符串函数 字符数组的生成函数 char 例:s3=char(s,y,m,b,l,i,c); s3 ans = symbolic double(s3) 字符串转数值代码。 比较: s2=char(symbolic) s1=symbolic cellstr 字符数组转为字符串。 数值数组和字符串之间的转换函数表 函数名可实现功能函数名可实现功能 Num2str数字转字符串 Str2num字符串转 数字 Int2str整数转字符串Springf将格式数据 写为字符串 Mat2str矩阵转字符 串 sscanf在格式控制 下读字符串 试比较: a=1:5; b=num2str(a); a*2; b*2 字符串操作函数 函数名 可实现功能函数名 可实现功能 Strcat链结串strrep以其他串代替此串 Strvcat垂直链结串strtok寻找串中记号 Strcmp 比较串upper转换为 大写 Strncmp 比较串的前N个 字符 lower转换串为小写 Findstr在其它串中找此 串 blank生成空串 Strjust验证字符数组deblank 移去串内空格 strmath 查找可能匹配的 字符串 执行字符串功能的函数eval 例:n=4; t=1/(i+j-1); a=zeros(n); for i=1:n for j=1:n a(i,j)=eval(t); end end a = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 符号表达式的生成 符号表达式包括符号函数(不包括等号) 和符号方程(必须带有等号)。 符号函数符号方程符号微分方 程 F=log(x)Equation=a*x2+ b*x+c=0 Diffeq=Dy-y=x F=sym(sin(x) Syms x F=sin(x)+cos(x) 符号和数值之间的转换 digits(D) 设置返回有效个数为D的近似解精度。 R=vpa(S) 返回符号表达式在其前的digits设置下的精度 的数值解。 vpa(S,D) 返回符号表达式的digits(D)精度的数值解。 例:求方程的精确解和各种精度的近似解。 解: s=solve(3*x2-exp(x)=0) s = -2*lambertw(-1/6*3(1/2) -2*lambertw(-1,-1/6*3(1/2) -2*lambertw(1/6*3(1/2) vpa(s) ans = .91000757248870906068 3.7330790286328142006 -.45896226753694851460 vpa(s,6) ans = .910008 3.73308 -.458962 W = LAMBERTW(X) is the solution to w*exp(w) = x 符号函数的运算 复合函数的运算 compose 复合函数运算函数; compose (f , g ) 返回当和时的复合函数,这里是syms 定义的符号变量,为syms定义的符号变量; compose (f , g , z ) 返回自变量为复合函数; Compose(f , g , x , z ) 返回复合函数且使得 为的独立变量。即若,则compose (f , g , x , z)返回,而compose (f , g , t , z )返回; Compose (f , g , x , y , z ) 返回复合函数并使 得为的独立变量,为的独立变量。即若, 则compose (f , g , x , y , z)返回,而 compose (f , g , x , u , z )返回; 例:复合函数的运算。 syms x y z t u; f=1/(1+x2); g=sin(y); h=xt; p=exp(-y/u); compose(f,g) ans =1/(1+sin(y)2) compose(f,g,t) ans =1/(1+sin(t)2) compose(h,g,x,z) ans =sin(z)t compose(h,g,t,z) ans =xsin(z) compose(h,p,x,y,z) ans =exp(-z/u)t compose(h,p,t,u,z) ans =xexp(-y/z) 反函数的运算 finverse 反函数运算函数 g=finverse(f) 符号函数的反函数。仅一个变量时可用。 g=finverse(f,v) 符号函数的反函数,为自变量。有多个变量 时建议使用。 例: f=x2+y f = x2+y finverse(f,y) ans = -x2+y finverse(f) Warning: finverse(x2+y) is not unique. ans = (-y+x)(1/2) finverse(f,x) Warning: finverse(x2+y) is not unique. MATLABtoolboxsymbolicsymfinve rse.m at line 43 ans = (-y+x)(1/2) 此处的Warning提示反函数是不唯一。 符号矩阵的创立 使用sym 函数: 例如: a=sym(1/s+x,sin(x) cos(x)2/(b+x);9,exp(x2+y2),log(tanh(y) ) a = 1/s+x, sin(x), cos(x)2/(b+x) 9, exp(x2+y2), log(tanh(y) 用创建子阵的方法创建符号矩阵 ms=1/s,sin(x) ; 1 , exp(x) ms = 1/s,sin(x) 1, exp(x) b=a;exp)-i),3,x3+y9 b = 1/s+x, sin(x), cos(x)2/(b+x) 9, exp(x2+y2), log(tanh(y) exp)-i), 3, x3+y9 本方法不用sym命令,但必须保持同列各元 素字符具有相同的长度。 将数值矩阵转化为符号矩阵 在Matlab中,数值矩阵不能直接参与符号运算 ,必须先转化为符号矩阵。 例:a=2/3,sqrt(2),0.222;1.4,1/0.23,log(3) a = 0.6667 1.4142 0.2220 1.4000 4.3478 1.0986 b=sym(a) b = 2/3, sqrt(2), 111/500 7/5, 100/23, 4947709893870347*2(-52) 符号矩阵的索引和修改 可以对矩阵的某个元素进行表示或修改,例 如 b(2,3) ans= 4947709893870347*2(-52) b(2,3)=log(9) b= 2/3, sqrt(2), 111/500 7/5, 100/23, log(9) 符号矩阵的运算 符号矩阵的运算基本与数值矩阵的运算相同。 符号微积分 一、符号极限 limit limit(F,x,a) limit(F,a) limit(F) limit(F,x,a,right) 单侧极限 limit(F,x,a,left) 例: syms x a t h; limit(sin(x)/x) ans = 1 limit(1+2*t/x)(3*x),x,inf) ans = exp(6*t) limit(1/x,x,0,right) ans = inf limit(1/x,x,0,left) ans = -inf 二、符号积分 int(S) int(S,v) int(S,a,b) int(S,v,a,b) 三、符号微分 diff(S) diff(S,v) diff(S,n) Gradient (梯度函数) 符号代数方程的求解 线性方程组的解析解法 a=sym(10 -1 0;-1 10 -2; 0 -2 10) a = 10, -1, 0 -1, 10, -2 0, -2, 10 b=(9;7;6); linsolve(a,b) ans = 473/475 91/95 376/475 vpa(ans) ans = .99578947368421052631578947368421 .95789473684210526315789473684211 .79157894736842105263157894736842 例:用fsolve函数求解: x1-0.7sinx1-0.2cosx2=0 x2-0.7cosx1+0.2sinx2=0 解:先编制函数文件fc.m如下: %fc.m function y=fc(x) y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2); y(2)=x(2)-0.7*cos(x(1)+0.2*sin(x(2); y=y(1) y(2); 在Matlab窗口中输入: x0=0.5 0.5; fsolve(fc,x0) ans = 0.5265 0.5079 符号微分方程求解 dsolve Examples: dsolve(Dx = -a*x) returns ans = exp(-a*t)*C1 x = dsolve(Dx = -a*x,x(0) = 1,s) returns x = exp(-a*s) y = dsolve(Dy)2 + y2 = 1,y(0) = 0) returns y = sin(t) -sin(t) S = dsolve(Df = f + g,Dg = -f + g,f(0) = 1,g(0) = 2) returns a structure S with fields S.f = exp(t)*cos(t)+2*exp(t)*sin(t) S.g = -exp(t)*sin(t)+2*exp(t)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论