You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maxima等式中分离指定项至左侧并移其余至右侧?

Maxima中分离等式指定项的方法

需求说明

需要将等式左侧的特定表达式项保留在左侧,其余所有项移至等式右侧。例如对展开后的圆方程:

(%i1) expand((x-x1)^2 + (y-y1)^2 = r1^2);
(%o1) y1^2-2*y*y1+y^2+x1^2-2*x*x1+x^2=r1^2

目标是将x^2+y^2单独留在左侧,得到:

(%o1) y^2+x^2=r1^2+2*x*x1-x1^2+2*y*y1-y1^2

无效尝试

使用algsys函数无法实现该需求,因为它主要用于求解方程组,而非单等式的项分离:

(%i3) algsys ([expand((x-x1)^2 + (y-y1 )^2 = r1^2)], [x^2+y^2]);
(%o3) []

(%i4) algsys ([expand((x-x1)^2 + (y-y1 )^2 = r1^2)], [x]);
(%o4) [[x=sqrt(-y1^2+2*y*y1-y^2+r1^2)+x1],[x=x1-sqrt(-y1^2+2*y*y1-y^2+r1^2)]]

正确解决方案

方法1:使用solve函数

直接调用solve函数,将目标表达式作为第二个参数传入,即可自动完成项分离:

(%i1) eq: expand((x-x1)^2 + (y-y1)^2 = r1^2);
(%o1) y1^2-2*y*y1+y^2+x1^2-2*x*x1+x^2=r1^2

(%i2) solve(eq, x^2 + y^2);
(%o2) [x^2+y^2 = r1^2+2*x*x1-x1^2+2*y*y1-y1^2]

若需要直接获取等式而非列表形式,可提取列表的第一个元素:

(%i3) first(%);
(%o3) x^2+y^2 = r1^2+2*x*x1-x1^2+2*y*y1-y1^2

方法2:手动移项

通过等式两边同时减去左侧非目标项,手动完成移项:

(%i1) eq: expand((x-x1)^2 + (y-y1)^2 = r1^2);
(%o1) y1^2-2*y*y1+y^2+x1^2-2*x*x1+x^2=r1^2

(%i2) eq - (y1^2 - 2*y*y1 + x1^2 - 2*x*x1);
(%o2) y^2+x^2 = r1^2 - y1^2 + 2*y*y1 - x1^2 + 2*x*x1

该结果与solve输出等价,仅项的顺序不同,Maxima会自动处理符号与项的排列。

内容的提问来源于stack exchange,提问作者JeanJouX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:19:53