- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 符号运算基础;数值计算和符号计算;符号计算:
1)符号运算的对象是符号常量、变量或表达式(称为符号对象),符号运算以推理解析的方式进行,因此,利用Matlab的符号运算功能可以进行公式推导(例如:当表达式中含有符号时,仍可以进行加、减、乘、除等运算;可以进行公式化简、变量替换;当矩阵元素中存在符号时仍可求矩阵行列式、解线性方程组;合并同类项、(多项式)因式分解、展开;求反函数、复合函数;求极限、求导函数、求不定积分、求微分方程的解析解等…)。
2) 符号运算前,必须先定义符号变量,否则出错。
3) 符号计算的结果:或给出精确的封闭解,或给出任意精度的数值解(当封闭解不存在时)
;;;本章主要内容;3.1 符号对象的创建;定义符号常量;;;定义符号变量;sym函数只能创建一个符号变量,若要同时创建多个符号变量,可以使用syms函数,使用格式:
命令形式:
syms 变量1 变量2 … 变量n 参数
函数形式:
syms(‘变量1’,’变量2’, … ,’变量n’, ‘参数’)
例如:
syms a b
f=(a+b)^2
syms c d unreal
;定义符号表达式;另一种创建符号表达式的方式:;;定义符号矩阵常量符号矩阵的创建在符号常量中已介绍以下介绍符号变量矩阵的创建。;;例:求解以下关于x,y,z的线性方程组,并验证结果
其中,a,b,c是已知的参数。
程序如下:
syms a b c
A=[1 1 1;a b c; a^2,b^2,c]
B=sym([1;2;3])
S=A\B %或S=inv(A)*B
x=simple(S (1)),y=simple(S(2)),z=simple(S(3))
f1=simple(x+y+z-1)
f2=simple(a*x+b*y+c*z-2)
f3=simple(a^2*x+b^2*y+c*z-3)
;
例:利用符号运算求线性方程组 的通解,并进行验证
程序如下:
A=sym([1 1/2 1/2 -1;1 1 -1 1; 1 -1/4 -1 1]);
b=sym([0;10;0]);
X0=A\b %求特解
syms k
X=X0+k*null(A) %求通解
E=simple(A*X-b)
或
e1=simple(X(1)+X(2)/2+X(3)/2-X(4))
e2=simple(X(1)+X(2)-X(3)+X(4)-10)
e3=simple(X(1)-X(2)/4+X(4)-X(3));;符号表达式中自由变量的确定--findsym;[例]对独立变量的自动确定
1) 创建符号表达式EXPr
syms a b x X Y; k=sym(‘3’);
Z=sym(‘c*cos(delta)+y*sin(delta)’);
EXPr=a*z*Z+(b*x^2+k)*Y;
2)找出EXPr中的所有自由符号变量
findsym(EXPr)
3) 确定EXPr中的一个自由变量
findsym(EXPr,1)
4)确定EXPr中的2个和3个自由变量
findsym(EXPr,2)
findsym(EXPr,3)
;函数sym的用法总结: ;3.2 符号表达式的基本运算;2.常用函数
1)三角函数和双曲函数及它们的反函数
除atan2仅能用于数值计算外,其余的三角函数、双曲函数及它们的反函数既可用于数值计算,也可用于符号计算,用法相同。
2)指数函数和对数函数
与数值计算中相同,有sqrt, exp, expm, log等。
3)复数函数
涉及复数的共轭conj、求实部real、求虚部imag和求模abs,与数值计算中用法相同。 但在符号计算中,没有提供求相角的命令。;4)矩阵分析函数
在符号计算中,Matlab提供的矩阵分析函数主要有:det, inv, rank, diag, triu,tril, trace, rref,null, colspace, eig,svd等,它们的用法与在数值计算中几乎完全一样。
;3.2.2 符号运算中特有的一些基本操作 ;[例2]在命令行输入以下语句,用不同的方式对下式进行化简
程序:
syms x
f=(1/x^3+6/x^2+12/x+8)^(1/3);
fy1=simplify(f)
fy2=simplify(fy1)
f1=simple(f)
f2=simple(f1)
pretty(f2)
;[例3] 计算行列式 的值
程序:
syms a b c
A=[1 1 1;a b c; a^2 b^2 c^2];
d1=det(A)
d2
文档评论(0)