Ich muss ein Skript erstellen, das das Überlapporbital von zwei 1s Orbitalen berechnet. Das Integral wird durchBerechnen des Ergebnisses eines Integrals in Swift
gegebenich dies mit Code versucht, die Berechnung, aber meine Antwort ist bei weitem nicht der analytischen Ergebnis S=(1+R+R^2/3)exp(-R)
. Könnte mir jemand helfen herauszufinden, wo ich falsch gelaufen bin?
Der Code:
import Foundation
var sum: Double = 0.0 //The integral result
var step_size: Double = 0.0000025
var a: Double = 0.0
var R: Double = 5.0
var next_point: Double = 0.0
var midpoint: Double = 0.0
var height: Double = 0.0
var r_val: Double = 0.0
func psi_func(r_val: Double) -> Double {
return exp(-r_val)
}
//Integration
while next_point < R {
next_point = a + step_size
midpoint = a + step_size/2
height = psi_func(r_val: midpoint)
sum += psi_func(r_val: midpoint)*step_size
a = a + step_size
}
print("S = ", 2*3.14159*3.14159*sum) // This is a 3-D orbital, so I multiply by 2*pi*pi
Für R = 5.0
Meine Antwort: 19.61
Analytic Antwort: 0,097
Beachten Sie, dass Sie die statische Eigenschaft 'Double.pi' verwenden können, anstatt eine eigene Konstante zu definieren. – MathewS
Guter Tipp @Mathews, danke. – loltospoon
Kannst du vielleicht beschreiben, was diese 'psi' und' r' und 'R' und' V' in der Funktionsdefinition sind? Dies würde beim Debuggen des Codes helfen – Alistra