MATLAB subs():奇怪的行为
MATLAB subs(): Strange behaviour
syms Gr Ra Ri A B Gr1 Gr2 c d
Gr = 2*c*(Ra^2 - Ri^2) - d*(Ra^4 - Ri^4)/2;
Gr1 = subs(Gr, [c*(Ra^2 - Ri^2), -d*(Ra^4 - Ri^4)/2], [A, B])
Gr2 = subs(Gr, [c*(Ra^2 - Ri^2), d*(Ra^4 - Ri^4)/2], [A, B])
returns
Gr1 =
2*A + B
Gr2 =
2*A - (d*(Ra^4 - Ri^4))/2
有没有办法在没有解决方法的情况下说服 MATLAB 在第二种情况下 return Gr2 = 2*A - B
?我有一个更复杂的表达式可以替换,但我无法使用这种 subs() 行为。谢谢
我认为问题出在 subs
的第二个参数中的 multiplication/division 操作中,因为一旦我按如下方式重新排列代码,问题就消失了:
syms Gr Ra Ri A B Gr1 Gr2 c d
Gr = 2*c*(Ra^2 - Ri^2) - d*(Ra^4 - Ri^4)/2;
Gr1 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,-2*B/d])
Gr2 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,2*B/d])
输出为:
Gr1 =
2*A + B
Gr2 =
2*A - B
所描述的行为被 Matlab 开发团队归类为意外,希望在未来的版本中得到修复:
syms Gr Ra Ri A B Gr1 Gr2 c d
Gr = 2*c*(Ra^2 - Ri^2) - d*(Ra^4 - Ri^4)/2;
Gr1 = subs(Gr, [c*(Ra^2 - Ri^2), -d*(Ra^4 - Ri^4)/2], [A, B])
Gr2 = subs(Gr, [c*(Ra^2 - Ri^2), d*(Ra^4 - Ri^4)/2], [A, B])
returns
Gr1 =
2*A + B
Gr2 =
2*A - (d*(Ra^4 - Ri^4))/2
有没有办法在没有解决方法的情况下说服 MATLAB 在第二种情况下 return Gr2 = 2*A - B
?我有一个更复杂的表达式可以替换,但我无法使用这种 subs() 行为。谢谢
我认为问题出在 subs
的第二个参数中的 multiplication/division 操作中,因为一旦我按如下方式重新排列代码,问题就消失了:
syms Gr Ra Ri A B Gr1 Gr2 c d
Gr = 2*c*(Ra^2 - Ri^2) - d*(Ra^4 - Ri^4)/2;
Gr1 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,-2*B/d])
Gr2 = subs(Gr, [(Ra^2 - Ri^2),(Ra^4 - Ri^4)], [A/c,2*B/d])
输出为:
Gr1 =
2*A + B
Gr2 =
2*A - B
所描述的行为被 Matlab 开发团队归类为意外,希望在未来的版本中得到修复: