Why is this Java code not working?

Click For Summary

Discussion Overview

The discussion revolves around a Java code snippet intended to simulate motion, which the original poster claims is not functioning correctly. Participants explore potential issues related to code execution, syntax, and logic, with a focus on understanding the underlying physics and programming concepts.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • Some participants request clarification on what "not working" means, suggesting that it could refer to various issues such as errors, freezes, or syntax problems.
  • One participant suggests using Processing to run the code with modifications, indicating that the structure of the code may need to change for it to execute properly.
  • Another participant questions the logic in the code, specifically regarding the calculation of velocity and the reuse of the position variable "x," implying that this may lead to incorrect results.
  • A participant provides a working version of the code in Processing, demonstrating how it can be executed and formatted, but does not clarify whether the original code's logic is sound.

Areas of Agreement / Disagreement

Participants express differing views on the nature of the problem, with some focusing on execution issues while others emphasize logical flaws in the code. No consensus is reached regarding the specific cause of the original code's failure.

Contextual Notes

Participants note potential limitations in the original code's logic, particularly regarding the calculation of velocity and position, but do not resolve these issues definitively.

hagopbul
Messages
397
Reaction score
45
Hello all:
I am reading a comutacomputa physics book and trying a code from it in MATLAB it is not working and due to my lack of knowledge in this field I can't see where is the mistake hope you can take a look

Java:
import java.lang .*;

public class Motion {

  static final int n = 100000, j = 500;

  public static void main(String argv[]) {
    double x[] = new double[n+1];
    double v[] = new double[n+1];

    double dt = 2*Math.PI/n;
    x[0] = 0;
    v[0] = 1;

    for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }

    double t=0 ;
    double jdt = j*dt;
 
    for (int i=0; i<=n; i+=j) {
        System.out.println(t +""+x [ i ]+""+ v[ i ]);
        t += jdt;
    }
  }
}

<mentor: add code tags>
 
Last edited by a moderator:
Technology news on Phys.org
I added code tags which help readability.

Please define "not working". This could mean:
it throws an error, freezes, reboots your computer, stack dumps, or has syntax problems (looks like that to start with)

This is no different than taking your car to a repair shop. If you say 'the car does not work' you will get 20 questions, I'm trying gently to push you toward learning how to specify problems like this one.
 
  • Like
Likes   Reactions: hagopbul and Wrichik Basu
Another idea is to install the Processing app and run the code directly inside with a few mods to the source.

Remove the class line, replace the main line with
void setup() and remove the extraneous braces.

So you can run your code in the setup method.

What is wrong with your code exactly?
 
Last edited:
This part looks wrong... Are you trying to calculate the new velocity from current velocity and acceleration? If so, why did you re-use the position variable "x"?

Java:
for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }
 
Here's my java code that runs in Processing:

Java:
int n = 100000;
int j = 500;

void setup()
{
    double x[] = new double[n+1];
    double v[] = new double[n+1];

    double dt = 2*Math.PI/n;
    x[0] = 0;
    v[0] = 1;

    for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }

    double t=0 ;
    double jdt = j*dt;

    for (int i=0; i<=n; i+=j) {
        System.out.printf("\ni = [%06d] t = %8.3f  x[i] = %8.3f  v[i] = %8.3f",i,t,x[i],v[i]);
        t += jdt;
    }
}

and here's the formatted output I get:

Code:
i = [000000] t =    0.000  x[i] =    0.000  v[i] =    1.000
i = [000500] t =    0.031  x[i] =    0.031  v[i] =    1.000
i = [001000] t =    0.063  x[i] =    0.063  v[i] =    0.998
i = [001500] t =    0.094  x[i] =    0.094  v[i] =    0.996
i = [002000] t =    0.126  x[i] =    0.125  v[i] =    0.992
i = [002500] t =    0.157  x[i] =    0.156  v[i] =    0.988
i = [003000] t =    0.188  x[i] =    0.187  v[i] =    0.982
i = [003500] t =    0.220  x[i] =    0.218  v[i] =    0.976
i = [004000] t =    0.251  x[i] =    0.249  v[i] =    0.969
i = [004500] t =    0.283  x[i] =    0.279  v[i] =    0.960
i = [005000] t =    0.314  x[i] =    0.309  v[i] =    0.951
i = [005500] t =    0.346  x[i] =    0.339  v[i] =    0.941
i = [006000] t =    0.377  x[i] =    0.368  v[i] =    0.930
i = [006500] t =    0.408  x[i] =    0.397  v[i] =    0.918
i = [007000] t =    0.440  x[i] =    0.426  v[i] =    0.905
i = [007500] t =    0.471  x[i] =    0.454  v[i] =    0.891
i = [008000] t =    0.503  x[i] =    0.482  v[i] =    0.876
i = [008500] t =    0.534  x[i] =    0.509  v[i] =    0.861
i = [009000] t =    0.565  x[i] =    0.536  v[i] =    0.844
i = [009500] t =    0.597  x[i] =    0.562  v[i] =    0.827
i = [010000] t =    0.628  x[i] =    0.588  v[i] =    0.809
i = [010500] t =    0.660  x[i] =    0.613  v[i] =    0.790
i = [011000] t =    0.691  x[i] =    0.637  v[i] =    0.771
i = [011500] t =    0.723  x[i] =    0.661  v[i] =    0.750
i = [012000] t =    0.754  x[i] =    0.685  v[i] =    0.729
i = [012500] t =    0.785  x[i] =    0.707  v[i] =    0.707
i = [013000] t =    0.817  x[i] =    0.729  v[i] =    0.685
i = [013500] t =    0.848  x[i] =    0.750  v[i] =    0.661
i = [014000] t =    0.880  x[i] =    0.771  v[i] =    0.637
i = [014500] t =    0.911  x[i] =    0.790  v[i] =    0.613
i = [015000] t =    0.942  x[i] =    0.809  v[i] =    0.588
i = [015500] t =    0.974  x[i] =    0.827  v[i] =    0.562
i = [016000] t =    1.005  x[i] =    0.844  v[i] =    0.536
i = [016500] t =    1.037  x[i] =    0.861  v[i] =    0.509
i = [017000] t =    1.068  x[i] =    0.876  v[i] =    0.482
i = [017500] t =    1.100  x[i] =    0.891  v[i] =    0.454
i = [018000] t =    1.131  x[i] =    0.905  v[i] =    0.426
i = [018500] t =    1.162  x[i] =    0.918  v[i] =    0.397
i = [019000] t =    1.194  x[i] =    0.930  v[i] =    0.368
i = [019500] t =    1.225  x[i] =    0.941  v[i] =    0.339
i = [020000] t =    1.257  x[i] =    0.951  v[i] =    0.309
i = [020500] t =    1.288  x[i] =    0.960  v[i] =    0.279
i = [021000] t =    1.319  x[i] =    0.969  v[i] =    0.249
i = [021500] t =    1.351  x[i] =    0.976  v[i] =    0.218
i = [022000] t =    1.382  x[i] =    0.982  v[i] =    0.187
i = [022500] t =    1.414  x[i] =    0.988  v[i] =    0.156
i = [023000] t =    1.445  x[i] =    0.992  v[i] =    0.125
i = [023500] t =    1.477  x[i] =    0.996  v[i] =    0.094
i = [024000] t =    1.508  x[i] =    0.998  v[i] =    0.063
i = [024500] t =    1.539  x[i] =    1.000  v[i] =    0.031
i = [025000] t =    1.571  x[i] =    1.000  v[i] =    0.000
i = [025500] t =    1.602  x[i] =    1.000  v[i] =   -0.031
i = [026000] t =    1.634  x[i] =    0.998  v[i] =   -0.063
i = [026500] t =    1.665  x[i] =    0.996  v[i] =   -0.094
i = [027000] t =    1.696  x[i] =    0.992  v[i] =   -0.125
i = [027500] t =    1.728  x[i] =    0.988  v[i] =   -0.156
i = [028000] t =    1.759  x[i] =    0.982  v[i] =   -0.187
i = [028500] t =    1.791  x[i] =    0.976  v[i] =   -0.218
i = [029000] t =    1.822  x[i] =    0.969  v[i] =   -0.249
i = [029500] t =    1.854  x[i] =    0.960  v[i] =   -0.279
i = [030000] t =    1.885  x[i] =    0.951  v[i] =   -0.309
i = [030500] t =    1.916  x[i] =    0.941  v[i] =   -0.339
i = [031000] t =    1.948  x[i] =    0.930  v[i] =   -0.368
i = [031500] t =    1.979  x[i] =    0.918  v[i] =   -0.397
i = [032000] t =    2.011  x[i] =    0.905  v[i] =   -0.426
i = [032500] t =    2.042  x[i] =    0.891  v[i] =   -0.454
i = [033000] t =    2.073  x[i] =    0.876  v[i] =   -0.482
i = [033500] t =    2.105  x[i] =    0.861  v[i] =   -0.509
i = [034000] t =    2.136  x[i] =    0.844  v[i] =   -0.536
i = [034500] t =    2.168  x[i] =    0.827  v[i] =   -0.562
i = [035000] t =    2.199  x[i] =    0.809  v[i] =   -0.588
i = [035500] t =    2.231  x[i] =    0.790  v[i] =   -0.613
i = [036000] t =    2.262  x[i] =    0.771  v[i] =   -0.637
i = [036500] t =    2.293  x[i] =    0.750  v[i] =   -0.661
i = [037000] t =    2.325  x[i] =    0.729  v[i] =   -0.685
i = [037500] t =    2.356  x[i] =    0.707  v[i] =   -0.707
i = [038000] t =    2.388  x[i] =    0.685  v[i] =   -0.729
i = [038500] t =    2.419  x[i] =    0.661  v[i] =   -0.750
i = [039000] t =    2.450  x[i] =    0.637  v[i] =   -0.771
i = [039500] t =    2.482  x[i] =    0.613  v[i] =   -0.790
i = [040000] t =    2.513  x[i] =    0.588  v[i] =   -0.809
i = [040500] t =    2.545  x[i] =    0.562  v[i] =   -0.827
i = [041000] t =    2.576  x[i] =    0.536  v[i] =   -0.844
i = [041500] t =    2.608  x[i] =    0.509  v[i] =   -0.861
i = [042000] t =    2.639  x[i] =    0.482  v[i] =   -0.876
i = [042500] t =    2.670  x[i] =    0.454  v[i] =   -0.891
i = [043000] t =    2.702  x[i] =    0.426  v[i] =   -0.905
i = [043500] t =    2.733  x[i] =    0.397  v[i] =   -0.918
i = [044000] t =    2.765  x[i] =    0.368  v[i] =   -0.930
i = [044500] t =    2.796  x[i] =    0.339  v[i] =   -0.941
i = [045000] t =    2.827  x[i] =    0.309  v[i] =   -0.951
i = [045500] t =    2.859  x[i] =    0.279  v[i] =   -0.960
i = [046000] t =    2.890  x[i] =    0.249  v[i] =   -0.969
i = [046500] t =    2.922  x[i] =    0.218  v[i] =   -0.976
i = [047000] t =    2.953  x[i] =    0.187  v[i] =   -0.982
i = [047500] t =    2.985  x[i] =    0.156  v[i] =   -0.988
i = [048000] t =    3.016  x[i] =    0.125  v[i] =   -0.992
i = [048500] t =    3.047  x[i] =    0.094  v[i] =   -0.996
i = [049000] t =    3.079  x[i] =    0.063  v[i] =   -0.998
i = [049500] t =    3.110  x[i] =    0.031  v[i] =   -1.000
i = [050000] t =    3.142  x[i] =    0.000  v[i] =   -1.000
i = [050500] t =    3.173  x[i] =   -0.031  v[i] =   -1.000
i = [051000] t =    3.204  x[i] =   -0.063  v[i] =   -0.998
i = [051500] t =    3.236  x[i] =   -0.094  v[i] =   -0.996
i = [052000] t =    3.267  x[i] =   -0.125  v[i] =   -0.992
i = [052500] t =    3.299  x[i] =   -0.156  v[i] =   -0.988
i = [053000] t =    3.330  x[i] =   -0.187  v[i] =   -0.982
i = [053500] t =    3.362  x[i] =   -0.218  v[i] =   -0.976
i = [054000] t =    3.393  x[i] =   -0.249  v[i] =   -0.969
i = [054500] t =    3.424  x[i] =   -0.279  v[i] =   -0.960
i = [055000] t =    3.456  x[i] =   -0.309  v[i] =   -0.951
i = [055500] t =    3.487  x[i] =   -0.339  v[i] =   -0.941
i = [056000] t =    3.519  x[i] =   -0.368  v[i] =   -0.930
i = [056500] t =    3.550  x[i] =   -0.397  v[i] =   -0.918
i = [057000] t =    3.581  x[i] =   -0.426  v[i] =   -0.905
i = [057500] t =    3.613  x[i] =   -0.454  v[i] =   -0.891
i = [058000] t =    3.644  x[i] =   -0.482  v[i] =   -0.876
i = [058500] t =    3.676  x[i] =   -0.509  v[i] =   -0.861
i = [059000] t =    3.707  x[i] =   -0.536  v[i] =   -0.844
i = [059500] t =    3.738  x[i] =   -0.562  v[i] =   -0.827
i = [060000] t =    3.770  x[i] =   -0.588  v[i] =   -0.809
i = [060500] t =    3.801  x[i] =   -0.613  v[i] =   -0.790
i = [061000] t =    3.833  x[i] =   -0.638  v[i] =   -0.771
i = [061500] t =    3.864  x[i] =   -0.661  v[i] =   -0.750
i = [062000] t =    3.896  x[i] =   -0.685  v[i] =   -0.729
i = [062500] t =    3.927  x[i] =   -0.707  v[i] =   -0.707
i = [063000] t =    3.958  x[i] =   -0.729  v[i] =   -0.685
i = [063500] t =    3.990  x[i] =   -0.750  v[i] =   -0.661
i = [064000] t =    4.021  x[i] =   -0.771  v[i] =   -0.638
i = [064500] t =    4.053  x[i] =   -0.790  v[i] =   -0.613
i = [065000] t =    4.084  x[i] =   -0.809  v[i] =   -0.588
i = [065500] t =    4.115  x[i] =   -0.827  v[i] =   -0.562
i = [066000] t =    4.147  x[i] =   -0.844  v[i] =   -0.536
i = [066500] t =    4.178  x[i] =   -0.861  v[i] =   -0.509
i = [067000] t =    4.210  x[i] =   -0.876  v[i] =   -0.482
i = [067500] t =    4.241  x[i] =   -0.891  v[i] =   -0.454
i = [068000] t =    4.273  x[i] =   -0.905  v[i] =   -0.426
i = [068500] t =    4.304  x[i] =   -0.918  v[i] =   -0.397
i = [069000] t =    4.335  x[i] =   -0.930  v[i] =   -0.368
i = [069500] t =    4.367  x[i] =   -0.941  v[i] =   -0.339
i = [070000] t =    4.398  x[i] =   -0.951  v[i] =   -0.309
i = [070500] t =    4.430  x[i] =   -0.960  v[i] =   -0.279
i = [071000] t =    4.461  x[i] =   -0.969  v[i] =   -0.249
i = [071500] t =    4.492  x[i] =   -0.976  v[i] =   -0.218
i = [072000] t =    4.524  x[i] =   -0.982  v[i] =   -0.187
i = [072500] t =    4.555  x[i] =   -0.988  v[i] =   -0.156
i = [073000] t =    4.587  x[i] =   -0.992  v[i] =   -0.125
i = [073500] t =    4.618  x[i] =   -0.996  v[i] =   -0.094
i = [074000] t =    4.650  x[i] =   -0.998  v[i] =   -0.063
i = [074500] t =    4.681  x[i] =   -1.000  v[i] =   -0.031
i = [075000] t =    4.712  x[i] =   -1.000  v[i] =   -0.000
i = [075500] t =    4.744  x[i] =   -1.000  v[i] =    0.031
i = [076000] t =    4.775  x[i] =   -0.998  v[i] =    0.063
i = [076500] t =    4.807  x[i] =   -0.996  v[i] =    0.094
i = [077000] t =    4.838  x[i] =   -0.992  v[i] =    0.125
i = [077500] t =    4.869  x[i] =   -0.988  v[i] =    0.156
i = [078000] t =    4.901  x[i] =   -0.982  v[i] =    0.187
i = [078500] t =    4.932  x[i] =   -0.976  v[i] =    0.218
i = [079000] t =    4.964  x[i] =   -0.969  v[i] =    0.249
i = [079500] t =    4.995  x[i] =   -0.960  v[i] =    0.279
i = [080000] t =    5.027  x[i] =   -0.951  v[i] =    0.309
i = [080500] t =    5.058  x[i] =   -0.941  v[i] =    0.339
i = [081000] t =    5.089  x[i] =   -0.930  v[i] =    0.368
i = [081500] t =    5.121  x[i] =   -0.918  v[i] =    0.397
i = [082000] t =    5.152  x[i] =   -0.905  v[i] =    0.426
i = [082500] t =    5.184  x[i] =   -0.891  v[i] =    0.454
i = [083000] t =    5.215  x[i] =   -0.876  v[i] =    0.482
i = [083500] t =    5.246  x[i] =   -0.861  v[i] =    0.509
i = [084000] t =    5.278  x[i] =   -0.844  v[i] =    0.536
i = [084500] t =    5.309  x[i] =   -0.827  v[i] =    0.562
i = [085000] t =    5.341  x[i] =   -0.809  v[i] =    0.588
i = [085500] t =    5.372  x[i] =   -0.790  v[i] =    0.613
i = [086000] t =    5.404  x[i] =   -0.771  v[i] =    0.638
i = [086500] t =    5.435  x[i] =   -0.750  v[i] =    0.661
i = [087000] t =    5.466  x[i] =   -0.729  v[i] =    0.685
i = [087500] t =    5.498  x[i] =   -0.707  v[i] =    0.707
i = [088000] t =    5.529  x[i] =   -0.685  v[i] =    0.729
i = [088500] t =    5.561  x[i] =   -0.661  v[i] =    0.750
i = [089000] t =    5.592  x[i] =   -0.638  v[i] =    0.771
i = [089500] t =    5.623  x[i] =   -0.613  v[i] =    0.790
i = [090000] t =    5.655  x[i] =   -0.588  v[i] =    0.809
i = [090500] t =    5.686  x[i] =   -0.562  v[i] =    0.827
i = [091000] t =    5.718  x[i] =   -0.536  v[i] =    0.844
i = [091500] t =    5.749  x[i] =   -0.509  v[i] =    0.861
i = [092000] t =    5.781  x[i] =   -0.482  v[i] =    0.876
i = [092500] t =    5.812  x[i] =   -0.454  v[i] =    0.891
i = [093000] t =    5.843  x[i] =   -0.426  v[i] =    0.905
i = [093500] t =    5.875  x[i] =   -0.397  v[i] =    0.918
i = [094000] t =    5.906  x[i] =   -0.368  v[i] =    0.930
i = [094500] t =    5.938  x[i] =   -0.339  v[i] =    0.941
i = [095000] t =    5.969  x[i] =   -0.309  v[i] =    0.951
i = [095500] t =    6.000  x[i] =   -0.279  v[i] =    0.960
i = [096000] t =    6.032  x[i] =   -0.249  v[i] =    0.969
i = [096500] t =    6.063  x[i] =   -0.218  v[i] =    0.976
i = [097000] t =    6.095  x[i] =   -0.187  v[i] =    0.982
i = [097500] t =    6.126  x[i] =   -0.156  v[i] =    0.988
i = [098000] t =    6.158  x[i] =   -0.125  v[i] =    0.992
i = [098500] t =    6.189  x[i] =   -0.094  v[i] =    0.996
i = [099000] t =    6.220  x[i] =   -0.063  v[i] =    0.998
i = [099500] t =    6.252  x[i] =   -0.031  v[i] =    1.000
i = [100000] t =    6.283  x[i] =   -0.000  v[i] =    1.000
 
If you want it in MATLAB, why not write it in MATLAB language (instead of Java)?
I didn't even know MATLAB could run Java.
And we're still not sure what "not working" means to you. Please elaborate.
 
  • Like
Likes   Reactions: Wrichik Basu
berkeman said:
This part looks wrong... Are you trying to calculate the new velocity from current velocity and acceleration? If so, why did you re-use the position variable "x"?

Java:
for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }
Harmonic oscillator :smile:
 
  • Like
Likes   Reactions: Wrichik Basu and berkeman

Similar threads

  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 8 ·
Replies
8
Views
2K
Replies
8
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
1
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K