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
Matlab中,当我们需要计算负数根时,往往会出现虚数根的情况。这是因为Matlab在处理复数运算时遵循复数规则。然而,如果我们需要得到实数根,我们可以采取一些解决方案。 一种解决方案是使用nthroot()函数。该函数可以用于计算任意数字的任意次方根。例如,要计算-1的1/3次方根,我们可以使用nthroot(-1,3)来得到所需的实数根。 另一种解决方案是将负数转换为正数进行次方运算,然后再乘以符号函数来得到结果。例如,要计算(-1)^(1/3)的实数根,我们可以将其写成abs(-1)^(1/3)*sign(-1)的形式。 总之,在Matlab中计算负数根时,我们可以使用nthroot()函数或进行符号函数转换来得到实数根。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [matlab负数分数幂问题](https://blog.csdn.net/qq_36903625/article/details/119949156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [matlab 根号如何同时取到正负值](https://blog.csdn.net/weixin_32300981/article/details/115809078)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值