MATLAB学习笔记(二):符号计算(创建符号对象)

ARM 132浏览

2.1 符号对象和符号表达式

   创建一个基本符号对象 

syms a

 创建一个基本的符号数字

sym('num') sc=sym('num')

符号类数字与数值类数字的差别

>> clear >> a=5+pi,b=sym('5+pi'),ca=class(a),cb=class(b),vpa(a-b)  a =      8.1416    b =   pi + 5    ca =  double   cb =  sym    ans =   -0.00000000000000012246467991473531772260691423833

符号表达式

由符号变量构成的表达式叫符号表达式

如求方程 uz^2+vz+w=0的解

>> clear >> syms u v w z >> Eq=u*z^2+v*z+w; >> solve(Eq)   ans =   - u*z^2 - v*z   >> findsym(Eq),findsym(Eq,1)  ans =  u,v,w,z   ans =  w

两个好玩的指令:solve() 解方程函数,默认离x绝对值最小的字母为未知数,也可以对指定变量解方程,如 solve(Eq,z);

                                findsym(Eq) 确认表达式Eq中所有的自由符号变量(表达式也可以是符号矩阵)

                                 findsym(Eq,N) 从表达式中确认出距离x最近的N个自由符号变量

 

                  

2.2 符号数字及表达式的操作

数值数字与符号数字之间的强制转换

>> clear >> a=88;b=sym('88'); >> class(sym(a)),class(double(b))  ans =  sym   ans =  double

补:class(变量名) 返回该变量的数据类型

符号数字任意精度的计算

>> clear >> a=88; >> x=vpa(a)   x =   88.0   >> class(x)  ans =  sym 

一个指令: vpa(x)  将表达式x转换为32位(默认 可以改变,用 vpa(x,n))精度下的符号数字

符号运算中有许多操作指令,如collect(合并同类项) ,expand(对指定项展开),factor(进行因子分解) ,numden(提取公因式) ,pretty(习惯方式显示) 但其中最常用的是 

simple(Eq) 把Eq化简成最简形式

如 简化 f=(1/x^3+6/x^2+12/x+8)^(1/3)

>> clear >> syms x >> f=(1/x^3+6/x^2+12/x+8)^(1/3); >> Eq=simple(f)   Eq =   ((2*x + 1)^3/x^3)^(1/3)

fuck 。。。其实还是能继续化简成 2+1/x 的,不知道怎么回事多次化简也没能解决这个问题,难道是版本问题?

先到这。。第二章还有很多看来今天写不完了。。QAQ