matlab对负数开立方根得到虚数的解决方案
matlab对负数开立方根得到虚数的解决方案
·
问题描述:在matlab中,对负数开立方根,不出意外你将得到虚数。
例如−273\sqrt[3]{-27}3−27,我们知道其实数解是-3,但在matlab中的计算结果如下:
问题原因:matlab中的立方根运算是在复数域进行的,有3个,而matlab取的是辐角最小的那个。
解决方案:最小辐角是π3\frac{\pi}{3}3π,相邻两立方根辐角之差为2π3\frac{2\pi}{3}32π,因此这三个根中,有一个实数根、两个复数根。
所以在matlab中对负数进行立方根运算时,可以按如下方式处理:
x = -27
root = solveCubr(x)
function root = solveCubr(x)
if x >= 0
root = x^(1/3)
else
root = cos(pi)*(abs(x)^(1/3))
end
end
参考链接:
- https://www.zhihu.com/question/23107259/answer/2132830703

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)