我为these equations 写了一个函数
f(r)= 1 / r(-1/2 *((ln(r / rp)/ sp)^ 2)
Y =积分1(f(r)*(1-x / r)^ 2)/积分2(f(r))
从x到无穷大的整数1和从0到无穷大的整数2
稍后我想根据功能进行调整,但目前我仅使用它为选定的x数据创建Y。
但是,当使用变量rp和sp的某些值(rp:20.74,sp:0.053)进行绘图时,Y的值与x值较低的实际曲线完全偏离:Y的值几乎降为0 x小于约0.6。
更改变量时,例如到rp:20.74和sp:0.53。
可以找到带有离群值的曲线图here,可以找到没有离群值(rp:20.74和sp:0.53)的曲线图here
我认为它与我使用积分的方式分别与我的代码有关,但是我无法找出错误所在。
import numpy as np
import scipy.integrate
import scipy.optimize
import matplotlib.pyplot as plt
def func(x,rp,sp):
#Funktion für Kurvenfit
fn_up = lambda r,rdex : (1/r*np.exp(-1/2*((np.log(r/rp))/sp)**2))*((1-(rdex/r))**2)
fn_low = lambda r : (1/r*np.exp(-1/2*((np.log(r/rp))/sp)**2))
num_up = np.asarray([scipy.integrate.quad(fn_up, _x, np.inf,args=(_x,))[0] for _x in x])
num_low = np.asarray([scipy.integrate.quad(fn_low, 0, np.inf)[0]])
Kd=num_up/num_low
return Kd
rp=20.74
sp=0.053
R = np.arange(0.,40.,0.25)
Kd = func(R,rp,sp)