资源描述:
《matlab符号计算1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章MATLAB的符号运算——Matlab不仅具有数值运算功能,还开发了在Matlab环境下实现符号计算的工具包SymbolicMathToolbox符号运算的功能符号运算符号线性代数因式分解、展开和简化符号代数方程求解符号微积分符号微分方程主要内容符号运算符号变量与符号表达式符号矩阵符号运算扩展——maple函数符号运算与数值运算的区别数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。特点:运算对象可以是没赋值的符号变量可以获得任意精度的解SymbolicMathT
2、oolbox——符号运算工具包通过调用Maple软件实现符号计算的。Maple软件——主要功能是符号运算,它占据符号软件的主导地位。符号变量与符号表达式f='sin(x)+5x'f——符号变量名sin(x)+5x——符号表达式''——符号标识注1:符号表达式一定要用''单引号括起来Matlab才能识别。注2:''的内容可以是符号表达式,也可以是符号方程。例:f1='ax^2+bx+c'——二次三项式f2='ax^2+bx+c=0'——方程f3='Dy+y^2=1'——微分方程注3:符号表达式或符号方程可以赋给符号变量,以后
3、调用方便;也可以不赋给符号变量直接参与运算符号矩阵的创建数值矩阵A=[1,2;3,4]A=[a,b;c,d]——不识别用Matlab函数sym创建矩阵(symbolic的缩写)命令格式:A=sym('[]')注:符号矩阵内容同数值矩阵需用sym指令定义需用''标识例如:A=sym('[a,2*b;3*a,0]')A=[a,2*b][3*a,0]这就完成了一个符号矩阵的创建。注:符号矩阵的每一行的两端都有方括号,这是与Matlab数值矩阵的一个重要区别。用字符串直接创建矩阵模仿Matlab数值矩阵的创建方法,需保证同一列中各元素
4、字符串有相同的长度。例:A=['[a,2*b]';'[3*a,0]']A=[a,2*b][3*a,0]符号矩阵的修改a.直接修改可用、键找到所要修改的矩阵,直接修改b.指令修改用A1=sym(A,,,'new')来修改。用A1=subs(A,'new','old')来修改例如:A=[a,2*b][3*a,0]A1=sym(A,2,2,'4*b')A1=[a,2*b][3*a,4*b]A(2,2)='4*b'A3=[a,2*b][3*a,4*b]A2=subs(A1,'c','b')A2=[a,2*c][3*a,4*c]将
5、数值矩阵转化为符号矩阵函数调用格式:sym(A)A=[1/3,2.5;1/0.7,2/5]A=0.33332.50001.42860.4000sym(A)ans=[1/3,5/2][10/7,2/5]符号矩阵与数值矩阵的转换将符号矩阵转化为数值矩阵函数调用格式:numeric(A)A=[1/3,5/2][10/7,2/5]numeric(A)ans=0.33332.50001.42860.40001)符号矩阵运算数值运算中,所有矩阵运算操作指令都比较直观、简单。例如:a=b+c;a=a*b;A=2*a^2+3*a-5等。而符号运
6、算就不同了,所有涉及符号运算的操作都有专用函数来进行符号运算例:f='2*x^2+3*x-5';g='x^2+x-7';h=symadd(f,g)h=3*x^2+4*x-12例:f='cos(x)';g='sin(2*x)';symop(f,'/',g,'+',f,'*',g)ans=cos(x)/sin(2*x)+cos(x)*sin(2*x)例:f=2*x^2+3*x-5;g=x^2+x-7;>>symsx>>f=2*x^2+3*x-5;g=x^2+x-7;>>h=f+gh=3*x^2+4*x-12例:f=cos(x);g=s
7、in(2*x);>>symsx>>f=cos(x);g=sin(2*x);>>f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)2)任意精度的数学运算在symbolic中有三种不同的算术运算:数值类型matlab的浮点算术运算有理数类型maple的精确符号运算vpa类型maple的任意精度算术运算浮点算术运算1/2+1/3--(定义输出格式formatlong)ans=0.83333333333333符号运算sym(1/2)+(1/3)ans=5/6--精确解任意精度算术运算函数digits(n)——设置
8、可变精度,缺省32位vpa(x,n)——显示可变精度计算digits(25)vpa(1/2+1/3)ans=.8333333333333333333333333vpa(5/6,40)ans=.8333333333333333333333333333