====== Differences ====== This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
gibson:teaching:spring-2016:math445:lecture:timestepping [2016/04/14 10:00] gibson [Problem 3] |
gibson:teaching:spring-2016:math445:lecture:timestepping [2016/04/14 18:23] (current) gibson [Problem 4] |
||
---|---|---|---|
Line 81: | Line 81: | ||
{{ :gibson:teaching:spring-2016:math445:lecture:cylinderpath1.png?direct&400 }} | {{ :gibson:teaching:spring-2016:math445:lecture:cylinderpath1.png?direct&400 }} | ||
- | Note that the computed trajectory is not very accurate, since we chose quite a large time step $\Delta t = 0.4$, and forward-Euler is only 1st-order accurate (error scales as $\Delta t$). | + | |
+ | Note that the trajectory computed here is not very accurate. The particle shouldexit the box at the same $y$ value it had when it entered. The problem is we chose quite a large time step $\Delta t = 0.4$, and forward-Euler is only 1st-order accurate (error scales as $\Delta t$). In the next problem, we'll reduce the time step to $\Delta t = 0.01$ and get a more accurate solution --though still not as good as the 4th-order accurate ''ode45'' function. | ||
---- | ---- | ||
====Problem 2==== | ====Problem 2==== | ||
- | Write Matlab code that plots the //path// of the particle as a red curved line. To do this wee need to save the sequence of $\vec{x}$ values in a matrix, and then plot the rows of that matrix as a line. | + | Write Matlab code that plots the //path// of the particle as a red curved line. To do this we need to save the sequence of $\vec{x}$ values in a matrix, and then plot the rows of that matrix as a line. |
<code matlab> | <code matlab> | ||
Line 108: | Line 110: | ||
</code> | </code> | ||
+ | {{ :gibson:teaching:spring-2016:math445:lecture:cylinderpath3.png?400 |}} | ||
+ | ---- | ||
====Problem 3==== | ====Problem 3==== | ||
Line 126: | Line 129: | ||
axis equal | axis equal | ||
axis tight | axis tight | ||
- | xlim([-xmax,xmax]) | + | xlim([-3,3]) |
- | ylim([-ymax,ymax]) | + | ylim([-2,2]) |
</code> | </code> | ||
Line 150: | Line 153: | ||
</file> | </file> | ||
+ | |||
+ | This produces a plot very like the one for Problem 3. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Problem 4 ==== | ||
+ | |||
+ | Draw a number of particle paths starting with a number of $y$ values and $x=-2.8$. | ||
+ | |||
+ | <code matlab> | ||
+ | % use Matlab's ode45 function to do the time integration of | ||
+ | % dx/dt = v(t, x) | ||
+ | |||
+ | T = 10; % integrate from t=0 to T=10 | ||
+ | |||
+ | for y = -2:0.4:2 % loop over different y values | ||
+ | |||
+ | x0 = [-2.8; y]; % set initial position of particle | ||
+ | |||
+ | [t, x] = ode45(@v, [0 T], x0); % compute x(t) over range 0 <= t <= T | ||
+ | |||
+ | plot(x(:,1), x(:,2), 'r-'); % plot the path | ||
+ | |||
+ | end | ||
+ | </code> | ||
+ | |||
+ | {{ :gibson:teaching:spring-2016:math445:lecture:cylinderpath2.png?direct&400 |}} | ||
+ | |||
+ |