非积分法计算分段常函数与psi_j_n乘积的有符号面积
计算分段函数与psi_j_n乘积的有符号面积
我用Python定义了分段函数step_function,它接收数组a和x值,返回分段函数f,同时定义了辅助函数rect和psi_j_n。我希望不使用积分计算step_function与psi_j_n(x, -10, 0)乘积的有符号面积——因为图形是矩形,所求就是该矩形的面积。
我的初始尝试代码:
signed_area = 0 for x_values in x: signed_area += step_function(x_values, a) * psi_j_n(x_values, -10, 0) signed_area
这段代码不正确,原因是遗漏了矩形的底边长(即x数组的步长),手动计算的正确结果应为0.012。
代码定义更新
分段函数step_function实现
import numpy as np import matplotlib.pyplot as plt # 定义分段函数 def step_function(x, a): def rect(x): return np.where((x >= 0) & (x < 1), 1, 0) f = np.sum([a[k-1] * rect(x - k) for k in range(1, len(a) + 1)], axis=0) return f # 设置随机种子保证结果可复现 np.random.seed(42) # 生成a_k的随机值 N = 10 a = np.array([-0.25091976, 0.90142861, 0.46398788, 0.19731697, -0.68796272, -0.68801096, -0.88383278, 0.73235229, 0.20223002, 0.41614516]) #a = np.random.uniform(-1, 1, size=N) # 定义绘图用的x值序列 x = np.arange(0, N + 1, 0.01) # 在x序列上计算分段函数值 y = step_function(x, a) # 绘制分段函数图像 plt.plot(x, y) plt.xlabel('x') plt.ylabel('f(x)') plt.title('分段函数图像') plt.grid(True) plt.show()
上述代码生成的分段函数图像:
psi_j_n(x, j, n)函数实现
def psi(x): if 0 <= x < 0.5: return 1 elif 0.5 <= x < 1: return -1 else: return 0 def psi_j_n(x, j, n): return 2**(j/2) * psi(2**j * x - n)
我需要计算step_function(x, a)与psi_j_n(x, j, n)乘积的有符号面积。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

