- LSR 编号 006
- 标题 多值函数Set
- 作者 ari-backrooms
- 状态 草案
- 类型 标准规范
- 创建日期 2025年8月19日
- Lamina 版本 未决议
多值函数Set特地表示有多个解的值,比如一些开根号的值。
目的是不缺根
Set定义:Set(x: Array | Number, type?: func): [[SetObject]] (type 为通项,返回的是一个函数的结果) get(x) => return type(x) | if type is null, return Array[x] 其中SetObject定义如下:
| 函数名/名字 | 值/规范 | 作用描述 |
|---|---|---|
| get() | get(number: number): number | 从多值集合中获取指定索引的值,其中索引0对应的数值被定义为“主值” |
| mainValue | { type: number } | 直接获取多值集合中的“主值”(无需通过索引调用,是get(0)的简化形式) |
| toAdd() | toAdd(num: number or Set) | 接收单个数字或数字集合(Set),与当前值执行加法运算 |
| toSub() | toSub(num: number or Set) | 接收单个数字或数字集合(Set),与当前值执行减法运算 |
| toMultiply() | toMultiply(num: number or Set) | 接收单个数字或数字集合(Set),与当前值执行乘法运算 |
| toDivide() | toDivide(num: number or Set) | 接收单个数字或数字集合(Set),与当前值执行除法运算 |
| toPow() | toPow(num: number or Set) | 接收单个数字或数字集合(Set),计算当前值的目标值次幂(如a^b) |
| toSqrt() | toSqrt() | 计算当前值的二次方根(即√当前值,无需额外参数) |
| toSin() | toSin() | 计算当前值的正弦值(默认基于弧度制,需注意输入单位) |
| toCos() | toCos() | 计算当前值的余弦值(默认基于弧度制,需注意输入单位) |
| toTangent() | toTangent() | 计算当前值的正切值(默认基于弧度制,等价于sin/cos) |
| getReal() | getReal() | 从多值列表中筛选“虚数项为0的实数”,返回去重后的结果 |
另外地,添加布尔值Set.isReturnSet默认为false。
如果布尔值Set.isReturnSet为true,则必须满足:
- sqrt函数实现多值Set
- pow函数实现多值Set
对于负数(-m)^n, 我们拆开得出(m^n)*(e^iπn) 而主值就是 (m^n) * (isin(iπn) + cos(iπn)) 第k项的值是 (m^n) * (isin(iπ(2k+1)n) + cos(iπ(2k+1)n))
sqrt函数在此时定义为 pow(n, 0.5)
var a:Set = Set(2);
print(a.get(0)); // output 2
Set.isReturnSet = true;
print(pow(-1, 1/3).get(0)); // output Complex(1/2, -sqrt(3)/2)
print(pow(-1, 1/3).get(1)); // output -1
print(pow(-1, 1/3).get(2)); // output Complex(1/2, sqrt(3)/2)