我想重新排列方程式,使某些变量仅使用wxMaxima出现在左侧。
%i: eq: term1 = term2 ;
%i: fun(eq,[v]);
%o: term3 = term4
这些术语允许使用的符号如下:
我尝试用matchdeclare
和defrule
完成某项工作,但我什至无法将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
在左侧,但不在右侧。
但是我必须给出一个明确的左侧。我很想拥有一个可以自行找到任意左侧的函数,这样b
和a
都不在右侧。
显而易见的解决方案是: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
答案 0 :(得分:0)
我认为solve
,linsolve
,algsys
和eliminate
或多或少具有您想要的效果。