practical05_sol - Practical Session 5 Solutions Exercises...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Practical Session 5 Solutions Exercises 1. Ill put the finished code on the web pages, in case anyone has trouble with this. (a), (b) My code is as follows. / * ode_exp_euler.c * Example code to solve dy/dx=y using Eulers method. * / #include <stdio.h> #define N 1 / * number of ODEs * / #define NSTEP 10 / * number of integration steps * / #define XMIN 0.0 / * starting point for integration * / #define XMAX 1.0 / * stopping point for integration * / #define Y0 1.0 / * initial value * / void derivs(float xin, float yin, float dydx); void euler(float xin, float yin, float yout, float h); int main() { int i; float h = (XMAX - XMIN)/(1.0 * NSTEP); / * stepsize for integration * / float yin[N], yout[N]; / * values of y before and after a step, for a given x * / float x[NSTEP+1], y[NSTEP+1]; for (i = 0; i <= NSTEP; i++) / * Define array of x values * / x[i] = XMIN + h * i; y[0] = Y0; / * initial value * / printf("%f %f\n", x[0], y[0]); for (i = 0; i < NSTEP; i++) / * loop over x values * / { yin[0] = y[i]; euler(x[i], yin, yout, h); / * do one integration step * / y[i+1] = yout[0]; printf("%f %f\n", x[i+1], y[i+1]); } return 0; } void derivs(float xin, float yin, float dydx) { / * evaluate RHS of ODE * / dydx[0] = yin[0]; 1 return; } void euler(float xin, float yin, float yout, float h) { / * do one Euler step of size h * / int i; float dydx[N]; derivs(xin, yin, dydx); / * evaluate dy/dx * / for (i = 0; i < N; i++) yout[i] = yin[i] + dydx[i] * h; / * Euler step * / return; } (c) The estimate is 2.593743, as found with simple_euler.c . Note that Eulers method is not particularly accurate with small numbers of steps, for this ODE. The plot is below. It shows that the numerical estimates slowly diverge from the true solution, getting a bit worse with each step....
View Full Document

This note was uploaded on 09/29/2009 for the course COSC 1002 taught by Professor Wheatland during the Three '09 term at University of Sydney.

Page1 / 7

practical05_sol - Practical Session 5 Solutions Exercises...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online