Integral exponensial dalam Visual Basic : Deret Ramanujan
Integral eksponensial sering muncul dalam fisika dan matematika. Integral tersebut memiliki bentuk
\( Ei(x)=\int_{-\infty}^x {e^t \over t} dt \)Integral ini tidak dapat dihitung secara analitik. Integral tersebut harus dinitung secara numerik.
Beberapa aplikasi sudah dilengkapi dengan instruksi utuk menghitung integral eksponensial. Seperti Mathematica menggunakan instruksi \( Ei(x) \) dan Matlab menggunakan instruksi \( expint(x) \).
Bagaimana jika perlukan fungsi itu untuk digunakan dalam program viasual basic, padahal fungsi tersebut tidak tersedia dalam visual basic. Saya buat fungsi tersebut dengan berbasis deret Ramanujan. Exspresi deret Ramanujan untuk integral eksponensial adalah
Berikut adalah fungsi yang saya buat beserta subroutin untuk menjalankannya. Silakan bagi yang ingin menggunakan. Tinggal copy paste ke dalam modul visual basic.
Berikut adalah contoh hasil perhitungan dibandingkan dengan Wolframalpha. Hasilnya sangat mendekati.
Berikut adalah fungsi integral eksponensial
Function EiR(x As Double) As Double
Dim fak(100), suk(100) As Double
n = 40
fak(1) = 1
i = 1
Do
i = i + 1
fak(i) = fak(i – 1) * i
Loop Until i = n
suk(1) = 1
suk(2) = 1
‘
i = 1
Do
i = i + 1
If (i Mod 2) = 1 Then
m = i \ 2
suk(i) = suk(i – 2) + 1 / (2 * m + 1)
suk(i + 1) = suk(i)
‘
End If
Loop Until i = n
If x > 0 Then
jum = 0
i = 0
Do
i = i + 1
satu = Exp(i * Log(x))
dua = Exp((i – 1) * Log(2))
If (i Mod 2) = 1 Then
jum = jum + satu * suk(i) / (fak(i) * dua)
Else
jum = jum – satu * suk(i) / (fak(i) * dua)
End If
Loop Until i = n
jum = 0.57721 + Log(x) + Exp(x / 2) * jum
Else
jum = 0
i = 0
Do
i = i + 1
satu = Exp(i * Log(Abs(x)))
dua = Exp((i – 1) * Log(2))
jum = jum – satu * suk(i) / (fak(i) * dua)
Loop Until i = n
jum = 0.57721 + Log(Abs(x)) + Exp(x / 2) * jum
End If
EiR = jum
‘
End Function
Sub hitungEiR()
Dim x As Double
i = 0
Do
i = i + 1
x = 1# * i
Cells(i + 1, 1) = x
Cells(i + 1, 2) = EiR(x)
Loop Until i = 10
End Sub