diff --git a/contents/forward_euler_method/code/swift/euler.swift b/contents/forward_euler_method/code/swift/euler.swift new file mode 100644 index 000000000..2d6e51954 --- /dev/null +++ b/contents/forward_euler_method/code/swift/euler.swift @@ -0,0 +1,40 @@ +import Foundation + +func solveEuler(timeStep: Double, n: Int) -> [Double] { + var result : [Double] = [1] + + for i in 1...n { + result.append(result[i - 1] - 3 * result[i - 1] * timeStep) + } + return result +} + +func checkResult(result: [Double], threshold: Double, timeStep: Double) -> Bool { + var isApprox = true + + for i in 0.. threshold { + print(result[i], solution) + isApprox = false + } + } + return isApprox +} + +func main() { + let timeStep = 0.01 + let n = 100 + let threshold = 0.01 + + let result = solveEuler(timeStep: timeStep, n: n) + let isApprox = checkResult(result: result, threshold: threshold, timeStep: timeStep) + + if isApprox { + print("All values within threshold") + } else { + print("Value(s) not in threshold") + } +} + +main() diff --git a/contents/forward_euler_method/forward_euler_method.md b/contents/forward_euler_method/forward_euler_method.md index fd2fbadd3..ba0b8be63 100644 --- a/contents/forward_euler_method/forward_euler_method.md +++ b/contents/forward_euler_method/forward_euler_method.md @@ -119,6 +119,8 @@ Full code for the visualization follows: [import, lang:"haskell"](code/haskell/euler.hs) {% sample lang="m" %} [import, lang:"matlab"](code/matlab/euler.m) +{% sample lang="swift" %} +[import, lang:"swift"](code/swift/euler.swift) {% endmethod %}