Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
15
Task/Euler-method/Groovy/euler-method-1.groovy
Normal file
15
Task/Euler-method/Groovy/euler-method-1.groovy
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
def eulerStep = { xn, yn, h, dydx ->
|
||||
(yn + h * dydx(xn, yn)) as BigDecimal
|
||||
}
|
||||
|
||||
Map eulerMapping = { x0, y0, h, dydx, stopCond = { xx, yy, hh, xx0 -> abs(xx - xx0) > (hh * 100) }.rcurry(h, x0) ->
|
||||
Map yMap = [:]
|
||||
yMap[x0] = y0 as BigDecimal
|
||||
def x = x0
|
||||
while (!stopCond(x, yMap[x])) {
|
||||
yMap[x + h] = eulerStep(x, yMap[x], h, dydx)
|
||||
x += h
|
||||
}
|
||||
yMap
|
||||
}
|
||||
assert eulerMapping.maximumNumberOfParameters == 5
|
||||
8
Task/Euler-method/Groovy/euler-method-2.groovy
Normal file
8
Task/Euler-method/Groovy/euler-method-2.groovy
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
def dtdsNewton = { s, t, tR, k -> k * (tR - t) }
|
||||
assert dtdsNewton.maximumNumberOfParameters == 4
|
||||
|
||||
def dtds = dtdsNewton.rcurry(20, 0.07)
|
||||
assert dtds.maximumNumberOfParameters == 2
|
||||
|
||||
def tEulerH = eulerMapping.rcurry(dtds) { s, t -> s >= 100 }
|
||||
assert tEulerH.maximumNumberOfParameters == 3
|
||||
7
Task/Euler-method/Groovy/euler-method-3.groovy
Normal file
7
Task/Euler-method/Groovy/euler-method-3.groovy
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
def tNewton = { s, s0, t0, tR, k ->
|
||||
tR + (t0 - tR) * Math.exp(k * (s0 - s))
|
||||
}
|
||||
assert tNewton.maximumNumberOfParameters == 5
|
||||
|
||||
def tAnalytic = tNewton.rcurry(0, 100, 20, 0.07)
|
||||
assert tAnalytic.maximumNumberOfParameters == 1
|
||||
14
Task/Euler-method/Groovy/euler-method-4.groovy
Normal file
14
Task/Euler-method/Groovy/euler-method-4.groovy
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[10, 5, 2].each { h ->
|
||||
def tEuler = tEulerH.rcurry(h)
|
||||
assert tEuler.maximumNumberOfParameters == 2
|
||||
println """
|
||||
STEP SIZE == ${h}
|
||||
time analytic euler relative
|
||||
(seconds) (°C) (°C) error
|
||||
-------- -------- -------- ---------"""
|
||||
tEuler(0, 100).each { BigDecimal s, tE ->
|
||||
def tA = tAnalytic(s)
|
||||
def relError = ((tE - tA)/(tA - 20)).abs()
|
||||
printf('%5.0f %8.4f %8.4f %9.6f\n', s, tA, tE, relError)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue