2002 ICTCM - Towson University - Search Page

handprintΛογισμικό & κατασκευή λογ/κού

18 Νοε 2013 (πριν από 3 χρόνια και 11 μήνες)

106 εμφανίσεις

Developing Computer
Simulations Using Object
Oriented Programming.


The Three Body Problem: A
Case Study

Mike O’Leary & Shiva Azadegan

Towson University

Supported by the National Science Foundation under grant DUE 9952625

What is the Course?


We teach an interdisciplinary course in
modeling, numerical methods, and
computer programming.


Mixed audience primarily of computer
science and mathematics majors.


Prerequisites:


Calculus 1, Calculus 2


Introduction to Computer Science 1 (C++)

The Goal


To teach students how to take a realistic
problem


Model it


Choose an appropriate numerical method


Implement that method using modern object
-
oriented programming and using modern
computer graphics


Interpret the results


Write a report summarizing their investigation

Methodology


Team taught


One mathematics & one computer science
instructor


Course is driven by a sequence of three
realistic project problems


Each project requires modeling, numerical
methods, programming, and a report


Students are evaluated based on their report and
on their program.

The Problems


Realistic problems from the sciences


Examples:


Three body problem


Heat flow


Motion under air resistance


Spread of HIV virus through the body


Traffic flow

Numerical Methods


Evaluating integrals


Trapezoidal Rule, Simpson’s Rule


Ordinary differential equations and systems


Euler’s method, Implicit Euler, Heun’s method, Runge
-
Kutta methods,
Runge
-
Kutta
-
Fehberg methods


Error analysis and control


Partial differential equations.


Finite difference methods


Error and stability analysis using von Neumann methods

Programming


C++


Microsoft Visual Studio


Microsoft Foundation Classes (MFC)

Object

Oriented Programming


Extensive use of classes


What is a class?


A structure containing data and methods for manipulating the
data


Examples: dialog, simulation, graph, vector


How are they useful?


Organization


Encapsulation (Data Hiding)


Inheritance


Reusability

Student Example

Event
-
Driven Programming


Program initializes, then waits for events


Button is pressed


Key is pressed


Mouse is moved


When an event occurs, a certain piece of
code is executed

Student Example

Programming: Graphics


Full use is made of the computer’s ability to
represent information graphically


Use the MFC library of Microsoft Visual
C++ to access graphics routines


In common use


Student example

Implementation


How can such a course be taught in
practice?


What are the details?!

How is it Taught?


Team taught


Mathematics and computer science are
closely integrated.


Ideas are introduced in the order that they
are needed.

Worksheets


Because no text is available for the course,
we provide students with a sequence of
worksheets.


These summarize the material taught in
class and contain exercises.


Examples

Worksheet 1


Mathematics


Trapezoidal Rule


Simpson’s Rule


Programming


Review of functions


Function prototypes


Passing functions


Assignment


Write a console program to implement Trapezoidal
Rule & Simpson’s Rule


Implement and analyze Simpson’s 3/8 Rule

Worksheet 2


Programming


Classes, objects & instances


Private & public data & methods


Constructors & destructors; setters & getters


Overloading


Assignment


Create a class for points, vectors, and line segments.


Use inheritance.

Worksheet 3


Programming


Classes, continued


Pointers to functions


Assignment


Write a program with a class called Integral.


It should have a public method that take as input the
number of subintervals and return the trapezoidal rule
approximation of the integral.


It should have another method that return’s the
Simpson’s rule approximation

Worksheet 3


Results

Worksheet 3


Results

Worksheet 4


Programming


Introduction to dialog
-
based programming


Introduction to event
-
driven programming


Assignment


Write a dialog
-
based version of the integral
program

Worksheet 4


Results

Worksheet 5


Programming


Create a dialog based program with graphics.


Classes for balls, for control dialog and for
graphics dialog.

Worksheet 6


Modeling


Newton’s law of gravity.


Model for the three body problem


where for
i

= 1, 2, 3.



12 equations in 12 variables plus time

i i
i i
r v
d
v a
dt
   

   
   
3
i j
i j
i j
i j
r r
a G m
r r





Worksheet 6


Mathematics


Euler’s method


Implicit Euler


Heun’s method (Improved Euler)


Applications to single equations


Assignment


Write a dialog based program to solve a
particular initial
-
value problem.

Worksheet 6


Results

Worksheet 7


Mathematics


Fourth order Runge
-
Kutta method


Applications to systems of differential
equations


Assignment


Modify the previous program to also implement
the Runge
-
Kutta method


Write a program that solves a system using the
Runge
-
Kutta method

Worksheet 7


Results

Project


Write a C++ program that simulates the
motion of three bodies under the influence
of gravity


As input the program should take the initial
positions, velocities, and masses of all of
the bodies, as well as the gravitational
constant, the time step, and the ending time.

Project


The program should use a Runge
-
Kutta
method to calculate the resulting motion of
the bodies.


The program should graphically display the
results.

Project


You are then to write up a technical report
that answers the following questions:

1.
What is the mathematical model of the
problem?

2.
What is the numerical method used to solve
the problem?

3.
What is the structure of your program?

4.
Describe the range of possible behaviors
shown by the system.

Project


In particular, for question 4, consider the
following questions:


Is it possible for the system to eject one of the
bodies to infinity?


Is it possible for the system to return to its
initial state?


Is it possible for the system to return to a state
close to, but not the same as its initial state?


Results


Student prog
ram


Student code

Where did we go from here?


Double pendulum


Heat flow

Double pendulum


Model




Mathematics


Lagrangian dynamics


Calculus of variations


Programming


Use of the mouse













2
1 2 1 1 2 2 1 2 1 1 2
2
1 2 1 1 2 2 2 1 2 2 2 2 1 2 1 2 1
cos sin sin
cos sin sin
L L L g
m m L m L m L g m m
     
     
     
      
1
L
2

1

2
L
Double pendulum


Results


Sample progra
m


Sample code

Heat equation


Model


As a system of ordinary differential equations


Probabilistically


As a partial differential equation


Mathematics


Finite difference methods


Implicit and explicit


Von Neumann analysis of stability


Programming


Menus

0
t xx
u u
 
Heat equation


Results


Student progr
am


Student code

Other projects


Motion of a baseball under air resistance


Wave motion


Traffic jam formation


Double spring


Resonant filter
(
http://www.cs/gasou.edu/faculty/demos/filterdemo/
)


Dynamics of HIV

Evaluation & Lessons


What did we learn?

Project Due Dates


Same due date for program and report


Students would not finish the program until the
due date.


Student report quality suffered.


Now we have two due dates


One for the program


One for the report.


These are graded separately

Open Ended Questions


Originally we used open
-
ended questions
for the project reports


Without focus, students had difficulty deciding
what was important


Now we ask the students detailed and
specific questions which they must answer
in their report

Student reaction


Positive reaction


Students enjoyed the way the programming and the
mathematics were integrated


Students also enjoyed working on problems with a
purpose


Negative reaction


Math students have difficulty with the programming,
and computer science students have difficulty with the
mathematics


Encourage teamwork!

Resources


http://www.towson.edu/~moleary/Simulation.htm