matlab对负数开立方根得到虚数的解决方案

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


例如 − 27 3 \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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值