1 / 37

三 符号运算

数学实验. 三 符号运算. Matlab 符号运算介绍. Matlab 符号运算是通过 符号数学工具箱 ( Symbolic Math Toolbox) 来实现的。 Matlab 符号数学工具箱是建立在功能强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时,它就请求 Maple 软件去计算并将结果返回给 Matlab。.

phil
Download Presentation

三 符号运算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数学实验 三 符号运算

  2. Matlab 符号运算介绍 • Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时,它就请求 Maple 软件去计算并将结果返回给 Matlab。 • Matlab 的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等。此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。

  3. Matlab 符号运算举例 • 求一元二次方程 ax2 + bx + c = 0的根 >>solve('a*x^2+b*x+c') • 求的根 f (x) = (cosx)2的一次导数 >>x=sym('x'); >>diff(cos(x)^2) • 计算 f (x) = x2在区间 [a, b]上的定积分 >>syms a b x; >>int(x^2,a,b)

  4. 符号对象的创建和使用

  5. 符号对象与符号表达式 • 在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。符号对象是一种数据结构。 • 含有符号对象的表达式称为符号表达式,Matlab 在内部把符号表达式表示成字符串,以与数字变量或运算相区别。 • 符号矩阵/数组:元素为符号表达式的矩阵/数组。

  6. 符号变量=sym(A) 参数 A可以是一个数或数值矩阵,也可以是字符串 例: >>a=sym('a') a是符号变量 b是符号常量 c是符号矩阵 符号对象的建立 • 符号对象的建立:sym和 syms • sym函数用来建立单个符号量,一般调用格式为: >>b=sym(1/3) >>c=sym('[1 ab; c d]')

  7. 例: >>syms a b c 符号对象的建立 • 符号对象的建立:sym和 syms • syms命令用来建立多个符号量,一般调用格式为: syms 符号变量1 符号变量2 ... 符号变量n >>a=sym('a'); >>b=sym('b'); >>c=sym('c');

  8. 符号表达式的建立 • 符号表达式的建立: 建立符号表达式通常有以下2种方法: (1) 用 sym函数直接建立符号表达式。(2) 使用已经定义的符号变量组成符号表达式。 例: >>y=sym('sin(x)+cos(x)') >> x=sym('x'); >>y=sin(x)+cos(x)

  9. 符号方程的建立 • equ=sym(‘equaion’) 符号方程的建立只有一种 eq1=sym(‘5*x=6+a’) eq1= 5*x=6+a

  10. 符号矩阵的创建 • 1. 利用 sym 直接创建。 • 2. 利用 syms 间接创建。 • 3. 由数值矩阵转化为符号矩阵。 例: M=[1 2;3 4]; S=sym(M) S= [1 ,2] [3 ,4]

  11. 符号对象的基本运算

  12. 1. 基本运算符 • 2. 关系运算符 • 3. 三角函数、双曲函数以及它们的反函数 • 4. 指数、对数函数 • 5. 复数函数 • 6. 矩阵代数指令 以上运算与数值运算相同。

  13. 任意精度数学计算

  14. 有理数运算: 方法一: format long %指定输出格式 1/2+1/3 %一般的浮点运算 sym(1/2+1/3) %有理数运算(符号运算) 结果如下: ans= 0.83333333333333 ans= 5/6

  15. 有理数运算: 方法二 format rat 1/2+1/3 ans= 5/6

  16. 符号运算是最快的运算,需要的计算机内存最小,但结果并不精确。符号运算是最快的运算,需要的计算机内存最小,但结果并不精确。 而符号运算中的有理数算术运算,它所需要的时间和内存开销都是最大的。只要有足够的内存和足够长的计算时间,总能产生精确的结果。

  17. digits(d) • 调用该函数后的近似解的精度变成d 为有效数字。d的默认值是32位。 • vpa(A,d) • 求符号解A的近似值,该近似解的有效位数由参数d来指定。如果不指定d,则按照一个digits(d)指令设置的有效位数输出。 • double(A) • 把符号矩阵或任意精度表示的矩阵A转换成为双精度矩阵。

  18. 问: 请给出sin(pi/8)保留6位有效数字的结果。 a=sin(pi/8); b=sym(a); vpa(b,6)

  19. 符号表达式的化简 • 1. collect() 函数实现功能为将符号表达式中同类项合并 R=collect(s ,v) 将表达式S 中v 的相同次幂的项进行合并。如果 v 没有指定,则缺省地将含有x 的相同次幂的项进行合并。

  20. 例子 • syms x f=(x-1)*(x-2)*(x-3) collect(f) 结果为: ans= -6+x^3-6*x^2+11*x

  21. 2. expand() 函数实现功能为将表达式进行展开。 R=expand(S): 将表达式S 中的各项进行展开,如果S 包含函数,则利用恒等变形将它写成相应的和的形式。该函数多用于多项式,有时也用于三角函数、指数函数和对数函数。

  22. 例子 • 多项式的展开示例: • syms x y; • f= (x+y)^3; • f1=expand(f) 得到结果: f1= x^3+3*x^2*y+3*x*y^2+y^3

  23. 例子 • 三角函数的展开示例 • h=cos(x-y) • expand(h) 得到结果: ans= cos(x)*cos(y)+sin(x)*sin(y)

  24. 3. factor() 函数实现将符号多项式进行因式分解。 factor(X): 如果X是一个多项式或多项式矩阵,系数是有理数,那么该函数将把X 表示成系数为有理数的低阶多项式相乘的形式;如果X不能分解成有理多项式乘积的形式,则返回X本身。

  25. 例子 • syms x y a b • factor(x^3-y^3) 得到结果: ans= (x-y)*(x^2+x*y+y^2)

  26. 4.simple() 寻找一个符号表达式的最简形式。 r=simple(S):用几种不同的算术简化规则对符号表达式进行简化,返回使表达式S 变得简短的形式。如果S 是符号表达式矩阵,则返回使整个矩阵变成最短的形式,而不一定使每一项都最短。

  27. 例子 • syms x • sinple(cos(x)^2+sin(x)^2) 输出的结果: ans= 1

  28. 符号表达式的替换 • 用给定的数据替换符号表达式中的指定的符号变量 subs(f,x,a) 用 a替换字符函数f中的字符变量 xa是可以是 数/数值变量/表达式 或 字符变量/表达式 若 x是一个由多个字符变量组成的数组或矩阵, 则 a应该具有与 x相同的形状的数组或矩阵。

  29. 下面的命令运行结果会是什么? >>subs(f3,[x,y],[x+y,x+y]) subs 举例 • 例:指出下面各条语句的输出结果 f=2*u >>f=sym('2*u'); >>subs(f,'u',2) >>f2=subs(f,'u','u+2') >>a=3; >>subs(f2,'u',a+2) >>subs(f2,'u','a+2') >>syms x y >>f3=subs(f,'u',x+y) >>subs(f3,[x,y],[1,2]) ans=4 f2=2*(u+2) ans=14 ans=2*((a+2)+2) f3=2*x+2*y ans=6

  30. 求极限 命令 极限

  31. 例:求极限 求极限 • 例:求极限 • 例:求极限 • 例:求极限 • 例:求极限 • 例:求极限 解:syms x y=1/(x*(log(x))^2)-1/(x-1)^2 limit(y,x,1,’right’) >> ans= 1/12

  32. 求导数与微分 • 对符号函数求导数 命令1:diff(f) 求 f 的一阶导数,其中 f 是符号函数。 命令2:diff(f, n) 求 f 的 n 阶导数,其中 f 是符号函数。

  33. 参数方程求导 参数方程: 所确定的函数 y 的一阶导数为: 可用连续用两次 diff(x)求出结果。

  34. 的一阶导数。 参数方程求导 • 例:求参数方程 解: syms t x=t*(1-sin(t)); y=t*cos(t); dx=diff(x,t) ; dy=diff(y,t); pretty(dy/dx)

  35. 多元函数求导 • 命令1:diff(f,x) 求函数 f 对变量 x 的一阶导数,其中 f 是符号函数。 • 命令2:diff(f,x,n) 求函数 f 对变量 x 的 n 阶导数,其中 f 是符号函数。

  36. 多元函数求导 求 • 例:对函数 解:syms x y; z=x^3*y^2+sin(x*y); dzx=diff(z, x); dzxy=diff(dzx, y); pretty(dzxy)

  37. y=y(x) • 方程 确定的函数 确定的函数 • 方程 隐函数求导

More Related