0% found this document useful (0 votes)
101 views

Aim: To Solve A Differential Equation Using Modified Euler's Method. Algorithm

The document describes using the modified Euler's method to solve a differential equation. It involves: 1) Entering the initial x and y values, the target x value, and interval width h. 2) Calculating the slope at the initial y value and using it to estimate a new y value. 3) Calculating the slope at the new y value and averaging the slopes. 4) Using the average slope to calculate another new y value, incrementing x, and repeating until x exceeds the target value.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
101 views

Aim: To Solve A Differential Equation Using Modified Euler's Method. Algorithm

The document describes using the modified Euler's method to solve a differential equation. It involves: 1) Entering the initial x and y values, the target x value, and interval width h. 2) Calculating the slope at the initial y value and using it to estimate a new y value. 3) Calculating the slope at the new y value and averaging the slopes. 4) Using the average slope to calculate another new y value, incrementing x, and repeating until x exceeds the target value.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Aim: To solve a differential equation using modified Euler’s Method.

Algorithm:
1. Enter the initial values of x and y(x0,y0).
2. Enter the value of x for which y is to be determined.
3. Enter the width of the interval, ‘h’.
4. Do:
slope1= dy/dx(x0,y0)
ynew=y0+(h*slope1)
slope2=dy/dx(x0,ynew)
slopeavg=slope1+slope2
ynew2=y0+h*slopeavg.
x0=x0+h
y0= ynew2
Until (x0>=x)
5. Print y, which is the solution.

Flow Chart:
Start

Enter x0 and y0

Enter the value of x for which y is to be determined

Enter the width of the interval, ‘h’

slope1= dy/dx(x0,y0)

ynew=y0+(h*slope1)

slope2=dy/dx(x0,ynew)

slopeavg=slope1+slope2

ynew2=y0+h*slopeavg.
x0=x0+h

y0= ynew2

No Is
(x0>=x)?

Yes

Print y, which is the solution

End

Program:
//Modified Euler's Method for differential equations
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
double df(double x, double y)
{
double a=x+y; //function for defining dy/dx
return a;
}
int main()
{
double x0,y0,x,y_i,dy1,dy2,dy_avg,y_n,h; //for initial values,
width, etc.
cout<<"\nEnter the initial values of x and y respectively:\n";
cin>>x0>>y0; //Initial values
cout<<"\nEnter the value of x for which you would like to find y:\n";
cin>>x;
cout<<"\nEnter the interval width,h:\n";
cin>>h; //input width

cout<<"x"<<setw(16)<<"y"<<setw(16)<<"hy'"<<setw(16)<<"y_new"<<setw(16)<<"hy
_new'"<<setw(16)<<"hy'avg"<<setw(16)<<"y_n+1"<<endl;

cout<<"--------------------------------------------------------------------
------------------------------\n";
while(fabs(x-x0)>0.0000001 //I couldn't just write "while(x0<x)"
as they both are floating point nos. It is dangerous to compare two
floating point nos. as they are not the same in binary as they are in
decimal. For instance, a computer cannot exactly represent 0.1 or 0.7 in
binary just like decimal can't represent 1/3 exactly without recurring
digits.

{
dy1=h*df(x0,y0); //calculate slope or dy/dx at x0,y0
y_i=y0+dy1; //calculate new y, which is y0+h*dy/dx
dy2=h*df(x0,y_i); //calculate slope or dy/dx at x0,new y
dy_avg=(dy1+dy2)/2.0; //calculate the average of the slopes
at y0 and new y
y_n=y0+dy_avg; //calculate new y, which is
y0+h*average(dy/dx)

cout<<x0<<setw(16)<<y0<<setw(16)<<dy1<<setw(16)<<y_i<<setw(16)<<dy2<<setw(1
6)<<dy_avg<<setw(16)<<y_n<<endl;
x0=x0+h; //calculate new x.
y0=y_n; //pass this new y as y0 in the next
iteration.
}
cout<<x0<<setw(16)<<y0<<endl;
cout<<"The approximate value of y at x=0 is "<<y0<<endl; //print the
solution.
return 0;
}

Outputs:

For dy/dx=x+y
For dy/dx=-2x-y

You might also like