The Euler's method exercise appears under the Differential equations Math section of Khan Academy . This exercise shows how to use numerical methods to approximate a solution to a differential equation.
Types of ProblemsEdit
There are five types of problems in this exercise:
- Given all values of , estimate : The student is asked to estimate the value of using the table of derivatives, the step-size, and the point.
- Get from a to b in n equal steps: The student is asked to estimate the value of using the solution to the differential equation and initial condition.
- Solve for initial condition: The student is asked to find the value of k using the differential equation, the solution to the differential equation, initial condition, and step-size.
- Fill in the blanks in the Euler table below: The student is asked to fill in the blanks of the Euler table using the initial value problem, initial condition, and step-size.
StrategiesEdit
Knowledge of derivatives, implicit differentiation, differential equations, and Euler's method are encouraged to ensure success on this exercise.
- Euler's method:
- Euler's method is used to approximate values of differential equations that can't be solved by normal methods.
- The smaller the step size, the better approximation the graph will have.
- User needs the initial point, delta x, and the differential equation to be able to use Euler's method.
ProgramEdit
/************************************************************** * Approximating visual solutions to first-order differential * * Equations with Euler's Method * * ***********************************************************/ //You'll get a better approximation the smaller the xStep (although it will require more computation) var xStep = 0.1; //Initial conditions var initX = 0; var initY = 8; //This is where you should define the first-order differential equation //Assumes it can be expressed as y' = f(x, y(x)) var slopeAtPoint = function(x, y) { return -x/y ; }; //Variables for graph paper var xMin = 0; var yMin = 0; var xMax = 10; var yMax = 10; var xOffset = 21; var yOffset = 22; background(58, 66, 74); var xScale = 400/xMax; var yScale = 400/yMax; //Maps an x coordinate to the appropriate pixeldistance on canvas var xCoordinate = function(x) { return xOffset + x*xScale; }; //Maps a y coordinate to the appropriate pixel distance on canvas var yCoordinate = function (y) { return 400-(y*yScale+ yOffset); }; stroke(250, 250, 250); //Draw the verticals lines in grid and labels x-axis with numbers for(var i=xMin; i<=xMax; i++) { line(xCoordinate(i), yCoordinate(yMax), xCoordinate(i), yCoordinate(yMin)); text(i, xCoordinate(i), yCoordinate(yMin)+15); } //Draw the horizontal lines in grid and labels y-axis with numbers for(var i=yMin; i<=yMax; i++) { line(xCoordinate(xMin), yCoordinate(i), xCoordinate(xMax), yCoordinate(i)); text(i, xOffset/2, 400-(i*yScale+ yOffset)); } //This actually draws the lines starting with initX and incrementing by xStep until you get //to xMax var drawApproximation = function(deltaX) { var x = initX; var y = initY; while (x<=xMax) { point(xCoordinate(x), yCoordinate(y)); var slope = slopeAtPoint(x,y); var xNext = x +deltaX; var yNext = y + slope*deltaX; line(xCoordinate(x), yCoordinate(y), xCoordinate(xNext), yCoordinate(yNext)); x = xNext; y = yNext; } }; //Change color and make the function calls to actually draw approximations stroke(252, 136, 136); strokeWeight(2); drawApproximation(xStep); stroke(106, 245, 106); drawApproximation(xStep*2);
Created by Salman Khan
☀ All Khan Academy content is available for free at: www.khanacademy.org