在长表达式中缩写共同术语

长表达式通常包含同一子表达式的多个实例。如果用缩写替换相同的子表达式,这样的表达式看起来会更短。您可以使用Sympref.指定是否在实时脚本中使用符号表达式的缩写输出格式。

例如,解这个方程 X + 1 X = 1 使用解决

Syms.XSols =求解(SQRT(x)+ 1 / x == 1,x)
Sols =.

1 18. σ 2 + σ 2 2 + 1 3. - σ 1 2 1 18. σ 2 + σ 2 2 + 1 3. + σ 1 2 在哪里 σ 1 = 3. 1 9. σ 2 - σ 2 一世 2 σ 2 = 25. 54. - 23. 108 108 1 / 3. [(1 /(18 *(28 *(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3))+(sym(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3)/ 2 + sym(1/3) - (sqrt(sym(3))*(1/(9 *(SYM(25/54) - (SQRT(SYM(23))* SQRT(SYM(108)))/ 108)^ SYM(1/3)) - (SYM(25/54) - (SQRT(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2); (1/(18*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) + (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)/2 + sym(1/3) + (sqrt(sym(3))*(1/(9*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) - (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2)]

解决函数返回精确的解决方案作为符号表达式。万博 尤文图斯默认情况下,Live脚本以缩写输出格式显示符号表达式。符号偏好设置使用内部算法来选择要缩写的子表达式,其还可以包括嵌套缩写。例如,这个术语 σ 1 包含子表达式,缩写为 σ 2 .符号首选项设置不提供任何选项来选择要缩写的子表达式。

您可以通过设置缩写缩写输出格式'abbreviateoutpul'偏好错误的.返回的结果是难以阅读的长表达。

Sympref('abbreviateoutpul'、假);皂
Sols =.

1 18. 25. 54. - 23. 108 108 1 / 3. + 25. 54. - 23. 108 108 1 / 3. 2 + 1 3. - 3. 1 9. 25. 54. - 23. 108 108 1 / 3. - 25. 54. - 23. 108 108 1 / 3. 一世 2 2 1 18. 25. 54. - 23. 108 108 1 / 3. + 25. 54. - 23. 108 108 1 / 3. 2 + 1 3. + 3. 1 9. 25. 54. - 23. 108 108 1 / 3. - 25. 54. - 23. 108 108 1 / 3. 一世 2 2 [(1 /(18 *(28 *(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3))+(sym(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3)/ 2 + sym(1/3) - (sqrt(sym(3))*(1/(9 *(SYM(25/54) - (SQRT(SYM(23))* SQRT(SYM(108)))/ 108)^ SYM(1/3)) - (SYM(25/54) - (SQRT(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2); (1/(18*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) + (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)/2 + sym(1/3) + (sqrt(sym(3))*(1/(9*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) - (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2)]

您使用的首选项Sympref.持续到您当前和未来的Matlab®会话。恢复默认值'abbreviateoutpul'通过指定“默认”选择。

Sympref('abbreviateoutpul'“默认”);

SubExpr.是另一个可以用来缩短长表达式的函数。这个函数只缩写了一个常见的子表达式,而不像Sympref.,它不支持嵌套的缩写。万博1manbetx喜欢Sympref.SubExpr.也不会让您选择要替换的子表达式。

使用第二个输入参数SubExpr.指定替换常用子表达式压缩的变量名称。例如,替换常见的子表达式有变量T.

[sols1,t] = subexpr(sols,'T'
sols1 =

T. 2 + 1 18. T. + 1 3. + 3. T. - 1 9. T. 一世 2 2 T. 2 + 1 18. T. + 1 3. - 3. T. - 1 9. T. 一世 2 2 [(t / 2 + 1 /(18 * t)+ sym(1/3)+(sqrt(sym(3))*(t - 1 /(9 * t))* sym(1i))/ 2)^ 2;(t / 2 + 1 /(18 * t)+ sym(1/3) - (sqrt(sym(3))*(t - 1 /(9 * t))* sym(1i))/ 2)^2]

t =

25. 54. - 23. 108 108 1 / 3. (信谊(25/54)- (sqrt(信谊(23))* sqrt(信谊(108)))/ 108)^符号(1/3)

虽然Sympref.SubExpr.不要提供一种选择要在解决方案中替换的子表单的方法,可以将这些子表单定义为符号变量并手动重写解决方案。

例如,定义新的符号变量a1a2

Syms.a1a2

重写解决方案万博 尤文图斯按照a1a2的值之前a1a2避免评估

溶胶= [(1/2 * A1 + 1/3 + SQRT(3)/ 2 * A2 * 1I)^ 2;......(1/2 * A1 + 1/3  -  SQRT(3)/ 2 * A2 * 1I)^ 2]
Sols =.

一种 1 2 + 1 3. + 3. 一种 2 一世 2 2 一种 1 2 + 1 3. - 3. 一种 2 一世 2 2 [(a1 / 2 + sym(1/3)+(Sqrt(sym(3))* a2 * sym(1i))/ 2)^ 2;(A1 / 2 + SYM(1/3) - (SQRT(SYM(3))* A2 * SYM(1I))/ 2)^ 2]

分配值 T. + 1 9. T. T. - 1 9. T. a1a2, 分别。

A1 = t + 1/(9*t)
A1 =

1 9. 25. 54. - 23. 108 108 1 / 3. + 25. 54. - 23. 108 108 1 / 3. 1 /(9 *(sym(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3))+(sym(25/54) -(SQRT(SYM(23))* SQRT(SYM(108)))/ 108)^ SYM(1/3)

A2 = T  -  1 /(9 * T)
a2 =

25. 54. - 23. 108 108 1 / 3. - 1 9. 25. 54. - 23. 108 108 1 / 3. (SYM(25/54) - (SQRT(SYM(23))* SQRT(SYM(108))/ 108)^ SYM(1/3) - 1 /(9 *(SYM(25/54) - (SQRT(SYM(23))* SQRT(SYM(108)))/ 108)^ SYM(1/3))

评估使用subs.结果与本例中的第一个输出相同。

sols_eval =潜艇(溶胶)
sols_eval =

1 18. σ 2 + σ 2 2 + 1 3. - σ 1 2 1 18. σ 2 + σ 2 2 + 1 3. + σ 1 2 在哪里 σ 1 = 3. 1 9. σ 2 - σ 2 一世 2 σ 2 = 25. 54. - 23. 108 108 1 / 3. [(1 /(18 *(28 *(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3))+(sym(25/54) - (sqrt(sym(23))* sqrt(sym(108)))/ 108)^ sym(1/3)/ 2 + sym(1/3) - (sqrt(sym(3))*(1/(9 *(SYM(25/54) - (SQRT(SYM(23))* SQRT(SYM(108)))/ 108)^ SYM(1/3)) - (SYM(25/54) - (SQRT(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2); (1/(18*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) + (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)/2 + sym(1/3) + (sqrt(sym(3))*(1/(9*(sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3)) - (sym(25/54) - (sqrt(sym(23))*sqrt(sym(108)))/108)^sym(1/3))*sym(1i))/2)^sym(2)]