gpt4 book ai didi

julia - 如何计算Julia中两条线(2坐标点的序列)之间的距离

转载 作者:行者123 更新时间:2023-12-03 20:02:20 25 4
gpt4 key购买 nike

我有两个功能,y = f(x)y = g(x) ,通过 Array{Float64,2} 定义-- (x, y) 点的序列。
我想找这样的f'(x) = f(x+dx) + dy图表上的函数之间的距离是最小的。例如,这里的距离已经很小,但还可以更小。
enter image description here
在我的特殊情况下,两个数组中的点数相同,因此我尝试最小化以下函数(假设 p = [dx, dy]):

loss(p) = sum(abs2, mapslices(x -> x .- p, f .- g, dims=2))
但是,显然,这行不通。此外,能够处理不同大小的数组会很好。

最佳答案

因此,您需要采取的步骤是:

  • 找到 dx 的范围这将确保曲线至少有 50% 的重叠
  • 定义两条曲线,称它们为 fg , 使用 interpolate (没有 extrapolate )来自 Interpolations.jl 使用您拥有的点
  • 定义一个函数来计算它们之间的总距离;最简单的方法是使用 QuadGK.jl 和基于 dx 的集成范围。和曲线的范围(以便我们在没有外推的情况下进行积分,称此范围的末端 xminxmax ): quadgk(x -> (f(x)-g(x+dy)+dy)^2, xmin, xmax)) ;使其成为 dx 的函数和 dy
  • 然后使用例如Optim.jl 找到最优 dxdy (限制在 dx 上)
  • 关于julia - 如何计算Julia中两条线(2坐标点的序列)之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65477800/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com