Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 3.11 KB

File metadata and controls

69 lines (54 loc) · 3.11 KB

LSR 006 - 多值函数Set

基本信息

  • 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)