问题描述:在matlab中,对负数开立方根,不出意外你将得到虚数。


例如−273\sqrt[3]{-27}327 ,我们知道其实数解是-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
Logo

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

更多推荐