Integrate.nquad 的集成错误很大

2024-01-02

首先,我在椭圆上集成一个简单的函数。 其次,我集成了相同的函数,并为其添加了常量值。 正如您在我的消息底部看到的那样,结果并不一致。

预先感谢您的帮助。

# -*- coding: utf-8 -*-
from scipy import integrate
from math import *

a = 2.0;
b = 1.0;
Cst = 1.0

def f1(x, y):
    return sqrt(abs(1. -(x/a)**2 -(y/b)**2)) 

def f2(x, y):
    return sqrt(abs(1. -(x/a)**2 -(y/b)**2)) + Cst

def un(x, y):
   return 1.0

def bounds_y():
    return [-b, b]

def bounds_x(y):
    xLimSup = a*sqrt(1-(y/b)**2)
    xLimInf = -xLimSup    
    return [xLimInf, xLimSup]

[S, err] = integrate.nquad(un, [bounds_x, bounds_y])
Stheo = a*b*pi  

[Intf1, err1] = integrate.nquad(f1, [bounds_x, bounds_y]) 
Intf1corr = Intf1 + Cst * S

[Intf2, err2] = integrate.nquad(f2, [bounds_x, bounds_y]) 

print("S     =     %1.4e " % S)
print("Stheo =     %1.4e \n" % Stheo)
print("Intf1 =     %1.4e " % Intf1)
print("Intf1corr = %1.4e " % Intf1corr)
print("Intf2 =     %1.4e " % Intf2) # Ce résultat est complètement faux !!!

****************************************************** ******

S     =     6.2832e+00
Stheo =     6.2832e+00 

Intf1 =     4.1888e+00 
Intf1corr = 1.0472e+01 
Intf2 =     9.7238e-01 

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Integrate.nquad 的集成错误很大 的相关文章

随机推荐