numpy np.trapz在它的函数变量中是线性的吗

xwmevbvl  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(147)

我得到一个方程y(x') = Integral(f(x, x')*g(x), x in X)。我还得到了一个函数f,以及长度为nX值和Y值的列表。我需要找到一个相同长度的列表g,使得Z[i] = np.trapz(f(X, X[i])*g, X)满足Z[i] = Y[i]
我首先做了一些分析探索,找到了如何从原始方程表达g,但一旦我用数值计算,我得到Z[i] - Y[i]是一条斜率接近零的直线,但它仍然引入了一些一致的误差。
因此,我想也许我需要直接在np.trapz(f(X, X[i])*g, X) == Y[i]中求解g。这应该是非常简单的,如果np.trapz在它的第一个参数是线性的,因为它将导致一个关于g的线性方程组。所以我想知道线性是否真的成立。

x8diyxa7

x8diyxa71#

是的,它是线性的。就像积分算子is(form f->integral_a^B f(x)dx是线性的)。像任何样本的加权和f(x),...,f(x)是。
trapz只是计算积分的一种方法,是一些f(xₖ)的加权和,x是第二个参数。
你可以很容易地通过实验来检验它

import numpy as np
np.random.seed(100)
x = np.random.uniform(1,3,(100,)).cumsum()
y = np.random.uniform(-5,10,(100,))
z = np.random.uniform(-5,10,(100,))
# Is y→np.trapz(y,x) linear? If so, np.trapz(αy+βz) shoud be α×np.trapz(y)+β×np.trapz(z)
R1=5*np.trapz(y,x)-2*np.trapz(z,x)
R2=np.trapz(5*y-2*z,x)
print(f"{R1}=={R2}:", np.isclose(R1,R2))
# 1582.7905714127717==1582.7905714127721: True

字符串
同样的道理,也适用于数值误差。
当然,这只是一个实验证明。但是,trapz不是线性的,并且表现得如此接近线性函数的几率是多少?另外,您可以将这些示例与不同的值,不同的种子相乘,...它总是有效的。
无论如何,这不是我真实的的答案。我真实的的答案是第一部分:计算函数积分的梯形近似的应用是线性应用。我包括实验证明,只是因为这是[所以],我喜欢答案包含代码:D

相关问题