P38
1. syms是定义符号变量 sym是将字符或者数字转换为字符(??)
2.书上例程symvar,应为我的版本是7.0的,所以用findsym, 列出自由变量
EXPR =a*(p*q^(1/2)+r*sin(t))*u+(b*x^2+3)*v;
findsym(EXPR) ans =a, b, p, q, r, t, u, v, x; findsym(EXPR,5) ans =x,v,u,t,r
3.solve Eq =u*w^2+z*w-v; findsym(Eq,4) ans =w,z,v,u
solve(Eq) ans =
1/2/u*(-z+(z^2+4*u*v)^(1/2))
1/2/u*(-z-(z^2+4*u*v)^(1/2)) (此时默认是对自变量w求解)
如果要对 解关于z的表达式,则solve(Eq,z) ans =-(u*w^2-v)/w
4. simplify 简化函数形式,simplify(w^2+8+9) ;ans =w^2+17
5.subs() 函数表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为:
R = subs(S, new) 利用new的值代替符号表达式S中的默认符号。
R = subs(S) 用由调用函数或Matlab工作空间中获取的值替代了在符号表达式S中的所有当前的变量。
R = subs(S, old, new) 利用new的值代替符号表达式中old的值。
subs(Eq,s1) ans=u*(u*w^2-v)^2/w^2-z*(u*w^2-v)/w-v
subs(Eq,z,s1) ans =0
subs(Eq) ans =u*w^2+z*w-v
也可以求函数值:
已知f2(x)=(sinx)^3+2sinx+3,利用subs求x=[3 6 5]时的f2
6. A=[a+b*x,sin(t);x*exp(-t),log(y)+v]
A =
[ a+b*x, sin(t)]
[ x*exp(-t), log(y)+v]
>> A(2,2) ans = log(y)+v
>> solve(A(2,2)) ans =1/exp(v)
>> solve(A(2,1)) ans =0
7.class,isa class(Mn) ans=char; isa(Mn,'char') ans=1;
8.
>> a=1;b=2;c=3;d=4;
>> Mn=[a,b;c,d]Mn =
1 2
3 4
>> Mc='[a,b;c,d]'
Mc =
[a,b;c,d]
>> Ms=sym(Mc)Ms =
[ a, b]
[ c, d]
>> whos Mn Mc MsName Size Bytes Class
Mc 1x9 18 char array
Mn 2x2 32 double array
Ms 2x2 312 sym object
Grand total is 21 elements using 362 bytes