请教一个算法

b
bhold
楼主 (未名空间)

已知: X序列,序列y是X的未知函数y=f(X),知道序列y的总和sum(y). 有没有什么算
法能求出未知函数f?
例如 X = [1, 2, 3, 4, 5] , sum(y) = 30, 则 y = 2X 就是其中一个函数,且 y = [2, 4, 6, 8, 10]
Python 有没有这种 library?

r
repast
2 楼

必须知道 y 的更多约束, 比如,可能y是多项式之类的,then regression 就可以了。
m
magliner
3 楼

绕了半天,这不就是回归么? 给x 找 y. y =kx +b. 然后用用 多项式回归。
g
guvest
4 楼

with given sum(y),
y =[0,0,..., sum(y)]
满足他的要求

【 在 magliner (magliner) 的大作中提到: 】
: 绕了半天,这不就是回归么? 给x 找 y. y =kx +b. 然后用用 多项式回归。

b
bhold
5 楼

只是举了一个多项式例子,函数不一定是多项式。
例如 X = [1, 2, 3 , 4, 5],
sum(y) = (1+ 1/2+1/3+1/4+1/5 + e+e^2+e^3+e^4+e^5 + sin(1)+sin(2)+sin(3)+sin(4)+sin(5) )
then, y = 1/X + e^X + sin(X)

【 在 magliner (magliner) 的大作中提到: 】
: 绕了半天,这不就是回归么? 给x 找 y. y =kx +b. 然后用用 多项式回归。

g
guvest
6 楼

with given sum(y),
y =[0,0,..., sum(y)]
满足要求

【 在 bhold (bhold) 的大作中提到: 】
: 只是举了一个多项式例子,函数不一定是多项式。
: 例如 X = [1, 2, 3 , 4, 5],
: sum(y) = (1+ 1/2+1/3+1/4+1/5 + e+e^2+e^3+e^4+e^5 + sin(1)+sin(2)+sin(3)+
sin(
: 4)+sin(5) )
: then, y = 1/X + e^X + sin(X)

b
bhold
7 楼

guvest老师,不太懂你说的啊,我要求一个未知函数 f
你是说 y = [0,0,..., sum(y)] 做初值,
然后迭代到收敛么

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: with given sum(y),
: y =[0,0,..., sum(y)]
: 满足要求
: sin(

s
sui
8 楼

你好坏呀 :)
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: with given sum(y),
: y =[0,0,..., sum(y)]
: 满足要求
: sin(

g
guvest
9 楼

y =[0,0,..., sum(y)]
is a 函数.

【 在 bhold (bhold) 的大作中提到: 】
: guvest老师,不太懂你说的啊,我要求一个未知函数 f
: 你是说 y = [0,0,..., sum(y)] 做初值,
: 然后迭代到收敛么

h
hamsterdam3
10 楼

只有sum_y提供的信息量(aka约束)太少了

信息/约束不足的结果就是得到的result set是一个非常大的集合,其中最最简单的一
个f就是

f(x) = x * sum_y / sum(x)

【 在 bhold (bhold) 的大作中提到: 】
: 已知: X序列,序列y是X的未知函数y=f(X),知道序列y的总和sum(y). 有没有什么算
: 法能求出未知函数f?
: 例如 X = [1, 2, 3, 4, 5] , sum(y) = 30, 则 y = 2X 就是其中一个函数,且 y =
: [2, 4, 6, 8, 10]
: Python 有没有这种 library?

g
guvest
11 楼

No. Most simple one:
y =[0,0,..., sum(y)]

【 在 hamsterdam3 (习·金瓶梅) 的大作中提到: 】
: 只有sum_y提供的信息量(aka约束)太少了
: 信息/约束不足的结果就是得到的result set是一个非常大的集合,其中最最简单的一
: 个f就是
: f(x) = x * sum_y / sum(x)
: =

h
hamsterdam3
12 楼

哈哈,有道理但是争这个没有意义

如果知道一些y的值,工程上的典型做法是3次样条插值吧,能得到一条光滑曲线,且避免高次多项式的overfitting

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: No. Most simple one:
: y =[0,0,..., sum(y)]

g
guvest
13 楼

No.

Simple is the best. The answer I gave was the most useful in real life.
I would never suggest introducing any buzz words if not necessary.

Without understanding the constant function, where can he go?
【 在 hamsterdam3 (习·金瓶梅) 的大作中提到: 】
: 哈哈,有道理但是争这个没有意义
: 如果知道一些y的值,工程上的典型做法是3次样条插值吧,能得到一条光滑曲线,且避
: 免高次多项式的overfitting

h
hamsterdam3
14 楼

连解析形式都没有的一个function,很难说简单。

这个跑题太严重,我不跟进了
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: No.
: Simple is the best. The answer I gave was the most useful in real life.
: I would never suggest introducing any buzz words if not necessary.
: Without understanding the constant function, where can he go?

P
PandaSyr
15 楼

确实没什么好争的,题目本身就莫名其妙。

【 在 hamsterdam3(习·金瓶梅) 的大作中提到: 】

: 连解析形式都没有的一个function,很难说简单。

: 这个跑题太严重,我不跟进了

b
bhold
16 楼

谢谢 hamsterdam3 老师
这是一个知道部分结果逆求 “过程” 的问题,result set 确实是一个大集合。
过去一般的方法:知道X和y序列,往往先猜一个函数,然后用各种方法定系数。
现在有machine learning/deep learning, 结果很好,但函数的表达式往往不知道。
问这个问题的一个方面的想法,如果借助ML/DL的结果,能否重构函数,这样很多问题
的物理意义或许会更明确一些,不太了解这方面的进展

【 在 hamsterdam3 (习·金瓶梅) 的大作中提到: 】
: 只有sum_y提供的信息量(aka约束)太少了
: 信息/约束不足的结果就是得到的result set是一个非常大的集合,其中最最简单的一
: 个f就是
: f(x) = x * sum_y / sum(x)
: =

a
async
17 楼

nonparametric or kernel regression?
需要很大数据量,12345是不够用的
m
magliner
18 楼

跟你讲个笑话,也许对你有帮助。 说是生物课上bhold老师给同学出期末考题,题目是看一张鸟腿的照片,让学生写这是什么鸟 。 guest答不出,气愤扔笔走人。 bhold就
说, behold, 你叫什么名字 ?怎么说走就走??

guest一撸裤子, 说, 你看看我的腿, 你觉着我叫什么名字??
g
guvest
19 楼

很多人潛意識裡認為f(x)=1不是函数。还有人说这不是解析表达式。这是中学没学扎实的缘故。
你画个x-y坐标,x=1这条线不是函数。y=1这条线是的。

我个人的理解,范畴论或者更新一些的代数的出发点之一就是:
假如把所有数学论文里的数字,换成一个返回值永远是常数的函数。所有的数学知识仍然成立。

所以原则上来讲我们不需要数字。同样的,也不需要集合论。数学归纳法的n也可以换
成函数迭代。

全部复杂的数学。包括微积分,泛函分析,微分几何...
都可以从函数或者映射的箭头推论出来。有的数学知识在这种表示下还更容易理解和证明。

【 在 magliner(magliner) 的大作中提到: 】
<br>: 跟你讲个笑话,也许对你有帮助。 说是生物课上bhold老师给同学出期末考题,
题目是
<br>: 看一张鸟腿的照片,让学生写这是什么鸟 。 guest答不出,气愤扔笔走
人。
bhold就
<br>: 说, behold, 你叫什么名字 ?怎么说走就走??
<br>: guest一撸裤子, 说, 你看看我的腿, 你觉着我叫什么名字??
<br>

m
minquan
20 楼

哈哈哈哈

【 在 magliner (magliner) 的大作中提到: 】
: 跟你讲个笑话,也许对你有帮助。 说是生物课上bhold老师给同学出期末考题,题目是
: 看一张鸟腿的照片,让学生写这是什么鸟 。 guest答不出,气愤扔笔走人。 bhold就
: 说, behold, 你叫什么名字 ?怎么说走就走??
: guest一撸裤子, 说, 你看看我的腿, 你觉着我叫什么名字??

h
heihuafei
21 楼

难道不是只要 sum y =30的任何数组都行?
任取 一个满足sum y =30的数组 总能找到一个函数 map x to y。是我数学水平太低
理解不对,还是

s
sinical
22 楼

当然不能
比如 y=rand()*x

【 在 bhold (bhold) 的大作中提到: 】
: 已知: X序列,序列y是X的未知函数y=f(X),知道序列y的总和sum(y). 有没有什么算
: 法能求出未知函数f?
: 例如 X = [1, 2, 3, 4, 5] , sum(y) = 30, 则 y = 2X 就是其中一个函数,且 y =
: [2, 4, 6, 8, 10]
: Python 有没有这种 library?