如何解决如何解决“IntegrationWarning:积分可能发散或缓慢收敛”的问题?
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
import multiprocessing
import time
from itertools import repeat
from scipy.stats import norm
import random
red=np.loadtxt('SN307.txt',usecols=0)
lum=np.loadtxt('SN307.txt',usecols=1)
err=np.loadtxt('SN307.txt',usecols=2)
data=307
N1=30
N2=30
N3=30
H0=np.linspace(65,75,N1)
Pi=np.linspace(-0.6,-0.80,N2)
Al=np.linspace(0.5,0.80,N3)
def run(i):
chi= np.zeros((N2,N3))
c=3*10**5
for j in range(N2):
for k in range(N3):
integral = np.array([x[0] for x in [integrate.quad(lambda z1: 1 / ((((1+z1)** ((3*Al[k] + np.sqrt(3) - np.sqrt(3 + 18*Al[k]**2)) / (2*Al[k]))) / (2* np.sqrt(3 + 18*Al[k]**2))) * ((np.sqrt(3) + np.sqrt(3 + 18*Al[k]**2) - 3*Al[k]*Pi[j]) + ((np.sqrt(3 + 18*Al[k]**2) - np.sqrt(3) + 3*Al[k]*Pi[j]) * ((1+z1)** (np.sqrt((3 + 18*Al[k]**2) / Al[k])))))),zi) for zi in red]])
part1 = np.array([c * (1 + zi) / H0[i] for zi in red])
dL_model = part1 * integral
DM_model= 5 * np.log10((dL_model)) + 25
DM_obs = lum
chi2 = np.sum((DM_model - DM_obs)**2/err**2)
chi[j,k] = chi2
return(chi)
pool=multiprocessing.Pool()
start_time1 = time.time()
#A=run()
A=pool.map(run,range(0,N1,1))
t = (time.time() - start_time1)/60
嗨。我正在尝试执行三变量讨厌函数的卡方最小值,从文本文件 SN307.txt
加载数据。但最终出现的错误消息为('IntegrationWarning:积分可能发散,或缓慢收敛,在我们加载内容时从 sys.path 中删除 CWD')。我该如何解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。