数学建模社区-数学中国
标题:
Matlab符号基本运算—4
[打印本页]
作者:
森之张卫东
时间:
2015-7-20 18:55
标题:
Matlab符号基本运算—4
命令16 代数方程的符号解析解
函数 solve
格式 g = solve(eq) %输入参量eq可以是符号表达式或字符串。若eq是一符号表达式
x^2 -2*x-1或一没有等号的字符串’x^2-2*x-1’,则solve(eq)对方程eq中的缺省变量(由
命令findsym(eq)确定的变量)求解方程eq=0。若输出参量g为单一变量,则对于有多重
解的非线性方程,g为一行向量。
g = solve(eq,var) %对符号表达式或没有等号的字符串eq中指定的变量var求解方程
eq(var)=0。
g = solve(eq1,eq2,…,eqn) %输入参量eq1,eq2,…,eqn可以是符号表达式或字符串。
该命令对方程组eq1,eq2,…,eqn中由命令findsym确定的n个变量如x1,x2,…,xn求解。
若g为一单个变量,则g为一包含n个解的结构;若g为有n个变量的向量,则分别返回结
果给相应的变量。
g = solve(eq1,eq2,…,eqn,var1,var2,…,varn) %对方程组eq1,eq2,…,eqn中指定的n个
变量如var1,var2,…,varn求解。
注意:对于单个的方程或方程组,若不存在符号解,则返回方程(组)的数值解。
例3-15
>>solve('a*x^2 + b*x + c')
>>solve('a*x^2 + b*x + c','b')
>>solve('x + y = 1','x - 11*y = 5')
>>A = solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a +6')
计算结果为:
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
ans =
-(a*x^2+c)/x
ans =
x: [1x1 sym]
y: [1x1 sym]
A =
a: [4x1 sym]
u: [4x1 sym]
v: [4x1 sym]
命令17 以共同的子表达式形式重写一符号表达式
函数 subexpr
格式 [Y,SIGMA] = subexpr(X,SIGMA)
[Y,SIGMA] = subexpr(X,'SIGMA')
说明 找出符号表达式 X中相同的子表达式,再结合命令pretty(X)将X中相同的、比较复
杂的子字符串用符号%1,%2,…代替。而用命令pretty(Y)将X中相同的、比较复杂的子字
符串用符号SIGMA代替。
例3-16
>>t = solve('a*x^3+b*x^2+c*x+d = 0');
>> [r,s] = subexpr(t,'s');
>>pretty(t)
>>pretty(r)
计算结果为:(略)
命令18 特征多项式
函数 poly
格式 p = poly(A)或p = poly(A, v)
说明 若A为一数值阵列,则返回矩阵A的特征多项式的系数,且有:命令poly(sym(A))
近似等于poly2sym(poly(A))。其近似程度取决于舍入误差的大小。若A为一符号矩阵,
则返回矩阵A的变量为x的特征多项式。若带上参量v,则返回变量为v的特征多项式。
例3-17
>>A = hilb(4);
>>p = poly(A)
>>q = poly(sym(A))
>>s = poly(sym(A),z)
计算结果为:
p =
1.0000 -1.6762 0.2652 -0.0017 0.0000
q =
x^4-176/105*x^3+3341/12600*x^2-41/23625*x+1/6048000
s =
-176/105*z^3+3341/12600*z^2-41/23625*z+1/6048000+z^4
命令19 将多项式系数向量转化为带符号变量的多项式
函数 poly2sym
格式 r = poly2sym(c)和r = poly2sym(c, v)
说明 将系数在数值向量c中的多项式转化成相应的带符号变量的多项式(按次数的降幂
排列)。缺省的符号变量为x;
若带上参量v,则符号变量用v显示。poly2sym使用命令sym的缺省转换模式(有理形式)
将数值型系数转换为符号常数。该模式将数值转换成接近的整数比值的表达式,否则
用2的幂指数表示。若x有一数值值,且命令sym能将c的元素精确表示,
则eval(poly2sym(c))的结果与polyval(c,x)相同。
例3-18
>>r1 = poly2sym([1 2 3 4])
>>r2 = poly2sym([.694228, sqrt(2), sin(pi/3)])
>>r3 = poly2sym([1 0 1 -1 2], y)
计算结果为:
r1 =
x^3+2*x^2+3*x+4
r2 =
6253049924220329/9007199254740992*x^2+x*2^(1/2)+1/2*3^(1/2)
r3 =
y^4+y^2-y+2
命令20 将复杂的符号表达式显示成我们习惯的数学书写形式
函数 pretty
格式 pretty(S)
%用缺省的线型宽度79显示符号矩阵s中每一元素
pretty(S,n) %用指定的线型宽度n显示
例3-19
>>A = sym(pascal(3));
>>B = eig(A)
>>pretty(B,50) % 多看几次结果,会发现该命令显示的特点
>>syms x
>>y=log(x)/sqrt(x);
>>dy = diff(y)
>>pretty(dy)
计算结果为:
B =
[ 1]
[ 4+15^(1/2)]
[ 4 -15^(1/2)]
[ 1 ]
[ ]
[ 1/2]
[4 + 15 ]
[ ]
[ 1/2]
[4 - 15 ]
dy =
1/x^(3/2)-1/2*log(x)/x^(3/2)
1 log(x~)
---- - 1/2 -------
3/2 3/2
x~ x~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5