Euler Method in C++

  • #1
Demjan
1
0
Summary: Problem with Euler Method in C++

Hello, I have a very difficult problem for me (a beginner in programming) how to make the version of the euler method presented in c ++ with the void, float functions, so that the program will calculate from the data that I enter during the program.
Code:
#include<iostream>
#include <string>



using namespace std;

double f(double x, double y) { return x + y; }

int main()
{
 double x0, y0, xn, h, yn, slope;
 int i, n;

 cout<<"Warunki początkowe: "<< endl;
 cout<<"x0 = ";
 cin>> x0;
 cout<<"y0 = ";
 cin >> y0;
 cout<<"Enter calculation point: xn = ";
 cin>>xn;
 cout<<"Enter number of steps: ";
 cin>> n;


 h = (xn-x0)/n;

 cout<<"\nx0\ty0\tslope\tyn\n";
 cout<<"------------------------------\n";

 for(i=0; i < n; i++)
 {
  nachyl = f(x0, y0);
  yn = y0 + h * slope;
  cout<<  x0 <<"\t"<<  y0 <<"\t"<<  slope <<"\t"<<  yn << endl;
  y0 = yn;
  x0 = x0+h;
 }


 cout<<"\nValue of y at x = "<< xn<< " is " << yn;

 return 0;
}
 
Last edited by a moderator:

Answers and Replies

  • #2
36,708
8,701
Summary: Problem with Euler Method in C++

Hello, I have a very difficult problem for me (a beginner in programming) how to make the version of the euler method presented in c ++ with the void, float functions, so that the program will calculate from the data that I enter during the program.
Code:
#include<iostream>
#include <string>

using namespace std;

double f(double x, double y) { return x + y; }

int main()
{
 double x0, y0, xn, h, yn, slope;
 int i, n;

 cout<<"Warunki początkowe: "<< endl;
 cout<<"x0 = ";
 cin>> x0;
 cout<<"y0 = ";
 cin >> y0;
 cout<<"Enter calculation point: xn = ";
 cin>>xn;
 cout<<"Enter number of steps: ";
 cin>> n;

 h = (xn-x0)/n;

 cout<<"\nx0\ty0\tslope\tyn\n";
 cout<<"------------------------------\n";

 for(i=0; i < n; i++)
 {
  nachyl = f(x0, y0);
  yn = y0 + h * slope;
  cout<<  x0 <<"\t"<<  y0 <<"\t"<<  slope <<"\t"<<  yn << endl;
  y0 = yn;
  x0 = x0+h;
 }

 cout<<"\nValue of y at x = "<< xn<< " is " << yn;

 return 0;
}
What is your question? You said "how to make the version of the euler method presented in c ++ with the void, float functions" -- what do you mean by that?

In the Euler method, you are given a differential equation of the form dy/dx = f(x, y), with initial condition ##y(x_0) = y_0##.

Try your code out on this differential equation: ##dy/dx = 2x##, with initial condition y(1) = 1. Here the function to use is ##f(x, y) = 2x + 0y##.
 
Last edited:
  • #3
36,708
8,701
With a minor change in the for loop in your code I was able to get it to work.

You have a variable named slope that you didn't use. Your function f is the slope. The example differential equation I'm solving is dy/dx = 2x + 0y, so f(x, y) = 2x + 0y, or f(x, 0).
Here is my definition for f:
Code:
double f(double x, double y) { return 2 * x ; }
Since y doesn't appear in the return value, this function is called using f(x, 0).

Here is my for loop:
Code:
for (i = 0; i < n; i++)
{
    slope = f(x0, 0);         
    yn = y0 + h * slope;
    cout << x0 << "\t" << y0 << "\t" << slope << "\t" << yn << endl;
    y0 = yn;
    x0 = x0 + h;
}

Using dy/dx = 2x and a starting point of (1, 1), and an ending x-value of 1.1 and 10 steps, I get a y-value of 1.209, which is pretty close to the exact value of 1.21.
Euler's method is probably the least accurate of methods for solving differential equations, so my result isn't so far off.
 

Suggested for: Euler Method in C++

  • Last Post
Replies
9
Views
776
Replies
2
Views
221
Replies
1
Views
288
  • Last Post
Replies
12
Views
525
Replies
2
Views
247
Replies
2
Views
315
Replies
15
Views
616
  • Last Post
Replies
7
Views
433
  • Last Post
3
Replies
80
Views
7K
  • Last Post
Replies
1
Views
906
Top