Table of Contents
Euler Method for Differential Equation
Euler method is the most simple but crude method to solve differential equation of the form
\[\frac{dy}{dx}=f\left( x,y \right),~~~y\left( {{x}_{0}} \right)={{y}_{0}}\]
Let x1 = x0 +h, where h is small. Then by Taylor’s series
\[{{y}_{1}}=y\left( {{x}_{0}}+h \right)={{y}_{0}}+h{{\left( \frac{dy}{dx} \right)}_{{{x}_{0}}}}+\frac{{{h}^{2}}}{2}{{\left( \frac{{{d}^{2}}y}{d{{x}^{2}}} \right)}_{{{c}_{1}}}}\]
\[where~{{c}_{1}}~lies~between~{{x}_{0}}~and~x\]
\[{{y}_{1}}={{y}_{0}}+hf\left( {{x}_{0}},{{y}_{0}} \right)+\frac{{{h}^{2}}}{2}{{y}^{”}}\left( {{c}_{1}} \right)\]
If the step size h is chosen small enough, then the second-order term may be neglected and hence y1 is given by
\[{{y}_{1}}={{y}_{0}}+hf\left( {{x}_{0}},{{y}_{0}} \right)\]
Similarly,
\[{{y}_{2}}={{y}_{1}}+hf\left( {{x}_{1}},{{y}_{1}} \right)\]
\[{{y}_{3}}={{y}_{2}}+hf\left( {{x}_{2}},{{y}_{2}} \right)~~~and~so~on.\]
In general,
\[{{y}_{n+1}}={{y}_{n}}+hf\left( {{x}_{n}},{{y}_{n}} \right),~n=0,1,2,….\]
This method is very slow. To get a reasonable accuracy with Euler’s methods, the value of h should be taken as small.
Algorithm of Euler’s Method
This algorithm finds the solution of the equation
\[{{y}^{‘}}=f\left( x,y \right),~~~y\left( {{x}_{0}} \right)={{y}_{0}}~~~over~the~\text{interval}~~~\left[ {{x}_{0}},{{x}_{n}} \right]\]
By Euler’s method
\[{{y}_{i+1}}={{y}_{i}}+hf\left( {{x}_{i}},{{y}_{i}} \right),~i=0,1,2,….,n-1.\]
Step 1. Start; Step 2. Input function f(x, y); Step 3. Read x0, y0, xn, h; /* x0, y0 are initial values and xn is the last value of x where the process will terminate, h is the step size */ Step 4. for x = x0 to xn step h do y = y0 + h * f(x, y0); Print x, y; y0 = y; endfor; Step 5. Stop;
Euler’s Method implementation in C
/* Program Euler Solution of a differential equation of the form y' = f(x, y), y(x0) = y0 by Euler's method */ #include<stdio.h> #include<math.h> void main() { float x0,y0,xn,h,x,y; float f(float x, float y); printf("Enter the initial (x0) and final (xn) values of x: "); scanf("%f%f",&x0,&xn); printf("Enter initial value of y: "); scanf("%f",&y0); printf("Enter the step length h: "); scanf("%f",&h); printf(" x-value \t y-value "); for(x=x0;x<xn;x+=h) { y=y0+h*f(x,y0); printf("%f \t %f \n",x+h,y); y0=y; } } //definition of the function f(x, y) float f(float x, float y) { return (x*x+x*y+2); }
Output
Enter the initial (x0) and final (xn) values of x: 0 0.2
Enter initial value of y: 1
Enter the step length h: 0.5
x-value y-value
0.050000 1.100000
0.100000 1.202875
0.150000 1.309389
0.200000 1.420335
Example 01 |
Solve the differential equation by Euler’s method
\[\frac{dy}{dx}=1-y,y\left( 0 \right)=0\]
Find y at x = 0.1, 0.2
Solution:
\[Here~~~f\left( x,y \right)=1-y,~~~{{x}_{0}}=0,{{y}_{0}}=0\]
Taking h = 0.1, we have by Euler’s method
\[{{y}_{1}}={{y}_{0}}+hf\left( {{x}_{0}},{{y}_{0}} \right)=0+0.1\left( 1-0 \right)=0.1\]
\[\therefore y\left( 0.1 \right)=0.1\]
Again, we have by Euler’s method
\[{{y}_{2}}={{y}_{1}}+hf\left( {{x}_{1}},{{y}_{1}} \right)=0.1+0.1f\left( 0.1,0.1 \right)\]
\[\Rightarrow {{y}_{2}}=0.1+0.1\left( 1-0.1 \right)=0.19\]
\[\therefore y\left( 0.2 \right)=0.19\]
Example 02 |
Find y(0.10) and y(0.15) by Euler’s method from the differential equation
\[\frac{dy}{dx}={{x}^{2}}+{{y}^{2}},y\left( 0 \right)=0\]
Correct upto 4 decimal places, taking step h = 0.05.
Solution:
\[Here~~~f\left( x,y \right)={{x}^{2}}+{{y}^{2}},~~~{{x}_{0}}=0,{{y}_{0}}=0,h=0.05\]
Therefore by Euler’s method we have
\[{{y}_{1}}={{y}_{0}}+hf\left( {{x}_{0}},{{y}_{0}} \right)\]
\[\Rightarrow {{y}_{1}}=0+0.05f(0,0)=0+0.5\times 0\]
\[\therefore {{y}_{1}}=0\]
\[{{y}_{2}}={{y}_{1}}+hf\left( {{x}_{1}},{{y}_{1}} \right)\]
\[\Rightarrow {{y}_{2}}=0+0.05f\left( 0.05,0 \right)=0+0.05\left( 0.0025+0 \right)\]
\[\therefore y\left( 0.10 \right)=0.000125\]
Again,
\[{{y}_{3}}={{y}_{2}}+hf\left( {{x}_{2}},{{y}_{2}} \right)\]
\[\Rightarrow {{y}_{3}}=0.000125+0.05f\left( 0.10,0.000125 \right)\]
\[\Rightarrow {{y}_{3}}=0.000125+0.05\left\{ {{\left( 0.10 \right)}^{2}}+{{\left( 0.000125 \right)}^{2}} \right\}\]
\[\therefore y\left( 0.15 \right)=0.000625\]
<< Previous Next>>
;