V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Eleflea
V2EX  ›  问与答

请教一个数学问题

  •  
  •   Eleflea · 2019-09-05 19:45:32 +08:00 via Android · 2415 次点击
    这是一个创建于 1904 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个由点组成的序列(x1, y1), (x2, y2) ... (xn, yn )定义一条折线,也就是把他们按序连接起来。其中 x 和 y 取值都在 0 与 1 之间。现在有多条这样的折线,如何把它们加起来,求出和的点序列或者解析式?

    P.S. 每组序列的长度和横坐标的间隔都是不同的。
    第 1 条附言  ·  2019-09-05 21:41:27 +08:00

    img.png

    就像上面那样,橘色和蓝色是两条折线,求出它们的和绿色的折线。

    16 条回复    2019-09-06 10:33:58 +08:00
    shylockhg
        1
    shylockhg  
       2019-09-05 20:34:49 +08:00
    什么序?
    Tony042
        2
    Tony042  
       2019-09-05 20:46:16 +08:00
    上 Python 和 Scipy 吧,不清楚要怎么拟合这条线,可以试下线性回归?
    Eleflea
        3
    Eleflea  
    OP
       2019-09-05 21:05:09 +08:00
    @shylockhg 按照横坐标从小到大的顺序。比如(0, 1), (0.1, 0.9), (0.3, 0.8) ... (0.8, 0), (1, 0) 这样的。

    @Tony042 不是要拟合,是要求出这条折线的解析式。不清楚 Scipy 里有没有相关的函数。
    rogwan
        4
    rogwan  
       2019-09-05 21:06:31 +08:00 via Android
    这个折线是一个函数,还是不可导的点阵?
    Eleflea
        5
    Eleflea  
    OP
       2019-09-05 21:17:06 +08:00
    @rogwan 折线嘛,肯定有多个不可导的点,分段光滑。
    keith1126
        6
    keith1126  
       2019-09-05 21:46:39 +08:00   ❤️ 1
    最直接的想法,分段求出表达式,然后相加...应该是可行的,而且写起来不太复杂
    Eleflea
        7
    Eleflea  
    OP
       2019-09-05 22:02:09 +08:00
    @keith1126 看来只有这种方法了。
    nflush
        8
    nflush  
       2019-09-05 22:16:04 +08:00 via Android
    有没有这样的线( x1,y1 ) ( x2,y2 ) ( x3,y3 ) x1<x2<x3,且 y2<y1<y3 ?
    nflush
        9
    nflush  
       2019-09-05 22:20:20 +08:00 via Android
    @nflush 说反了,我想问的是,有没有画出来像“>”或者“<”的线?
    Tony042
        10
    Tony042  
       2019-09-05 22:25:35 +08:00
    @Eleflea 不都有点了,先从大到小排个序,然后分段线性回归或者直接求分段函数就可以了吧,换句话说先找到所有连续不可导的位置,然后分段函数就行了
    Tony042
        11
    Tony042  
       2019-09-05 22:38:56 +08:00
    @Eleflea 整理下思路,首先新分段函数的所有端点一定是未求和之前某一折线的端点,对所有端点排序,从小到大,对每一个端点的左邻域和右邻域分别求导,如果导数不同即为新分段函数的端点,这样就得到了新函数的解析式
    lastmandream
        12
    lastmandream  
       2019-09-05 23:09:04 +08:00 via Android
    两点就能确定一条直线,然后就是分段函数
    qwertyegg
        13
    qwertyegg  
       2019-09-06 00:03:49 +08:00   ❤️ 1
    把两条线的折点坐标记录下来求一个并集

    根据这个并集插值成两个长度一样的序列

    然后简单的加起来就行了
    noqwerty
        14
    noqwerty  
       2019-09-06 03:40:05 +08:00 via Android
    我做的话可能就直接 LOESS 拟合了,不过不知道你具体需求是拿来干什么
    cheneydog
        15
    cheneydog  
       2019-09-06 09:12:16 +08:00
    x 轴的取值是一样的么?那直接把 x 相同的 y 加起来不就 ok ?
    wingkou
        16
    wingkou  
       2019-09-06 10:33:58 +08:00
    #13 说的对,最简单的做法了,应该也是最好的了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4554 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:56 · PVG 17:56 · LAX 01:56 · JFK 04:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.