gpt4 book ai didi

python - 如何从两个插值函数的乘积创建新函数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:43 24 4
gpt4 key购买 nike

所以我正在为我的河外天文学类(class)编写一个编程项目。我们得到了两组文件:第一组包含来自不同年龄恒星群的样本光谱。第二个是斯隆数字巡天 (SDSS) 频段的系统响应曲线。

本质上,第一个为我们提供了一系列针对不同波长的通量测量值。第二个告诉我们 SDSS 将看到多少通量,这个响应也取决于波长。在下面的代码中,我获取了一组恒星的数据和一条系统响应曲线。然后我对这些数据进行插值以获得两者的连续曲线。

我现在要做的是采用这两个插值函数并获得它们的乘积。然后,我需要根据波长集成该产品。我在尝试计算乘积时遇到问题:

import matplotlib.pyplot as plt
import numpy
from scipy import interpolate
from scipy.integrate import quad

def main():

pop = numpy.loadtxt("fnu_m62_0.001Gyr") # Loads sample spectrum
popint = interpolate.interp1d(pop[:,0], pop[:,1]) # Interpolates

sysr = numpy.loadtxt("sdss_response/sys.u") # Loads SDSS response for u band
sysrint = interpolate.interp1d(sysr[:,0], sysr[:,1]) # Interpolates

p = sysrint * popint # Takes product of two functions, assigns to p
plt.plot(pop[:,0], p(pop[:,0]), 'b-') # Plots p as function of wavelength for the sample population interval

尝试运行这段代码会得到:

TypeError: unsupported operand type(s) for *: 'interp1d' and 'interp1d'

所以我猜对插值函数使用算术存在问题。但我真的不明白为什么。有没有办法将这两个函数相乘以获得一个新的连续函数?

最佳答案

'interp1d' 是一个函数类型,因此,我们像这样创建它的乘积函数:

def p(x): return popint(x)*sysrint(x)

关于python - 如何从两个插值函数的乘积创建新函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com