【MATLAB】符号数学计算(五):符号函数的替换

一、subs替换函数

  • R=subs(S):用工作区中的变量值替换符号表达式中的某一特定符号。
  • R=subs(S,New):用新符号变量New来替换符号表达式S中的默认变量。
  • R=subs(S,Old,New)
>> syms x y
>> f=sym('x^2+x*y+y^2')
 
f =
 
x^2 + x*y + y^2
 
>> x=2;
>> subs(f)
 
ans =
 
y^2 + 2*y + 4
 
>> y=2;
>> subs(f)
 
ans =
 
12
 
>> subs(f,'t^2')
 
ans =
 
t^4 + t^2*y + y^2
 
 
>> subs(f,{'x','y'},{3,4})
 
ans =
 
37

 二、subexpr替换函数

  • [Y,SIGMA]=subexpr(S,SIGMA):指定用变量SIGMA的值(必须为符号对象)来代替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结果由Y返回,被替换的字符串由SIGMA返回。
  • [Y,SIGMA]=subexpr(S,'SIGMA'):与上一种形式的不同在于第二个输入参数是字符或者字符串。
>> syms x a
>> f=sym('2*x^2+a*x+3+x^-1')
 
f =
 
a*x + 1/x + 2*x^2 + 3
 
>> s=solve(f)
 
s =
 
                                                                                                                                                                                                              (a^2/36 - 1/2)/(a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3) - a/6 + (a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3)
 - a/6 - (a^2/36 - 1/2)/(2*(a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3)) - (a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3)/2 + (3^(1/2)*((a^2/36 - 1/2)/(a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3) - (a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3))*i)/2
 - a/6 - (a^2/36 - 1/2)/(2*(a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3)) - (a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3)/2 - (3^(1/2)*((a^2/36 - 1/2)/(a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3) - (a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4)^(1/3))*i)/2
 
>> r=subexpr(s)
 
sigma = 
 
a/8 + ((a^3/216 - a/8 + 1/4)^2 - (a^2/36 - 1/2)^3)^(1/2) - a^3/216 - 1/4
 
 
 
r =
 
                                                                    (a^2/36 - 1/2)/sigma^(1/3) - a/6 + sigma^(1/3)
 - a/6 + (3^(1/2)*((a^2/36 - 1/2)/sigma^(1/3) - sigma^(1/3))*i)/2 - (a^2/36 - 1/2)/(2*sigma^(1/3)) - sigma^(1/3)/2
 - a/6 - (3^(1/2)*((a^2/36 - 1/2)/sigma^(1/3) - sigma^(1/3))*i)/2 - (a^2/36 - 1/2)/(2*sigma^(1/3)) - sigma^(1/3)/2

猜你喜欢

转载自blog.csdn.net/csdn___csdn/article/details/81158191