ApproxFun+IntervalArithmetic: make ODE solving really rigorous
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
Hướng nghiên cứu
Bắt đầu trong src/Caching/matrix.jl, tại phần kiểm tra hội tụ quanh dòng 122, sau đó tái hiện ví dụ Airy-equation từ issue. Xác định cách phần kiểm tra hiện tại xử lý các phần đuôi của hệ số; được coi là hoàn thành khi tiêu chí hội tụ chặn đúng phần đuôi và cung cấp bảo đảm a priori thay vì dựa vào thành công quan sát được.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The following code returns successfully for solving Airy's equation (the extra definitions are work arounds for bugs):
julia> Base.broadcast(::typeof(*), a::IntervalArithmetic.Interval, b::AbstractVector) =
map(x -> a*x, b)
julia> Base.Broadcast.broadcasted(::typeof(*), a::IntervalArithmetic.Interval, b::AbstractVector) =
map(x -> a*x, b)
julia> Base.length(d::UnitRange{<:IntervalArithmetic.Interval}) = Integer(maximum(d.stop.hi)-minimum(d.start.lo)+1)
julia> u = [Dirichlet(); D^2 - x] \ [[1, 0], 0]
Fun(Chebyshev([-1, -1]..[1, 1]),IntervalArithmetic.Interval{Float64}[[0.528647, 0.528648], [-0.522247, -0.522246], [-0.023162, -0.0231619], [0.0223854, 0.0223855], [-0.00557882, -0.00557881], [-0.000122104, -0.000122103], [9.37066e-05, 9.37067e-05], [-1.68122e-05, -1.68121e-05], [-2.4373e-07, -2.43729e-07], [1.63064e-07, 1.63065e-07] … [1.54639e-10, 1.5464e-10], [-1.89644e-11, -1.89643e-11], [-1.63813e-13, -1.63812e-13], [9.21385e-14, 9.21386e-14], [-9.91957e-15, -9.91956e-15], [-7.12466e-17, -7.12465e-17], [3.76658e-17, 3.76659e-17], [-3.63796e-18, -3.63795e-18], [-2.23433e-20, -2.23432e-20], [-1.12162e-20, -1.12161e-20]])
It happens to have worked:
julia> parse(BigFloat,"0.546136459064141770613483785351029091974067802242010192661484687977676021081218637004123196030567166414008915304513669838826570884623515686") in u(0) # true value from mathematica
true
However, this is mostly luck: the convergence criteria doesn't actually control the decay in the tail. To do this properly (and thereby have apriori guaranteed success) we would need to modify the convergence check at https://github.com/JuliaApproximation/ApproxFunBase.jl/blob/7dd9ef0a111ffd702f989c6f752a62538bc7e62b/src/Caching/matrix.jl#L122
to properly bound the tail.
- Ngôn ngữ chính
- Julia
- Star
- 13
- Fork
- 13
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của JuliaApproximation/ApproxFunBase.jl
-
tagbot-manual
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 62/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaApproximation/ApproxFunBase.jl#389 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaApproximation/ApproxFunBase.jl#86 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
JuliaApproximation/ApproxFunBase.jl#81 · 10 bình luận ·
Tất cả issue của JuliaApproximation/ApproxFunBase.jl
Issue tương tự
-
io
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
-
docs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
JuliaGPU/GPUArrays.jl#837 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày