Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxMaxima-对包含特定变量的术语进行求解/重新排列_Maxima_Simplify_Reformat - Fatal编程技术网

wxMaxima-对包含特定变量的术语进行求解/重新排列

wxMaxima-对包含特定变量的术语进行求解/重新排列,maxima,simplify,reformat,Maxima,Simplify,Reformat,我想用wxMaxima重新排列一个等式,使某些变量只出现在左侧 %i: eq: term1 = term2 ; %i: fun(eq,[v]); %o: term3 = term4 其中允许的术语符号如下: term1=全部 term2=全部 term3=仅[v]和运算符 term4=除[v]以外的所有 [v] =我希望位于左侧的变量(或列表) 我试图用matchdeclare和defrule完成一些事情,但我甚至无法将a=b+c的b放到左侧。我甚至不确定defrule是否是正确的方法,因

我想用wxMaxima重新排列一个等式,使某些变量只出现在左侧

%i: eq: term1 = term2 ;
%i: fun(eq,[v]);
%o: term3 = term4
其中允许的术语符号如下:

  • term1=全部
  • term2=全部
  • term3=仅[v]和运算符
  • term4=除[v]以外的所有
  • [v] =我希望位于左侧的变量(或列表)
我试图用
matchdeclare
defrule
完成一些事情,但我甚至无法将
a=b+c
b
放到左侧。我甚至不确定defrule是否是正确的方法,因为术语1和2与3和4无关。有没有办法解决列表的问题

更新:

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

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
输入的替代功能

solveform(expr,zz_term) := block(
    [z,zz_term_vars,slist],
    zz_term: zz = zz_term,
    zz_term_vars: listofvars(rhs(zz_term)),
    slist:[],
    for i:1 thru length(zz_term_vars) do block(
        solve(zz_term,zz_term_vars[i]),
        ev(expr,%%),
        slist: append(slist,solve(%%,zz))
    ),
    listify(setify(ev(slist,zz_term)))
)$

我认为
solve
linsolve
algsys
、和
exclude
或多或少都有你想要的效果。

我不确定这些对更好地解决我的问题有多大帮助。我更新了这个问题,让它更清楚一点。