The following is the beginnings of a program which I am currently attempting to write. Its purpose is to do an numerical approzimation for a linear first order differential equation using euler's method. It needs a lot of work. The problem is mainly that it only goes through one step of the analysis. Of course there may be several more problems. If anyone has an idea on how to get it to work, I would appreciate a response.

// Program -- Euleran's

// Uses Euler's meathod to approximate the solution of the differential

// equation y'=f(x,y) for a given interval.

//header files

#include <math.h>

#include <iostream.h>

#include <iomanip.h>

float euler (float);

float x,y,f,equation,h;

int n;

void main()

{

cout.setf(ios::fixed, ios::floatfield); //set up floating point

cout.setf(ios::showpoint); // output format

cout << "Enter the initial value for x: " << endl;

cin >> x;

cout << "Enter the initial value for y: " << endl;

cin >> y;

cout << "Enter the final value for x: " << endl;

cin >> f;

cout << "Enter the number of steps for which you wish the " << endl

<< "function to be analyzed: " << endl;

cin >> n;

cout << "Enter the first order differential equation which you " << endl;

cout << "wish to analyze:" << endl;

cin >> equation;

h=(f-x)/n;

euler (equation);

cout << x << " " << y << endl;

}

float euler (float equation)

{

for(int i=1;i<=n;i++);

{

y=y+h*equation;

x=x+h;

return x,y;

}

}

Thank you,

Ben Key

// Program -- Euleran's

// Uses Euler's meathod to approximate the solution of the differential

// equation y'=f(x,y) for a given interval.

//header files

#include <math.h>

#include <iostream.h>

#include <iomanip.h>

float euler (float);

float x,y,f,equation,h;

int n;

void main()

{

cout.setf(ios::fixed, ios::floatfield); //set up floating point

cout.setf(ios::showpoint);

cout << "Enter the initial value for x: " << endl;

cin >> x;

cout << "Enter the initial value for y: " << endl;

cin >> y;

cout << "Enter the final value for x: " << endl;

cin >> f;

cout << "Enter the number of steps for which you wish the " << endl

<< "function to be analyzed: " << endl;

cin >> n;

cout << "Enter the first order differential equation which you " << endl;

cout << "wish to analyze:" << endl;

cin >> equation;

h=(f-x)/n;

euler (equation);

cout << x << " " << y << endl;

}

float euler (float equation)

{

for(int i=1;i<=n;i++);

{

y=y+h*equation;

x=x+h;

return x,y;

}

}

Thank you,

Ben Key

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

to evaluate this equation.

For that, you must use (or program) a parser, wich is certainly

not a piece of cake.

To debug your program, I've inserted the equation (y'=x+y) in

the right place directly. If you don't intend to get a expression parse working, you can do in this way (but you will have to recompile for each different equation you plan to analyse.

All the others problems where syntaxical.

Here is the revised code :

#include <math.h>

#include <iostream.h>

#include <iomanip.h>

void euler ();

float x,y,f,equation,h;

int n;

void main()

{

cout.setf(ios::fixed, ios::floatfield); //set up floating point

cout.setf(ios::showpoint);

cout << "Enter the initial value for x: " << endl;

cin >> x;

cout << "Enter the initial value for y: " << endl;

cin >> y;

cout << "Enter the final value for x: " << endl;

cin >> f;

cout << "Enter the number of steps for which you wish the " << endl<< "function to be analyzed: " << endl;

cin >> n;

h=(f-x)/n;

euler();

cout << x << " " << y << endl;

}

void euler ()

{

for(int i=0;i<n;i++) //there was a ; here, wich is bad ...

{

y+=h*(x+y);

x+=h;

}

}

That's about it.

You should avoid global variable and use parameters of function

correctly (I haven't done it because there was no real need, it's

just for the beauty of the code)

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trialSuppose your equation is in a character string.

For your specific problem, a parser is a piece of program

that will analyze the string, recognize the variables and the

operator (and parenthesis and so on).

It will so create a data structure (generally a tree) that

will allow your equation to be evaluated for given value of variables.

As most language like C and C++ are compiled, once they run,

their variables are nothing more than memory adresses without name. This is the thing that prevent from doing like you've done

in the question.

If you want easy evaluations of runtime entered equations, you

will have to learn a language such as miranda or LISP.

A good book to read about data structures (not specially trees or parsing) :

E. Horowitz, S. Sahni, and D. Mehta, Fundamentals of Data Structures in C++, W.H.

Freeman & Co, 1995.

C++

From novice to tech pro — start learning today.

Experts Exchange Solution brought to you by

Enjoy your complimentary solution view.

Get every solution instantly with Premium.
Start your 7-day free trial.

my for loop. It may also be improper calling of the function

euler.