Entegrali doğrudan değerlendirmek için semion kullanabilirsiniz. ---
from sympy import *
x, y, eta = symbols('x y eta', real=True)
re(integrate(1/(x - y + I*eta), (x, -1, 1))).simplify().subs({eta: 0})
# -> log(Abs(-y + 1)/Abs(y + 1))
Matlab'ın sembolik araç int
, sana aynı sonucu verir elbette (Bunun için Matlab diğer ilgili araçlar farkında değilim edin: eta-> 0 ile Onun gerçek kısmı anapara değerdir Belirli bir tanesini biliyorsanız belirtin).
Bir temel değerin sayısal hesaplamasını sordunuz. Cevabınız, analitik formu veya bilmediğiniz davranışları olan sadece f(y)
numaralı bir işleve sahipseniz, bunları sayısal olarak hesaplamak imkansızdır. İntegralın kutuplarının nerede olduğu ve hangi sırayla olduklarını bilmeniz gerekir.
diğer taraftan da ayrılmaz formu f(y)/(y - y_0)
ait olduğunu biliyorsanız, scipy.integrate.quad
örneğin, sizin için asıl değerini hesaplayabiliriz:
import numpy as np
from scipy import integrate, special
# P \int_{-1}^1 dx 1/(x - wvar) * (1 + sin(x))
print(integrate.quad(lambda x: 1 + np.sin(x), -1, 1, weight='cauchy', wvar=0))
# -> (1.8921661407343657, 2.426947531830592e-13)
# Check against known result
print(2*special.sici(1)[0])
# -> 1.89216614073
Detaylar için here bakınız.
MATLAB'da nasıl uygulanır? – kyle
MATLAB'da sembolik entegrasyon "int" temel değerleri işleyebilir: http://se.mathworks.com/help/symbolic/int.html Aksi takdirde sayısal entegratör "integral" uç noktalardaki tekillikleri de işleyebilir. Böylece, integrali ikiye ayırıp tekilliği tam olarak ekleyebilir ve ardından iki sonucu ekleyebilirsiniz: http://se.mathworks.com/help/matlab/ref/integral.html?searchHighlight=integral –