Skip to content

Commit

Permalink
Added Beckward Euler Method with prediction made by forward Euler wit…
Browse files Browse the repository at this point in the history
…h test.

Moved some metods from ExplicitSystem to ODESystem.
  • Loading branch information
runadrag committed Jul 3, 2013
1 parent 36fdc76 commit 0a663fe
Show file tree
Hide file tree
Showing 32 changed files with 63 additions and 35 deletions.
6 changes: 2 additions & 4 deletions Math-ODE.package/ExplicitSystem.class/methodProperties.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{
"class" : {
"block:" : "DanielUber 5/22/2012 10:55" },
},
"instance" : {
"block" : "DanielUber 5/22/2012 10:07",
"block:" : "DanielUber 5/22/2012 10:10",
"x:t:" : "DanielUber 5/22/2012 10:07" } }
} }
2 changes: 1 addition & 1 deletion Math-ODE.package/ExplicitSystem.class/properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
],
"commentStamp" : "<historical>",
"instvars" : [
"block" ],
],
"name" : "ExplicitSystem",
"pools" : [
],
Expand Down
15 changes: 15 additions & 0 deletions Math-ODE.package/ImplicitStepper.class/instance/doStep.time..st
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
as yet unclassified
doStep: aState time: t
"This method should take one step from inState at time t of size dt, and modify the state, then answer it. The default implementation here is Backward Euler Method with prediction made by forward Euler."
self stepSize isNil ifTrue: [self error: 'step size required by stepper'].
aState isNumber
ifTrue: [^ (self stepSize * (system x: aState t: t) + aState)]
"a collection"
ifFalse:
[(1 to: aState size)
do: [ :i |
| xi ti |
ti := t + self stepSize.
xi := aState at: i.
aState at: xi + i put: (system x: xi t: ti )* self stepSize ].
^ aState.]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
as yet unclassified
doStep: aState time: t stepSize: timeStep
"This method should take one step from inState at time t of size dt, and modify the state, then answer it. The default implementation here is Beckward Euler Method with prediction made by forward Euler. "
self stepSize: timeStep.
^ self doStep: aState time: t.
3 changes: 3 additions & 0 deletions Math-ODE.package/ImplicitStepper.class/instance/stepSize..st
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
as yet unclassified
stepSize: timeStep
dt := timeStep.
3 changes: 3 additions & 0 deletions Math-ODE.package/ImplicitStepper.class/instance/stepSize.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
as yet unclassified
stepSize
^ dt.
5 changes: 4 additions & 1 deletion Math-ODE.package/ImplicitStepper.class/methodProperties.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,7 @@
"class" : {
},
"instance" : {
} }
"doStep:time:" : "NataliaMoskovchuk 7/4/2013 00:24",
"doStep:time:stepSize:" : "NataliaMoskovchuk 7/4/2013 00:24",
"stepSize" : "NataliaMoskovchuk 7/3/2013 10:35",
"stepSize:" : "NataliaMoskovchuk 7/3/2013 10:34" } }
2 changes: 1 addition & 1 deletion Math-ODE.package/ImplicitStepper.class/properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
],
"commentStamp" : "<historical>",
"instvars" : [
],
"dt" ],
"name" : "ImplicitStepper",
"pools" : [
],
Expand Down
4 changes: 0 additions & 4 deletions Math-ODE.package/ImplicitSystem.class/instance/x.t..st

This file was deleted.

3 changes: 1 addition & 2 deletions Math-ODE.package/ImplicitSystem.class/methodProperties.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@
"class" : {
},
"instance" : {
"jacobianAtX:t:" : "DanielUber 5/22/2012 12:58",
"x:t:" : "DanielUber 5/22/2012 12:57" } }
"jacobianAtX:t:" : "DanielUber 5/22/2012 12:58" } }
6 changes: 4 additions & 2 deletions Math-ODE.package/ODESystem.class/methodProperties.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"class" : {
},
"block:" : "NataliaMoskovchuk 7/3/2013 23:12" },
"instance" : {
} }
"block" : "NataliaMoskovchuk 7/3/2013 23:12",
"block:" : "NataliaMoskovchuk 7/3/2013 23:12",
"x:t:" : "NataliaMoskovchuk 7/3/2013 23:14" } }
2 changes: 1 addition & 1 deletion Math-ODE.package/ODESystem.class/properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
],
"commentStamp" : "<historical>",
"instvars" : [
],
"block" ],
"name" : "ODESystem",
"pools" : [
],
Expand Down
2 changes: 1 addition & 1 deletion Math-ODE.package/monticello.meta/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
(name 'Math-ODE-DanielUber.15' message 'added defaultBlock to ExplicitSolverSubscriber (subclass responsibility) and imported changes for MidPointStepper' id '66978cce-a604-40e8-afc8-82531a140d1e' date '21 April 2013' time '12:28:37.26 pm' author 'DanielUber' ancestors ((name 'Math-ODE-NataliaMoskovchuk.14' message 'Added Midpoint method.' id '59c6f104-472b-410e-b76e-e91d0882649d' date '21 April 2013' time '7:46:55.614 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODE-DanielUber.13' message 'Added Tableau Stepper' id 'f4b3152c-a11e-4910-a815-9acdb9bcc4fa' date '20 July 2012' time '1:04:14.247 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.12' message 'changes to Math-ODE' id '905b6525-b095-4a6c-84b4-6dc52a76d4ff' date '10 June 2012' time '10:52:11.954 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.11' message 'added announcements/watchers to ODESolver ' id '42c431f9-2754-4d1d-b60f-5d5c011c4ade' date '8 June 2012' time '11:43:43.202 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.10' message 'RungeKuttaStepper added. Corrected issue where ODESolver would overwrite stepper.' id 'aa5aa7b0-eb57-457f-a08a-f9971db062b3' date '29 May 2012' time '11:38:04.988 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.9' message 'working copy' id '7356b953-4511-44c1-baed-671b73abdd00' date '29 May 2012' time '8:07:06.734 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.8' message 'empty log message' id '5c0bc90a-2387-41bc-ab90-a88883002a50' date '23 May 2012' time '2:26:31.909 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.7' message 'added stepSize method to ODESolver to match documentation.' id '955dc50b-d09e-41cf-b8dd-f0ae03bc864f' date '22 May 2012' time '1:13:52.298 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.6' message 'added classes from odeint-v2. Need to flush out methods.' id 'ff724335-5ab4-435c-8c05-59aba765771b' date '22 May 2012' time '1:08:22.878 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.5' message 'removed stepSize method' id 'e61dae0a-b3ed-4cdb-a664-339a0f9b5b1e' date '22 May 2012' time '12:19:42.946 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.4' message 'added ODESolver. Need to seriously refactor this.' id '571a4c4d-eaf0-4e41-86c4-759345442aaa' date '22 May 2012' time '12:00:41.72 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.3' message 'added dostep:time:stepSize: to Explicit Stepper.' id '22698f56-b98a-42f8-aa9a-a5ebd7040fba' date '22 May 2012' time '11:00:33.138 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.2' message 'added Stepper instance side order method' id '1985fcfd-5303-402a-9827-079a288c913c' date '22 May 2012' time '10:28:29.012 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.1' message 'adding tests' id 'b3f035a5-9b7e-4620-82d1-01b71791d425' date '22 May 2012' time '10:22:15.344 am' author 'DanielUber' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
(name 'Math-ODE-NataliaMoskovchuk.16' message 'Moved methods block:, block and x:t: to ODESystem. Added Beckward Euler Method with prediction made by forward Euler' id '6610aff6-40af-417d-9363-af41bd4e797f' date '4 July 2013' time '12:29:10.73 am' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODE-DanielUber.15' message 'added defaultBlock to ExplicitSolverSubscriber (subclass responsibility) and imported changes for MidPointStepper' id '66978cce-a604-40e8-afc8-82531a140d1e' date '21 April 2013' time '12:28:37.26 pm' author 'DanielUber' ancestors ((name 'Math-ODE-NataliaMoskovchuk.14' message 'Added Midpoint method.' id '59c6f104-472b-410e-b76e-e91d0882649d' date '21 April 2013' time '7:46:55.614 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODE-DanielUber.13' message 'Added Tableau Stepper' id 'f4b3152c-a11e-4910-a815-9acdb9bcc4fa' date '20 July 2012' time '1:04:14.247 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.12' message 'changes to Math-ODE' id '905b6525-b095-4a6c-84b4-6dc52a76d4ff' date '10 June 2012' time '10:52:11.954 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.11' message 'added announcements/watchers to ODESolver ' id '42c431f9-2754-4d1d-b60f-5d5c011c4ade' date '8 June 2012' time '11:43:43.202 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.10' message 'RungeKuttaStepper added. Corrected issue where ODESolver would overwrite stepper.' id 'aa5aa7b0-eb57-457f-a08a-f9971db062b3' date '29 May 2012' time '11:38:04.988 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.9' message 'working copy' id '7356b953-4511-44c1-baed-671b73abdd00' date '29 May 2012' time '8:07:06.734 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.8' message 'empty log message' id '5c0bc90a-2387-41bc-ab90-a88883002a50' date '23 May 2012' time '2:26:31.909 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.7' message 'added stepSize method to ODESolver to match documentation.' id '955dc50b-d09e-41cf-b8dd-f0ae03bc864f' date '22 May 2012' time '1:13:52.298 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.6' message 'added classes from odeint-v2. Need to flush out methods.' id 'ff724335-5ab4-435c-8c05-59aba765771b' date '22 May 2012' time '1:08:22.878 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.5' message 'removed stepSize method' id 'e61dae0a-b3ed-4cdb-a664-339a0f9b5b1e' date '22 May 2012' time '12:19:42.946 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.4' message 'added ODESolver. Need to seriously refactor this.' id '571a4c4d-eaf0-4e41-86c4-759345442aaa' date '22 May 2012' time '12:00:41.72 pm' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.3' message 'added dostep:time:stepSize: to Explicit Stepper.' id '22698f56-b98a-42f8-aa9a-a5ebd7040fba' date '22 May 2012' time '11:00:33.138 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.2' message 'added Stepper instance side order method' id '1985fcfd-5303-402a-9827-079a288c913c' date '22 May 2012' time '10:28:29.012 am' author 'DanielUber' ancestors ((name 'Math-ODE-DanielUber.1' message 'adding tests' id 'b3f035a5-9b7e-4620-82d1-01b71791d425' date '22 May 2012' time '10:22:15.344 am' author 'DanielUber' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
as yet unclassified
testDoStepTimeStepSize
| stepper sys dt |
sys := ImplicitSystem block: [:x :t | x * t].
stepper := ImplicitStepper onSystem: sys.
dt := 0.1.
self should: [(stepper doStep: 0 time: 10 stepSize: dt) = 0.0 ].
self should: [(stepper doStep: 10 time: 0 stepSize: dt) = 10.0 ].
self should: [(stepper doStep: 1 time: 1 stepSize: dt) = 1.1].
self should: [(stepper doStep: 10 time: 1 stepSize: dt) = 11.0].
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"class" : {
},
"instance" : {
"testDoStepTimeStepSize" : "NataliaMoskovchuk 7/3/2013 23:22" } }
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
],
"commentStamp" : "",
"instvars" : [
"sys" ],
"name" : "ImplicitSystemTest",
],
"name" : "ImplicitStepperTest",
"pools" : [
],
"super" : "TestCase",
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
running
setUp
"create a dummy system"
sys := ExplicitSystem new.
sys := ODESystem new.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"class" : {
},
"instance" : {
"setUp" : "DanielUber 5/22/2012 10:42",
"setUp" : "NataliaMoskovchuk 7/3/2013 23:29",
"testBlock" : "DanielUber 5/22/2012 10:15",
"testVectorBlock" : "DanielUber 5/22/2012 11:29",
"testVectorXT" : "DanielUber 5/22/2012 11:28",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"commentStamp" : "<historical>",
"instvars" : [
"sys" ],
"name" : "ExplicitSystemTest",
"name" : "ODESystemTest",
"pools" : [
],
"super" : "TestCase",
Expand Down
4 changes: 2 additions & 2 deletions Math-ODETests.package/monticello.meta/version
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
(name 'Math-ODETests-NataliaMoskovchuk.13' message 'Added tests for Midpoint solver.' id 'e5887ac2-0651-499f-aee7-ec3d0eeb4697' date '21 April 2013' time '7:55:48.748 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODETests-NataliaMoskovchuk.12' message 'Added tests for Midpoint solver.' id 'e9d83bcf-d0e9-44b0-9b82-6aba358bf05f' date '21 April 2013' time '7:55:28.49 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODETests-DanielUber.11' message 'added small test to RK4 Stepper.' id 'b4dde586-ab6e-4cc7-bceb-33f48518e18f' date '5 June 2012' time '8:15:54.522 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.10' message 'added failing test case for Implicit System.' id '3e52904c-ecfa-4619-8a2d-30a330b0dcf6' date '31 May 2012' time '9:55:30.914 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.9' message 'RungeKuttaStepper Test cases.' id '602a2efe-2b9f-4ffc-a77f-16cd4771112a' date '29 May 2012' time '11:37:30.278 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.8' message 'working copy' id '40e8f700-48d2-41f6-86f0-1ec4b408fdda' date '29 May 2012' time '8:07:55.66 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.7' message 'empty log message' id 'cfd892ed-878f-4133-be64-f3e0f16b1435' date '23 May 2012' time '2:26:52.338 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.6' message 'added stepSize test to ODESolver
' id '25e7cdfa-5187-4dd6-964e-6e8792997cc5' date '22 May 2012' time '1:13:27.876 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.5' message 'updated ODESolver test case' id 'b4987f9f-42e5-4419-82bc-b69cc8005a51' date '22 May 2012' time '12:10:31.248 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.4' message 'added an ODESolver Test case.' id 'de593a5a-7329-481d-9998-7110fe2440d2' date '22 May 2012' time '12:00:15.938 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.3' message 'added a simple test for explicit stepper' id '483279a1-a0be-4709-9d9e-bcbc0bb28328' date '22 May 2012' time '11:00:01.4 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.2' message 'simple tests.' id 'f7dcc5d5-7a0f-49a5-86b8-78b37af92772' date '22 May 2012' time '10:26:58.064 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.1' message 'empty log message' id '0e80a988-7d99-442a-88e9-3585a72553d7' date '22 May 2012' time '10:21:20.378 am' author 'DanielUber' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
(name 'Math-ODETests-NataliaMoskovchuk.14' message 'Moved tests from ExplicitSystemTest to ODESystemTest. Added testDoStepTimeStepSize to ImplicitSystemTest.' id '836d57a2-5b40-4df1-a02f-5081f2ba018d' date '4 July 2013' time '12:32:46.916 am' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODETests-NataliaMoskovchuk.13' message 'Added tests for Midpoint solver.' id 'e5887ac2-0651-499f-aee7-ec3d0eeb4697' date '21 April 2013' time '7:55:48.748 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODETests-NataliaMoskovchuk.12' message 'Added tests for Midpoint solver.' id 'e9d83bcf-d0e9-44b0-9b82-6aba358bf05f' date '21 April 2013' time '7:55:28.49 pm' author 'NataliaMoskovchuk' ancestors ((name 'Math-ODETests-DanielUber.11' message 'added small test to RK4 Stepper.' id 'b4dde586-ab6e-4cc7-bceb-33f48518e18f' date '5 June 2012' time '8:15:54.522 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.10' message 'added failing test case for Implicit System.' id '3e52904c-ecfa-4619-8a2d-30a330b0dcf6' date '31 May 2012' time '9:55:30.914 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.9' message 'RungeKuttaStepper Test cases.' id '602a2efe-2b9f-4ffc-a77f-16cd4771112a' date '29 May 2012' time '11:37:30.278 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.8' message 'working copy' id '40e8f700-48d2-41f6-86f0-1ec4b408fdda' date '29 May 2012' time '8:07:55.66 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.7' message 'empty log message' id 'cfd892ed-878f-4133-be64-f3e0f16b1435' date '23 May 2012' time '2:26:52.338 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.6' message 'added stepSize test to ODESolver
' id '25e7cdfa-5187-4dd6-964e-6e8792997cc5' date '22 May 2012' time '1:13:27.876 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.5' message 'updated ODESolver test case' id 'b4987f9f-42e5-4419-82bc-b69cc8005a51' date '22 May 2012' time '12:10:31.248 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.4' message 'added an ODESolver Test case.' id 'de593a5a-7329-481d-9998-7110fe2440d2' date '22 May 2012' time '12:00:15.938 pm' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.3' message 'added a simple test for explicit stepper' id '483279a1-a0be-4709-9d9e-bcbc0bb28328' date '22 May 2012' time '11:00:01.4 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.2' message 'simple tests.' id 'f7dcc5d5-7a0f-49a5-86b8-78b37af92772' date '22 May 2012' time '10:26:58.064 am' author 'DanielUber' ancestors ((name 'Math-ODETests-DanielUber.1' message 'empty log message' id '0e80a988-7d99-442a-88e9-3585a72553d7' date '22 May 2012' time '10:21:20.378 am' author 'DanielUber' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
Expand Down

0 comments on commit 0a663fe

Please sign in to comment.