首页 文章

Maple求解方程式显示“RootOf”

提问于
浏览
1

我正在尝试解决以下系统:

gx:=2*x*exp(x^2+y^2)-4*y
gy:=2*y*exp(x^2+y^2)-4*x
sys:={gx=0,gy=0}:
solve(sys,{x,y})

然后显示以下输出:

{x = 0, y = 0}, {x = RootOf(2*_Z^2-ln(2)), y = RootOf(2*_Z^2-ln(2))}, {x = -RootOf(2*_Z^2-ln(2)-I*Pi), y = RootOf(2*_Z^2-ln(2)-I*Pi)}

第一个“根”(0,0)是正确的,但是我如何删除那个根和Z是什么?是否有可能从中得到正确的答案?

2 回答

  • 1

    这是函数allvalues的一个很好的场景 . 从帮助页面:

    计算涉及RootOfs的表达式的所有可能值

    gx:=2*x*exp(x^2+y^2)-4*y;
    gy:=2*y*exp(x^2+y^2)-4*x;
    sys:={gx=0,gy=0}:
    sol := solve(sys,{x,y}):
    
    seq(allvalues(sol[i]), i= 1..numelems([sol])):
    print~([%])[];
    

    Output of allvalues version 1

    但请注意,您没有以这种方式获得所有解决方案 . 解决问题的方法有很多种;要获得所有解决方案,请在solve命令中使用可选参数 allsolutions = true

    sol2 := solve(sys,{x,y},allsolutions = true):
    seq(allvalues(sol2[i]), i= 1..numelems([sol2])):
    print~([%])[];
    

    Output of allvalues version 1

    如果你运行它,你会看到一个新的变量 _Z1 ,它有一个尾随波浪号( ~ ) - 这个波浪号意味着对变量有假设 . 要看这些假设使用

    about(_Z1);
    

    原来是_Z1,重命名为_Z1~:
    假设为:整数

    这意味着上述解决方案适用于任何整数 _Z1 . 这些都是您的解决方案,并以预期的方式编写 .

  • 0

    您可以使用 fsolve 来获得最终的数值解,

    restart;
    gx:=2*x*exp(x^2+y^2)-4*y;
    gy:=2*y*exp(x^2+y^2)-4*x;
    sys:={gx=0,gy=0}:
    fsolve(sys,{x,y})
    
    sys:={gx=0.,gy=0.}:
    solve(sys,{x,y})
    

    {x = 0.,y = 0.},,{x = -.5887050112,y = -.5887050112},{x = -.9887236333-.7943556085 * I ,y = .9887236333 .7943556085 * I},{x = .9887236333 .7943556085 * I,y = -.9887236333-.7943556085 * I}

相关问题