请教一个数学问题

2019-09-05 19:45:32 +08:00
 Eleflea
一个由点组成的序列(x1, y1), (x2, y2) ... (xn, yn )定义一条折线,也就是把他们按序连接起来。其中 x 和 y 取值都在 0 与 1 之间。现在有多条这样的折线,如何把它们加起来,求出和的点序列或者解析式?

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

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

然后简单的加起来就行了
noqwerty
2019-09-06 03:40:05 +08:00
我做的话可能就直接 LOESS 拟合了,不过不知道你具体需求是拿来干什么
cheneydog
2019-09-06 09:12:16 +08:00
x 轴的取值是一样的么?那直接把 x 相同的 y 加起来不就 ok ?
wingkou
2019-09-06 10:33:58 +08:00
#13 说的对,最简单的做法了,应该也是最好的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX