在Julia中如何将Root类型转换为Interval类型以获取区间信息?
如何将IntervalRootFinding的Root类型转换为Interval类型?
我正在使用IntervalRootFinding包查找函数的零点,该包返回的结果是包含零点区间的数组,格式如下:
11-element Vector{Root{Interval{Float64}}}: Root([1.57079, 1.5708], :unique) Root([4.18879, 4.1888], :unique) Root([3.14159, 3.1416], :unique) Root([3.66519, 3.6652], :unique) Root([0.523598, 0.523599], :unique) Root([2.61799, 2.618], :unique) # etc
我希望对这些区间进行代数运算、获取上下确界等操作,但直接取数组元素得到的是Root类型:
typeof(a[1]) # 输出:Root{Interval{Float64}}
请问如何将Root类型转换为Interval类型?
解决方法
Root是IntervalRootFinding包定义的结构体,它包含两个核心字段:存储区间的interval,以及标记零点唯一性的status。要提取其中的Interval类型数据,直接访问.interval字段即可:
- 单个元素转换:
# 提取第一个Root对应的Interval对象 interval_a1 = a[1].interval typeof(interval_a1) # 输出:Interval{Float64}
- 批量转换整个数组:
如果需要把整个Vector{Root{Interval{Float64}}}转换成Vector{Interval{Float64}},可以用两种方式实现:
# 方法1:广播式访问字段 intervals = getproperty.(a, :interval) # 方法2:列表推导式遍历转换 intervals = [root.interval for root in a]
转换后的Interval对象,可直接进行代数运算(加减乘除等),也能调用sup(interval)获取上确界、inf(interval)获取下确界等操作。
内容的提问来源于stack exchange,提问作者user2820579
相关产品推荐
相关产品推荐

