【求助】MMA如何在Solve命令里设定某些参数的范围??
mathematica吧
全部回复
仅看楼主
level 4
比如我求解一个带参数M的多项式方程的根,结果老是出现关于M的ConditionalExpression,而理论上我事先定义M的范围就能消除,但是却一直不成功,查帮助也没看到咋解决:
Solve[{-2M+r^2+r==0},{r},Reals]
结果是
而我理论上需要M>0的,所以不用考虑这个condition,但是不知道怎么设置
我试过用$Assumptions=M>0,但是还是不行:
有大神知道该咋整吗??orz...
2019年11月02日 10点11分 1
吧务
level 15
全局变量$Assumptions只对具备Assumptions选项的函数有效,而Solve是少数虽然能接受代数假设却没有Assumptions选项的函数。(顺便Solve对假设的支持其实引入得很晚,好像是版本8吧。)所以,只能事后化简下了:
Simplify[Solve[{-2 M + r^2 + r == 0}, {r}, Reals], M > 0]
或者“暴力”消去:
Solve[{-2 M + r^2 + r == 0}, {r}, Reals]
% /. ConditionalExpression[a_, _] :> a
2019年11月02日 13点11分 2
非常感谢!
2019年11月03日 00点11分
1