2017-02-11 31 views
1

我試圖解決以下系統:楓樹求解等式的系統示出了「RootOf」

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?是否有可能從中得到正確答案?

回答

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}) 

{X = 0.5887050113,Y = 0.5887050113}

sys:={gx=0.,gy=0.}: 
solve(sys,{x,y}) 

{x = 0的, y = 0.},{x = .5887050112,y = .5887050112},{x = -.5887050112,y = -.5887050112},{x = -.9887236333.7.93556085 * I,y = .9887236333+。 7943556085 * I},{x = .98872363 33 + 0.7943556085 * I,Y = -.9887236333-0.7943556085 * I}

+0

這是不正確的壽,因爲我需要顯示多個解決方案。 – Dapper

+0

@Dapper請參閱編輯 – zhk

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

但請注意,你是不是這種方式讓所有的解決方案都可能值。這個問題有無數的解決方案。讓所有的解決方案,使用可選的參數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); 
Originally _Z1, renamed _Z1~: 
    is assumed to be: integer 

這意味着,上述解決方案的任意整數_Z1工作。這些都是您的解決方案,並以預期的方式編寫。