热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

matlabm文件开方,matlab的默认复数开方

matlab的默认复数开方matlab的开方:sqrt()^(1n)都是把数字当复数去开方的我们知道,数学上复数开方可能有多个值的:一个一

matlab的默认复数开方

matlab的开方:

sqrt()

^(1/n)

都是把数字当复数去开方的

我们知道,数学上复数开方可能有多个值的:

一个一般的复数可以写成

z=r*exp(1i*phi)

现在开方这个数,开方后正实数r唯一确定,变化的是角度phi

得到的数的角度为phi/n+k*2*pi/n     k=0,1,2,3,4,…,只要这个角度在如[0,2*pi)中的话就算是对应一个解

它可以有多个,例如:

数学上(exp(1i*pi))^(1/2)有两个解,k=0对应exp(1i*pi/2),k=1对应exp(-1i*pi/2)

数学上(-27)^(1/3)有三个解,r确定为3,k=0对应3*exp(1i*pi/3),k=1对应3*exp(1i*pi)=-3,k=2对应3*exp(1i*5*pi/3)

在MATLAB中,首先除非使用特别函数限制处理实数,matlab会把数默认当复数处理,然后matlab处理会有多个解的复数开方问题时,会默认使用这么多解的其中之一,那怎么整呢?经测试2和3的情况,都是默认使用的是k=0的那个解:

r^(1/n)*exp(1i*phi/n)

z为正实时,默认的结果为r^(1/n),合理

z为负实时,默认的结果为r^(1/n)*exp(1i*pi/n)

这在sqrt时就开始不合理:sqrt(-3)=1i*sqrt(3),这明明还有另一个解-1i*sqrt(3)

在^(1/3)时不合理: r^(1/3)*exp(1i*pi/3)总为实虚都有的复数,例如matlab算(-27)^(1/3)时,-3对应着k=1的解,是默认取k=0的matlab不会得到的,这样你计算(-27)^(1/3)得到1.5000 + 2.5981i就会很困扰

这很容易造成误会,比如你要画y=x.^(1/3)这个函数,在x<0的区域的时候,y会是一些复数

想要避免这样的误会,要理解matlab总是把数当复数处理,^(1/n)会从多个重根之中取其一,

要特别小心对负数开方的计算,如果你需要的是实数领域的计算,不能使用默认的sqrt,^(1/3),使用realsqrt,和nthroot(x,3)才对

如果你需要的是复数的开方,那你便要重新思考你想要得到重根之中的哪个根

其中realsqrt()和nthroot(x,n)

代替sqrt()和x^(1/n)用,matlab会强制保证x是实数,以及返回的值是实数,这样就不会为数被当复数处理而困扰了

Y = nthroot(X,N) returns the real nth root of the elements of X. Both X and N must be real scalars or arrays of the same size. If an element in X is negative, then the corresponding element in N must be an odd integer.

Ref matlab nthroot 参考文献



推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • [论文笔记] Crowdsourcing Translation: Professional Quality from Non-Professionals (ACL, 2011)
    Time:4hoursTimespan:Apr15–May3,2012OmarZaidan,ChrisCallison-Burch:CrowdsourcingTra ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
author-avatar
fuhuan9479184787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有