- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab 符号计算; 所谓符号计算是指在运算时, 无须事先对变量赋值,而将所得到结果以标准的符号形式来表示
特点:
(1)运算对象可以是没赋值的符号变量
(2)可以获得任意精度的解
(3) 符号计算的时间长,而数值计算的速度较快。
;一、定义符号变量
参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。
1、 syms 函数
在一个语句中同时定义多个符号变量,其一般格式为:
syms arg1 arg2 …argN
;例如: syms x y a b c
f=a*x^2+b*x+c %建立符号表达式
syms a11 a12 a21 a22
A=[a11 a12;a21 a22] % 建立符号矩阵
A =
[ a11, a12]
[ a21, a22]
每行都有方括号,这是与数值矩阵的一个重要区别
; (1) 基本运算符(‘+’,‘-’,‘*’,‘/’,’^’,’.*’,’./’等)与数值计算相同.
(2) 不能使用 ’’, ’=’, ’’, ’=’ 关系运算符,但可以使用 ’==’, ’~=’ 运算.
2、sym 函数
(1)把字符表达式转换为符号变量
(2)将数值矩阵转化为符号矩阵
例如:
syms x
y=sym(2*sin(x)*cos(x))
A=[1/3,2.5;1/0.7,2/5]
B=sym(A);将符号矩阵转化为数值矩阵
函数调用格式: numeric(A)
3、任意精度的数学运算
(1) 有理数类型精确符号运算
sym(1/2)+sym(1/3)
(2) vpa 类型----任意精度算术运算
;digits(n) —— 设置可变精度,缺省 16 位
vpa(x,n) —— 显示可变精度计算
例如:digits(20)
vpa(1/2+1/3)
a=sym([1/4,exp(1);log(3),3/7])
vpa(a,10);二、因式分解、展开和简化 ;3、合并同类项 (collect)
syms x y
collect(x^2*y+y*x-x^2-2*x)
4、分式通分 [N,D]=numden(A)
[n,d]=numden(x/y+y/x)
n: 分子
d: 分母
5、书写习惯显示符号表达式的函数(pretty)
pretty(x^4-5*x^3+5*x^2+5*x-6 )
A=[3/2,(x^2+3)/(2*x-1)+3*x/(x-1);4/x^2,3*x+4];
pretty(A)
;6、符号简化 simplify(s)
simplify(sin(x)^2+cos(x)^2)
;三、符号变量的替换;f=sym(‘(x+y)^2+3*(x+y)+5’) ;
x=2; y=5;
f1=subs(f)
%%%%%%%%%%%%%%%%%%%
f=sym((x+y)^2+3*(x+y)+5);
f2=subs(f,‘x+y’,‘s’) %用 s 替换x+y
%%%%%%%%%%%%%%%%%%%%%
syms a x;
f=a*sin(x)+5;
f3=subs(f,{a,x},{2,pi/3})
f4=subs(f,{a,x},{sym(2),sym(pi/3)})
比较 f3 与 f4 的差异;四、符号变量字母的优先顺序
符号计算中,x 是首选的符号变量,其后的次序排列规则是:与 x 的 ASCII 码值之差的绝对值小的字母优先; 差的绝对值相同时,ASCII 值大的字母优先.自动识别符号变量时,字母的优先次序为x,y,w,z,v等, 可通过命令findsym 查寻
;s=‘xywzv’;
double(s)-double(‘x’)
syms x w z
ff=f*x*z^2
findsym(ff) %查看表达式中所有自由符号变量
findsym(ff,2) %按最优顺序查找 2 个自由符号变量
;五、符号函数在高等数学中的应用;例如:
syms x k
f=(1-1/x)^(k*x)
y=limit(f,x,inf) %求x趋于无穷时的极限
%%%%%%%%%%%%%%%%%%%%
A=[(1+x)^(1/x) exp(-x);sin(x)/x 1/x]
B=limit(A,x,inf)
C=limit(A,x,0,left)
;2、导数;3、积分;4、泰勒展开;5、级数求和;求级数的和:
1/12+1/22+1/32+1/42+ ……
syms k
文档评论(0)