完整word版,MATLAB符号运算 联系客服

发布时间 : 星期六 文章完整word版,MATLAB符号运算更新完毕开始阅读488ffe1a0129bd64783e0912a216147916117e44

.

符号运算

科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。

符号变量的生成和使用

1、符号变量、符号表达式和符号方程的生成 (1)、使用sym函数定义符号变量和符号表达式 单个符号变量 sqrt(2)

sym(sqrt(2)) %显示精确结果 a=sqrt(sym(2)) %显示精确结果 double(a)

sym(2)/sym(3) %显示精确结果 2/5+1/3

sym(2/5+1/3) %显示精确结果 sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果

sym函数定义符号表达式:单个变量定义法,整体定义法 单个变量定义法 a=sym('a') b=sym('b') c=sym('c') x=sym('x')

f=a*x^2+b*x+c 整体定义法

f=sym('a*x^2+b*x+c') g=f^2+4*f-2 (2)、使用syms函数定义符号变量和符号表达式 一次可以创建任意多个符号变量syms var1 var2 var3… syms a b c x f=a*x^2+b*x+c g=f^2+4*f-2 (3)、符号方程的生成

函数:数字和变量组陈的代数式 方程:函数和等号组成的等式 用sym函数生成符号方程: equation1=sym('sin(x)+cos(x)=1') 2、符号变量的基本操作 (1)、findsym函数用于寻找符号变量 findsym(f):找出f表达式中的符号变量

findsym(s,n):找出表达式s中n个与x接近的变量 syms a alpha b x1 y findsym(alpha+a+b)

..

.

findsym(cos(alpha)*b*x1+14*y,2) findsym(y*(4+3i)+6j)

findsym(cos(alpha)*b*x1+14*y,1) findsym(cos(alpha)*b*x1+14*y,3)

%x1,y %x1 %x1,y,b

(2)、任意精确度的符号表达式

digits函数设定所用数值的精度

digits:在command window显示当前设定的数值精度 digits(D):设置数值的精度为D

D=digits:在command window中返回当前设定数值精度 digits

digits(100) D=digits

vpa函数进行可控精度运算

R=vpa(S):显示符号表达式S在当前精度D下的值,D是使用digits函数设置的数值精度 vpa(S,D):显示符号表达式S在精度D下的值,D不是当前精度值,只是临时设置的 r=vpa(pi)

r=vpa(pi,1000) q=vpa(hilb(2)) q=vpa(hilb(2),6) (3)、数值型变量与符号型变量的转换形式 数值型变量t转换成符号型变量 有理数形式:sym(t)或sym(t,’r’) 浮点数形式:sym(t,’f’) 指数形式:sym(t,’e’)

指数精度形式:sym(t,’d’) t=0.1 sym(t) sym(t,'r') sym(t,'f') sym(t,'e') sym(t,'d')

可以通过digits函数改变精度 digits(7) sym(t,'d')

也可以用于矩阵,但是矩阵只能转换为有理数形式 A=hilb(4) A=sym(A)

A=sym(A,'d') %报错 A=sym(A,'e') %报错 A=sym(A,'f') %报错

3、符号表达式(符号函数)的操作 (1)、四则运算(与通常算术式一样) syms x y a b

fun1=sin(x)+cos(y)

..

.

fun2=a+b fun1+fun2 (2)、合并同类项

collect(S,v):将符号矩阵S中所有同类项合并,并以v为符号变量输出 collect(S):使用findsym函数规定的默认变量,代替上式的v syms x y

collect(x^2*y+y*x-x^2-2*x)

f=-1/4*x*exp(-2*x)+3/16*exp(-2*x) collect(f)

(3)、因式分解

horner(P):将表达式P进行因式分解 syms x

fun1=2*x^3+2*x^2-32*x+40 horner(fun1)

fun2=x^3-6*x^2+11*x-6 horner(fun2)

(4)、简化

simplify(S):将表达式S中的每个元素都进行简化,即便使用多次simplify也不一定能得到最简形式 syms x

fun1=(1/x+7/x^2+12/x+8)^(1/3) sfy1=simplify(fun1) sfy2=simplify(sfy1)

simplify(sin(x)^2+cos(x)^2)

simple(S):使用多种代数方法对S进行简化,显其中最简单的结果 [R,how]=simple(S):R为最简结果,how为简化方法的字符串 s=2*cos(x)^2-sin(x)^2 simple(s)

[R how]=simple(s) simple(f)

(5)、subs函数用于替换求值

subs函数可以将符号表达式的符号变量替换为数值变量

subs(S) :将S中自由符号变量用调用函数中的值或是MATLAB工作区间值替换 subs(S,new):将S中自由符号变量用数值型变量或表达式new替换 subs(S,old,new):将S中符号变量old用 数值型变量或表达式new替换 syms x y

f=x^2*y+5*x*sqrt(y) subs(f) subs(f,x,3) subs(f,y,3) subs(f,3) %与subs(f,x,3)结果相同

用户没指定被替换的符号变量,对单个字母的变量,MATLAB选择在字母表中与x接近的字母,若有两个变量离x一样近,则选择字母表中靠后的那个 findsym(f,1)

..

.

syms s t g=s+t

findsym(g,1) %找到t subs(g,1) %替换为s+1 多个变量替换 syms a b

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2}) 用矩阵替换 syms t x y

subs(exp(a*t),a,-magic(2))

subs(x*y,{x,y},{[0 1;-1 -1],[1 -1;-2 1]}) (6)、反函数

g=finverse(f):求函数f的反函数,返回g也是符号函数

g=finverse(f,v):设定f的自变量是v,当f包括不止一个变量时最好使用该命令 syms x y f=x^2+y finverse(f,y) finverse(f) syms x f=x^2

%由于没指明自变量,给出警告

g=finverse(f) %x^2的反函数不唯一,默认给出正值 fg=simple(compose(g,f)) %验证反函数正确性 (7)、复合函数

compose(f,g):返回f=f(x),g=g(y)的复合函数f(g(y)),x是findsym定义的f的符号变量,y是findsym定义的g的符号变量

compose(f,g,z):返回f=f(x),g=g(y)的复合函数f(g(z)),返回函数以z为自变量 compose(f,g,x,z):返回f(g(z)),x为函数f的独立变量

compose(f,g,x,y,z):返回f(g(z)),x为函数f的独立变量,y为函数g的独立变量 syms x y z t u f=1/(1+x^2) g=sin(y) h=x^t

p=exp(-y/u) compose(f,g) compose(f,g,t) compose(h,g,x,z) compose(h,g,t,z) compose(h,p,x,y,z) compose(h,p,t,u,z)

符号矩阵的生成和运算 1、符号矩阵的生成 (1)、使用sym函数直接生成符号矩阵

a1=sym('[1/3 2/3 5/7;9/11 11/13 13/17;17/19 19/23 23/29]')

..