我的DotNET应用程序内置了一个有限的脚本语言(在VBScript上松散建模),主要用于后处理数字、点和向量。我刚刚添加了对复数的支持,但我正在努力处理表示法。
我不想使用A+ Bi符号,因为如果A或B已经被定义为等式,那么它就不是一个明确的划分:
31 *5+6+ -5i
这可以解释为:
A= 31 *5+6 B= -5i
和:
A= 31 *5 B=6+ -5i
据我所知,没有一种编程语言本身就支持复数。我认为下面这样的方法可能会起作用,但我希望大家能对此提供意见:
{31 * 5} + {6 + -5}i
复数(31* 5,6+ -5)
r{31 * 5} i{6 + -5}
发布于 2009-09-20 23:25:45
看起来你在你的例子中使用了显式乘法(即你需要A* B,而不是A B )。
在这种情况下,为什么不直接在值后面使用i后缀,如
myComplex = 12 + 6i
or
myOtherComplex = 12/7 + (6 * pi)i你可能需要决定是i还是j,我都看过了。
这个i后缀的技巧与科学提示没有什么不同,它是e(例如3.1415e7)
编辑(跟随大卫的评论)
上面的格式可能会变得令人困惑,这取决于受众,澄清这一点的一种方法可能是只允许虚构的字面符号,并将这些包含到中,这是从现有的向量符号派生的复杂符号。当虚数或复数需要表达式来指定它们时,语法将需要显式的“函数式”语法,如虚数( i)和复数(r,i)。
解析规则:
短中的
(Y)+2)都是复数
中的向量
这似乎是一致和简单的,但话又说回来,只有真正的最终用户才能知道。
发布于 2009-09-20 23:40:32
如果您的愿望是简单地区分复数的实部和虚部,我将执行以下操作之一。
这两种方法都很容易处理,即使用简单的解析器也是如此,而且它们足够接近数学表示法,以免混淆。我更喜欢第一种,因为它对我来说似乎更明确,并且使用了不太可能混淆的符号。
发布于 2009-09-20 23:26:30
你的用户有他们使用的特定符号吗?你能选一个尽可能靠近他们的吗?在我的例子中,我会使用+ bi,所以我会说{31 * 5} + {6 + -5}i,但是,如果他们习惯于函数形式,那么我建议复数(31* 5,6+ -5)。
既然您正在使用.net,那么您可能希望使用DLR来提供您的脚本、python或ruby语法?
https://stackoverflow.com/questions/1452276
复制相似问题