完整word版,MATLAB符号运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

符号运算

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

符号变量的生成和使用

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) %x1,y

findsym(y*(4+3i)+6j)

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

findsym(cos(alpha)*b*x1+14*y,3) %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)

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)

相关文档
最新文档