Good time of day! I'm working on creating an Eulers Method Calculator program. The problem I got stuck on is I don't know how to convert the user's string into a Differential Equation (dy/dx).

This is what I have so far:

import static java.lang.System.*;
import java.util.Scanner;

class EulersMethod {

   public static void main(String args[]) {
      double xcor, ycor, delx, dely, xcorplusdelx, ycorplusdely, fx;
      String dydx;

      Scanner input = new Scanner(System.in);
        out.print(" Enter  x coordinate          ");                                        
        xcor = input.nextDouble();
        out.print(" Enter  y coordinate          ");                                        
        ycor = input.nextDouble();
        out.print(" Enter  delta x               ");                                        
        delx = input.nextDouble();
        out.print(" Enter dy/dx                  ");                                        
        dydx = input.next();
      out.print(" Enter x coordinate at which" +'\n'+ " you want to find the y value ");                                        
        fx = input.nextDouble();

         while (xcor != fx)            
   }
}

Fot the dydx user input, the user can input different Differential Equations, such as (x, y, x+y, 2x+y,...) and so on. Thus I dont know how to convert those inputs into a calculations within the code. What advice could you give me in order to resolve my issue?

Recommended Answers

All 5 Replies

when the user inputs for example 2x+y, you then want it to be 2*xcor(enteredvalue)+ ycor(enteredvalue) or do you want to apply integrals to this equation since differetiantion is all about integrals. If you want to do the first thing then i would suggest to see check if the equation contains x and replace it with your xcor double variable, same for y.

Yes, I want it to be 2*xcor(enteredvalue)+ ycor(enteredvalue), but I don't know how to convert the users input into the code like you have above. What would the code be instead of the (enteredvalue)?

That s not really an easy task.You could somehow make a an array of characters with the tochararray method and then implement a for loop to go through each cell and check where x,y,numbers and math operators are and somehow accumulate this in a integer variable in c# there is a class for that and you can do it much easier for Java i suggest to take this code snippet from this Link:Click Here
let s say that you want squares and square roots, logarithms etc... then this would be fairly complicated to achieve but only using basic operators i think that this link should sort that out for you.

For the sake of minimizing the complexity to parse the dydx, lets use a predefined formula of "x + y" aka

dydx = (xcor+ycor);

The code bellow gives the output, but only finds the first (x, y) coordinates. I tried the while loop, but the program doesn't work properly to give the output when the fx matches with xcor, instead goes on non-stop executing outputs.

import static java.lang.System.*;
import java.util.Scanner;

class EulersMethod {

   public static void main(String args[]) {
      double xcor, ycor, delx, dely, xcorplusdelx, ycorplusdely, fx, newxcor, newycor;
      double dydx;

      Scanner input = new Scanner(System.in);
        out.print(" Enter  x coordinate          ");                                        
        xcor = input.nextDouble();
        out.print(" Enter  y coordinate          ");                                        
        ycor = input.nextDouble();
        out.print(" Enter  delta x               ");                                        
        delx = input.nextDouble();
        //out.print(" Enter dy/dx                  ");                                      
        //dydx = input.next();
      out.print(" Enter x coordinate at which" + '\n' + " you want to find the y value ");                                      
        fx = input.nextDouble();

         //while (xcor != fx)  { 
            dydx = (xcor+ycor);
            dely = (dydx*delx);
            xcor = (xcor+delx);
            ycor = (ycor+dely);
            out.println("(" + xcor + ", " + ycor + ")");            
   }
}

How can this problem get resolved?

I was able to fix the issue by replacing:

while (xcor != fx)

with:

while (xcor <= fx)

however, this only works with a positive delx. When I tried a negative delx, I had to use:

while (xcor >= fx)

I however get lost on behalf of how to make which code to work. When the user inputs positive or negative delx. To be exact I don't know how to interpret the users input to determine weather there is a negative sign before the number or not, and accordingly set a proper code into action. If anyone could give me any idea, I will try my best to make this work properly.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.