如何在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
相关产品推荐
相关产品推荐

