wxMaxima-解决/重新安排包含某些变量的术语

时间:2018-07-14 21:09:56

标签: maxima simplify reformat

我想重新排列方程式,使某些变量仅使用wxMaxima出现在左侧。

%i: eq: term1 = term2 ;
%i: fun(eq,[v]);
%o: term3 = term4

这些术语允许使用的符号如下:

  • term1 =全部
  • term2 =全部
  • term3 =仅[v]和运算符
  • term4 =除[v]以外的所有内容
  • [v] =我想放在左侧的变量(或列表)

我尝试用matchdeclaredefrule完成某项工作,但我什至无法将b的{​​{1}}移到左侧。我什至不知道defrule是否是正确的方法,因为术语1和2与3和4没有关系。

更新:

我想到了“某物”。它不是我最初想要的,但至少是更接近的。 它基本上是一种替代。我可以提供一个左手边,函数会尝试解决它。当然,这种精确的左侧可能是不可能的,因此某些变量保留在右侧。但是,可以指定一个应在右侧消除的变量。

a=b+c

导致:

expr: a=b+c*d+e $
left: log(a+b) $
notright: b $
solve_form( expr, left, notright);

现在,如果我改为在左侧选择[log(b+a)=log(-e-c*d+2*a)] ,则输出为:

log(a-b)

这几乎是我想要的。变量[log(a-b)=log(e+c*d)] a在左侧,但不在右侧。 但是我必须给出一个明确的左侧。我很想拥有一个可以自行找到任意左侧的函数,这样ba都不在右侧。

显而易见的解决方案是:b

功能:

[a-b=e+c*d]

不需要solve_form(expr,lterm,substvar) := block( [z], lterm: z = lterm, solve(lterm,substvar), ev(expr,%%), solve(%%,z), ev(%%,lterm) )$ 输入的替代函数。

notright

1 个答案:

答案 0 :(得分:0)

我认为solvelinsolvealgsyseliminate或多或少具有您想要的效果。