怎样能正确求数的(1/3)次方?
我要求一个数的(1/3)方。发现居然出现一个虚数。比如(-8)^(1/3)=1.0000 + 1.7321i
可是现在我要得到(-2)这个答案的话要怎样解决?matlab的命令应该怎样写呢?
因为我的算法其中一步要求(1/3)次方,搞不定这一步,下面的就运行不下去。各位大侠帮个忙吧。 <<精通matlab6.5>>中这个题目是个例题,你自己看吧,很简单的说 好像是因为有3个根,这应该算是个数学问题。但MATLAB在这一点上处理的好像也不好。 我看到了精通matlab6.5的例子,可是我只要求实数的答案才能运行下面的程序,虚数就不行了。所以哪位大侠能帮解决一下。
比如:(0.2-3*x-4*y-5*z)的(1/3)次方,求
x=0.33,y=0.011,z=0.02
x=0.23,y=0.25,z=0.18
这两组的值。可是求出的是虚数。我们都知道无论是正数或是负数,求(1/3)次方都应该是实数。而我的程序必须是实数才运行的下去。所以,如何能得到实数的答案。请各位大侠指教一下。不胜感激了 对虚数解求模,再乘以一个符号就行了。
比如-8的1/3次方,得到的是1.0000 + 1.7321i,那么先求模,再乘上sign(-8)即可。
sign(-8)*abs( (-8)^(1/3) ) matlab求解的时候,是将-8写成8*exp(i*pi)的形式.
所以开1/3次方,由棣莫夫定理就变成8^(1/3)*exp(i*pi/3).
计算方法可以采用toes兄的方法进行求解.
[ 本帖最后由 ChaChing 于 2010-7-25 01:06 编辑 ] feifeifool兄强,一针见血,^_^ 我也遇到过这个问题,不知道matlab是怎么搞的 非常感谢各位,程序已经可以运行了。
但有时取值不当的时候会出现下列提示:
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In D:\matlab\toolbox\optim\fmincon.m at line 213
Optimization terminated successfully:
Magnitude of directional derivative in search direction
less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon
No Active Constraints
有谁能告诉我大概是什么意思吗?会是那里出了错误?
正确解法
:@)a=-8; m=;
R=abs(a)^(1/3); Theta=(angle(a)+2*pi*m)/3;
r=R*exp(i*Theta)
r =
1.0000 + 1.7321i-2.0000 + 0.0000i 1.0000 - 1.7321i
[ 本帖最后由 ChaChing 于 2010-7-25 01:05 编辑 ]
页:
[1]