完整word版,MATLAB符号运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)