lin2009 发表于 2010-10-15 21:40:47

用solve不能求解简单的指数方程?

本帖最后由 lin2009 于 2010-10-15 21:47 编辑


restart;
alpha := exp((I*(2/3))*Pi);

solve(exp((I*(2/3))*Pi) = alpha^k, k);
# 显然 k 的值应该为 1,复杂一点的可以用evalb((exp((I*(2/3))*Pi))^2 = alpha^2)验证。

但是上述方程解,竟然得出下面如此复杂的结果。
${\rm{RootOf}}\left( { - {{\rm{2}}^{{\rm{\_Z}}}} + {\rm{I}}\sqrt {\rm{3}} {{\rm{2}}^{{\rm{\_Z}}}} - {\rm{2}}{{\left( { - {\rm{1}} + {\rm{I}}\sqrt {\rm{3}} } \right)}^{{\rm{\_Z}}}}} \right)$


solve(exp((I*(2/3))*Pi) = alpha^k, k) assuming k::positive
allvalues(%)
也都不奏效,大家看看什么问题?
solve((exp((I*(2/3))*Pi))^2 = alpha^k, k)    #-->k = 2;

ithinksoim 发表于 2010-12-3 11:01:45

"显然 k 的值应该为 1"...
k = 3n+1, n \in Z

lin2009 发表于 2010-12-3 11:12:47

2# ithinksoim
是的,那怎么把结果化成这个简单的形式呢?

ithinksoim 发表于 2010-12-3 11:44:29

这个。。。我没装Maple...
用Mathematica是能求出正确结果的

gfl 发表于 2010-12-9 16:09:16

用fsolve可以给出复数形式的解,虚部很小,结果对。

MMMS 发表于 2010-12-21 23:44:28

本帖最后由 MMMS 于 2010-12-21 23:46 编辑

restart;
alpha := exp((I*(2/3))*Pi);


soln:=solve(exp((I*(2/3))*Pi) = alpha^k, k);


op(soln);


k=fsolve(op(soln));



结果是 k=1

为什么不用evalf对solve输出的结果求值?
从输出的结果可以找到原因,轻微的虚部值是数值舍入误差引起的,详细的解释以后再发。。。

MMMS 发表于 2010-12-22 08:49:15

前面帖子里的代码是怎么输入的?谢谢。

messenger 发表于 2010-12-23 13:10:31

点击回复栏上面的<>按钮,在弹出的对话框中输入要插入的代码即可。


前面帖子里的代码是怎么输入的?谢谢。
MMMS 发表于 2010-12-22 08:49 http://forum.simwe.com/images/common/back.gif
页: [1]
查看完整版本: 用solve不能求解简单的指数方程?