我的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}
答案 0 :(得分:2)
如果您希望简单区分复数的虚数和虚数,我会执行以下操作之一。
即使使用简单的解析器,其中任何一个都很容易处理,并且它们与数学符号足够接近,以免混淆。我更喜欢第一个,因为它对我来说似乎更明确,并使用不太可能混淆的符号。
答案 1 :(得分:1)
您的用户是否有他们使用的特定符号?你能尽可能选择一个吗?在我的情况下,我会使用+ bi所以我会说{31 * 5} + {6 + -5} i但是,如果他们习惯了函数形式,那么我建议复数(31 * 5,6 + -5) )。
答案 2 :(得分:1)
我能找到的大多数内置类型复杂的语言(如Python和Lisp)都使用类似的东西:
c{r, i}
答案 3 :(得分:0)
您的示例中似乎使用了显式乘法(即您需要A * B而不是A B)。
在这种情况下,为什么不直接使用i后缀直接跟在
之后的值 myComplex = 12 + 6i
or
myOtherComplex = 12/7 + (6 * pi)i
然后你可能需要决定i或j,我见过两个......
这个后缀技巧与科学通知不同,是e(例如3.1415e7)
修改(遵循David的评论)
上述格式可能会让人感到困惑,具体取决于受众,澄清这种情况的一种方法可能是仅允许虚构的文字 ,并将这些包含在从现有矢量符号派生的复杂符号。当虚数或复数需要表达式来指定它们时,语法将需要显式的“函数外观”语法,例如Imaginary(i)和Complex(r,i)。
解析规则:
简而言之:
这似乎足够简单,但再次,只有真正的最终用户才能说出来。